{
if (entryFeatureToDiagnosticChainMap == null)
{
entryFeatureToDiagnosticChainMap = new HashMap<EStructuralFeature, DiagnosticChain>();
}
DiagnosticChain entryFeatureDiagnostic = entryFeatureToDiagnosticChainMap.get(entryFeature);
if (entryFeatureDiagnostic == null)
{
entryFeatureDiagnostic = createBadDataValueDiagnostic(eObject, (EAttribute)entryFeature, diagnostics, context);
entryFeatureToDiagnosticChainMap.put(entryFeature, entryFeatureDiagnostic);
}
rootValidator.validate(entryType, entryValue, entryFeatureDiagnostic, context);
}
}
}
}
}
else if (eAttribute.isMany())
{
for (Iterator<?> i = ((List<?>)value).iterator(); i.hasNext() && result; )
{
result &= rootValidator.validate(eDataType, i.next(), null, context);
}
if (!result && diagnostics != null)
{
DiagnosticChain diagnostic = createBadDataValueDiagnostic(eObject, eAttribute, diagnostics, context);
for (Iterator<?> i = ((List<?>)value).iterator(); i.hasNext(); )
{
rootValidator.validate(eDataType, i.next(), diagnostic, context);
}
}
}
else if (value != null)
{
result = rootValidator.validate(eDataType, value, null, context);
if (!result && diagnostics != null)
{
DiagnosticChain diagnostic = createBadDataValueDiagnostic(eObject, eAttribute, diagnostics, context);
rootValidator.validate(eDataType, value, diagnostic, context);
}
}
return result;