org.eclipse.emf.validation.service
Class ModelValidationService

java.lang.Object
  extended by org.eclipse.emf.validation.service.ModelValidationService

public class ModelValidationService
extends Object

The Model Validation Service makes constraints and validators available to the client application. An application obtains validators from the service and requests validation whenever it is appropriate, according to the application's mapping of the EvaluationMode triggers.

The ModelValidationService delegates the retrieval of constraints to any number of IModelConstraintProvider implementations registered by other plug-ins via the org.eclipse.emf.validation.constraintProvider extension point.

The validation service uses the meta-data associated with registered providers to determine which ones can provide constraints for a specific EMF object according to the meta-model URI namespace and the evaluation context. This allows the service to delay instantiating providers (and, hence, loading plug-ins) until it is absolutely necessary to do so.

See Also:
newValidator(EvaluationMode), IValidator, IModelConstraint

Method Summary
 void addValidationListener(IValidationListener listener)
          Adds a new listener to receive validation events.
 void broadcastValidationEvent(ValidationEvent event)
          Broadcasts the specified event to all listeners.
 void configureListeners(IConfigurationElement[] elements)
          Deprecated. 1.2 This method is no longer implemented.
 void configureProviders(IConfigurationElement[] elements)
          Deprecated. 1.2 This method is no longer implemented.
static EClass findClass(String namespaceUri, String className)
          Finds the EClass having the specified name within the namespace indicated by the URI.
static ModelValidationService getInstance()
          Obtains the instance of this class.
 void loadXmlConstraintDeclarations()
           Loads all available XML-declared constraint descriptors.
<T,V extends IValidator<T>>
V
newValidator(EvaluationMode<T> mode)
           Creates a new validator object that the client can use to validate EMF objects, notifications, or features, according to the value of the specified evaluation mode.
 void removeValidationListener(IValidationListener listener)
          Removes a listener from the service.
 void replaceInCache(IModelConstraint oldConstraint, IModelConstraint newConstraint)
          Replaces a constraint in the cache with an alternative implementation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstance

public static ModelValidationService getInstance()
Obtains the instance of this class.

Returns:
the Singleton instance

newValidator

public <T,V extends IValidator<T>> V newValidator(EvaluationMode<T> mode)

Creates a new validator object that the client can use to validate EMF objects, notifications, or features, according to the value of the specified evaluation mode.

The resulting validator may be retained as long as it is needed, and reused any number of times. Each validator has its own separate state.

Type Parameters:
T - the kind of validator to return
Parameters:
mode - the evaluation mode for which to create a new validator. Must not be null or EvaluationMode.NULL
Returns:
a new validator
Throws:
IllegalArgumentException - if the mode is not a valid evaluation mode

addValidationListener

public void addValidationListener(IValidationListener listener)
Adds a new listener to receive validation events. This method has no effect if the listener is already registered.

Parameters:
listener - a new validation listener

removeValidationListener

public void removeValidationListener(IValidationListener listener)
Removes a listener from the service. This method has no effect if the listener is not currently registered.

Parameters:
listener - a validation listener

broadcastValidationEvent

public void broadcastValidationEvent(ValidationEvent event)
Broadcasts the specified event to all listeners. This method is used internally by validators to send notifications when they perform validation, but may also be used by clients to simulate validation occurrences.

Parameters:
event - a validation event to broadcast

configureListeners

@Deprecated
public void configureListeners(IConfigurationElement[] elements)
Deprecated. 1.2 This method is no longer implemented.

Configures my listeners from the Eclipse configuration elements representing implementations of my extension point.

NOTE that this method should only be called by the EMF Model Validation Plug-in, not by any client code!

Parameters:
elements -

configureProviders

@Deprecated
public void configureProviders(IConfigurationElement[] elements)
Deprecated. 1.2 This method is no longer implemented.

Configures my providers from the Eclipse configuration elements representing implementations of my extension point.

NOTE that this method should only be called by the EMF Model Validation Plug-in, not by any client code!

Parameters:
elements -

replaceInCache

public void replaceInCache(IModelConstraint oldConstraint,
                           IModelConstraint newConstraint)
Replaces a constraint in the cache with an alternative implementation. This must only be invoked by constraint providers, and then only when the provider can ensure that the new constraint implementation's semantics are compatible with the old.

Parameters:
oldConstraint - the constraint to be replaced in the cache
newConstraint - the new constraint to replace it

loadXmlConstraintDeclarations

public void loadXmlConstraintDeclarations()

Loads all available XML-declared constraint descriptors. This is not a very heavy-weight operation, as it does not require the loading of any plug-ins or even the instantantiation of any constraints. It only loads the constraint descriptors that are statically declared in XML.

Subsequent invocations of this method have no effect.

NOTE that this method should only be called by the EMF Model Validation Plug-in, not by any client code!


findClass

public static EClass findClass(String namespaceUri,
                               String className)
Finds the EClass having the specified name within the namespace indicated by the URI. The class name may optionally be fully qualified (prefixed by its full package name) to support constraint providers that need to disambiguate like-named classes in different EPackages.

Parameters:
namespaceUri - the provider-specified namespace URI of the EPackage
className - the class name. May be a simple name within the package namespace indicated by namespaceUri or a fully-qualified class name
Returns:
the corresponding EMF class object, or null if it could not be found

Copyright 2002, 2007 IBM Corporation and others.
All Rights Reserved.