public bool validate(EClass eClass, EObject eObject, DiagnosticChain diagnostics, Dictionary <object, object> context) { Object eValidator = null; EClass eType = eClass; //while ((eValidator = eValidatorRegistry.get(eType.eContainer())) == null) while (!eValidatorRegistry.ContainsKey(eType.eContainer() as EPackage)) { eValidator = eValidatorRegistry[eType.eContainer() as EPackage]; List <EClass> eSuperTypes = eType.eSuperTypes; if (eSuperTypes.Count == 0) { //TODO return a defaultCase eValidator = null;// eValidatorRegistry.get(null); break; } else { eType = eSuperTypes.ElementAt(0); } } //bool circular = context.get(EObjectValidator.ROOT_OBJECT) == eObject; //TODO containskey check bool circular = context[EObjectValidator.ROOT_OBJECT] == eObject; bool result = doValidate((EValidator)eValidator, eClass, eObject, diagnostics, context); if ((result || diagnostics != null) && !circular) { result &= doValidateContents(eObject, diagnostics, context); } return(result); }
public virtual bool validate(EClass eClass, EObject eObject, DiagnosticChain diagnostics, Dictionary <object, object> context) { if (eObject.eIsProxy()) { if (context != null && context.ContainsKey(ROOT_OBJECT) && context[ROOT_OBJECT] != null) { if (diagnostics != null) { diagnostics.add (createDiagnostic (BasicDiagnostic.ERROR, DIAGNOSTIC_SOURCE, EOBJECT__EVERY_PROXY_RESOLVES, "_UI_UnresolvedProxy_diagnostic", new Object[] { getFeatureLabel(eObject.eContainmentFeature(), context), getObjectLabel(eObject.eContainer(), context), getObjectLabel(eObject, context) }, new Object[] { eObject.eContainer(), eObject.eContainmentFeature(), eObject }, context)); } return(false); } else { return(true); } } else if (eClass.eContainer() == getEPackage()) { return(validate(eClass.getClassifierID(), eObject, diagnostics, context)); } else { return(true); /* * return * new DynamicEClassValidator() * { * // Ensure that the class loader for this class will be used downstream. * // * }.validate(eClass, eObject, diagnostics, context); */ } }