org.eclipse.ocl.examples.pivot.validation
Class PivotEObjectValidator

java.lang.Object
  extended by org.eclipse.emf.ecore.util.EObjectValidator
      extended by org.eclipse.ocl.examples.pivot.validation.PivotEObjectValidator
All Implemented Interfaces:
org.eclipse.emf.ecore.EValidator
Direct Known Subclasses:
BasicCompleteOCLEObjectValidator, CompleteOCLEObjectValidator

public class PivotEObjectValidator
extends org.eclipse.emf.ecore.util.EObjectValidator

A PivotEObjectValidator augments EValidator.Registry.INSTANCE validation by validation of additional Pivot-defined invariants. Since there is no per-ResourceSet EValidator.Registry it is necessary for the additional functionality for a particular EPackage to be provided by displacing the global entry into PivotEObjectValidator.eValidators and installing PivotEObjectValidator.INSTANCE in its stead. When validation occurs, the static INSTANCE first invokes the displaced functionality and then looks for a ValidationAdapter in the ResourceSet for the object to be validated. This ValidationAdapter is only available if the ResourceSet is for an application for which Pivot invariants were defined. Other applications see only a small overhead in their processing time.


Nested Class Summary
static class PivotEObjectValidator.ValidationAdapter
          A ValidationAdapter is installed in the ResourceSet of applications that register for additional PIvot-defined constraints.
 
Nested classes/interfaces inherited from class org.eclipse.emf.ecore.util.EObjectValidator
org.eclipse.emf.ecore.util.EObjectValidator.DynamicEClassValidator, org.eclipse.emf.ecore.util.EObjectValidator.DynamicEDataTypeValidator
 
Nested classes/interfaces inherited from interface org.eclipse.emf.ecore.EValidator
org.eclipse.emf.ecore.EValidator.Descriptor, org.eclipse.emf.ecore.EValidator.PatternMatcher, org.eclipse.emf.ecore.EValidator.Registry, org.eclipse.emf.ecore.EValidator.SubstitutionLabelProvider, org.eclipse.emf.ecore.EValidator.ValidationDelegate
 
Field Summary
 
Fields inherited from class org.eclipse.emf.ecore.util.EObjectValidator
DATA_VALUE__FRACTION_DIGITS_IN_RANGE, DATA_VALUE__LENGTH_IN_RANGE, DATA_VALUE__MATCHES_PATTERN, DATA_VALUE__TOTAL_DIGITS_IN_RANGE, DATA_VALUE__TYPE_CORRECT, DATA_VALUE__VALUE_IN_ENUMERATION, DATA_VALUE__VALUE_IN_RANGE, DIAGNOSTIC_SOURCE, EOBJECT__EVERY_BIDIRECTIONAL_REFERENCE_IS_PAIRED, EOBJECT__EVERY_DATA_VALUE_CONFORMS, EOBJECT__EVERY_KEY_UNIQUE, EOBJECT__EVERY_MAP_ENTRY_UNIQUE, EOBJECT__EVERY_MULTIPCITY_CONFORMS, EOBJECT__EVERY_PROXY_RESOLVES, EOBJECT__EVERY_REFERENCE_IS_CONTAINED, EOBJECT__NO_CIRCULAR_CONTAINMENT, EOBJECT__UNIQUE_ID, ROOT_OBJECT
 
Fields inherited from interface org.eclipse.emf.ecore.EValidator
MARKER, RELATED_URIS_ATTRIBUTE, URI_ATTRIBUTE
 
Constructor Summary
PivotEObjectValidator()
           
 
Method Summary
static org.eclipse.emf.ecore.resource.ResourceSet getResourceSet(org.eclipse.emf.ecore.EClassifier eClassifier, java.lang.Object object, org.eclipse.emf.common.util.DiagnosticChain diagnostics)
          Return the user's ResourceSet, preferably as a data element of the diagnostics, corresponding to the original validation context, else from the object else from the eClassifier.
static void install(org.eclipse.emf.ecore.EPackage ePackage)
          Install Pivot-defined validation support for ePackage.
static PivotEObjectValidator.ValidationAdapter install(org.eclipse.emf.ecore.resource.ResourceSet resourceSet, MetaModelManager metaModelManager)
          Install Complete OCL validation support in resourceSet for metaModelManager.
 boolean validate(org.eclipse.emf.ecore.EClass eClass, org.eclipse.emf.ecore.EObject eObject, org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)
          Overriden to intercept the validation of an EObject to add the additional Pivot-defined validation.
 boolean validate(org.eclipse.emf.ecore.EDataType eDataType, java.lang.Object value, org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)
          Overriden to intercept the validation of an EDataType value to add the additional Pivot-defined validation.
protected  boolean validatePivot(org.eclipse.emf.ecore.EClassifier eClassifier, java.lang.Object object, org.eclipse.emf.common.util.DiagnosticChain diagnostics, java.util.Map<java.lang.Object,java.lang.Object> context)
          Perform the additional Pivot-defined validation.
 
Methods inherited from class org.eclipse.emf.ecore.util.EObjectValidator
createBadDataValueDiagnostic, createDiagnostic, getEcoreResourceLocator, getEcoreString, getEPackage, getFeatureLabel, getObjectLabel, getResourceLocator, getRootEValidator, getString, getValidationDelegateRegistry, getValueLabel, isEcoreString, reportConstraintDelegateException, reportConstraintDelegateException, reportConstraintDelegateNotFound, reportConstraintDelegateNotFound, reportConstraintDelegateViolation, reportConstraintDelegateViolation, reportDataValuePatternViolation, reportDataValueTypeViolation, reportEnumerationViolation, reportFractionDigitsViolation, reportInvariantDelegateException, reportInvariantDelegateNotFound, reportInvariantDelegateViolation, reportMaxLengthViolation, reportMaxViolation, reportMinLengthViolation, reportMinViolation, reportTotalDigitsViolation, validate_BidirectionalReferenceIsPaired, validate_DataValueConforms, validate_EveryBidirectionalReferenceIsPaired, validate_EveryDataValueConforms, validate_EveryDefaultConstraint, validate_EveryKeyUnique, validate_EveryMapEntryUnique, validate_EveryMultiplicityConforms, validate_EveryProxyResolves, validate_EveryReferenceIsContained, validate_KeyUnique, validate_MapEntryUnique, validate_MultiplicityConforms, validate_NoCircularContainment, validate_UniqueID, validate, validate, validate, validate, validate, validatePattern, wrapEnumerationValues
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PivotEObjectValidator

public PivotEObjectValidator()
Method Detail

install

@NonNull
public static PivotEObjectValidator.ValidationAdapter install(@NonNull
                                                                      org.eclipse.emf.ecore.resource.ResourceSet resourceSet,
                                                                      @NonNull
                                                                      MetaModelManager metaModelManager)
Install Complete OCL validation support in resourceSet for metaModelManager.


install

public static void install(@NonNull
                           org.eclipse.emf.ecore.EPackage ePackage)
Install Pivot-defined validation support for ePackage.


getResourceSet

public static org.eclipse.emf.ecore.resource.ResourceSet getResourceSet(@NonNull
                                                                        org.eclipse.emf.ecore.EClassifier eClassifier,
                                                                        @NonNull
                                                                        java.lang.Object object,
                                                                        @Nullable
                                                                        org.eclipse.emf.common.util.DiagnosticChain diagnostics)
Return the user's ResourceSet, preferably as a data element of the diagnostics, corresponding to the original validation context, else from the object else from the eClassifier.


validate

public boolean validate(org.eclipse.emf.ecore.EClass eClass,
                        org.eclipse.emf.ecore.EObject eObject,
                        org.eclipse.emf.common.util.DiagnosticChain diagnostics,
                        java.util.Map<java.lang.Object,java.lang.Object> context)
Overriden to intercept the validation of an EObject to add the additional Pivot-defined validation.

Specified by:
validate in interface org.eclipse.emf.ecore.EValidator
Overrides:
validate in class org.eclipse.emf.ecore.util.EObjectValidator

validate

public boolean validate(org.eclipse.emf.ecore.EDataType eDataType,
                        java.lang.Object value,
                        org.eclipse.emf.common.util.DiagnosticChain diagnostics,
                        java.util.Map<java.lang.Object,java.lang.Object> context)
Overriden to intercept the validation of an EDataType value to add the additional Pivot-defined validation.

Specified by:
validate in interface org.eclipse.emf.ecore.EValidator
Overrides:
validate in class org.eclipse.emf.ecore.util.EObjectValidator

validatePivot

protected boolean validatePivot(@NonNull
                                org.eclipse.emf.ecore.EClassifier eClassifier,
                                @NonNull
                                java.lang.Object object,
                                @Nullable
                                org.eclipse.emf.common.util.DiagnosticChain diagnostics,
                                java.util.Map<java.lang.Object,java.lang.Object> context)
Perform the additional Pivot-defined validation.