## Package org.eclipse.emf.validation.service

The semi-public (internal-public) package defining the API for invocation of the validation engine and for the implementation of constraint providers.

See:
Description

Interface Summary
IBatchValidator: An `IValidator` that supports batch-mode validation of `EObject`s.
IConstraintDescriptor: A constraint descriptor provides information about a constraint's role and status in the system.
IConstraintFilter: Interface implemented by clients who wish to define a constraint filter on their validator.
IConstraintListener: Interface implemented by clients who wish to receive notification whenever constraints are changed.
IConstraintParser: Marker interface for extensions on the `org.eclipse.emf.validation.constraintParsers` extension point, defining an object that knows how to parse `IConstraintDescriptor`s to create the constraint implementations.
ILiveValidator: An `IValidator` that supports live-mode validation of `Notification`s.
IModelConstraintProvider: Interface implemented by objects that can provide `IModelConstraint`s to the system for validation of EMF objects.
INotificationGenerator: Interface implemented by clients who wish to define a notification generator.
IParameterizedConstraintDescriptor: A specialization of the `IConstraintDescriptor` interface that additionally supplies parameters as (name, value) pairs of strings.
IParameterizedConstraintParser: Interface implemented by an object that knows how to construct constraint implementations from `IParameterizedConstraintDescriptor`s.
ITraversalStrategy: A strategy for traversal of one or more model sub-trees in batch validation.
IValidationListener: Interface implemented by clients who wish to receive notification whenever validation operations are performed.
IValidator<T>: A validator validates model elements on behalf of the validation service's clients.

Class Summary
AbstractConstraintDescriptor: A partial implementation of the `IConstraintDescriptor` interface that is useful for subclassing.
AbstractConstraintProvider: For situations in which the `XmlConstraintProvider` class does not suffice (i.e., where a plug-in provides constraints dynamically, rather than statically registered in XML), this is a useful class to extend as it provides a partial implementation of the `IModelConstraintProvider` interface.
AbstractTraversalStrategy: An iterator-based partial implementation of the `ITraversalStrategy` interface.
ConstraintChangeEvent: Event notifying `IConstraintListener`s that a constraint has been changed.
ConstraintFactory: A constraint factory creates constraint implementations from descriptors.
ConstraintRegistry: A centralized registry of `descriptors` for the constraints that are available in the validation system.
EventTypeService: The Event Type Service is responsible for loading the `eventTypes` Eclipse extension point and creating `EMFEventType`s for the event types that have been contributed.
ITraversalStrategy.Flat: An implementation of the `ITraversalStrategy` interface that is non-recursive: it simply iterates the root elements.
ITraversalStrategy.Recursive: An implementation of the `ITraversalStrategy` interface that is recursive: it iterates over the content trees of the roots, according to the basic EMF `EObject.eAllContents()` tree-iterator.
IValidator.Option<V>: The definition of a validator option.
ModelValidationService: The Model Validation Service makes constraints and validators available to the client application.
ValidationEvent: Event notifying `IValidationListener`s that a validation operation has occurred.

Enum Summary
ConstraintChangeEventType: Enumeration for a constraint change event type.

Exception Summary
ConstraintExistsException: Constraint thrown to indicate that a constraint descriptor cannot be `registered` because a constraint is already registered under the same ID.

## Package org.eclipse.emf.validation.service Description

The semi-public (internal-public) package defining the API for invocation of the validation engine and for the implementation of constraint providers.

## Package Specification

This package defines the API for the client and provider sides of the "validation service." The main types involved are:

- `ModelValidationService`: a singleton that provides clients of the validation engine with access to validators implementing batch or live mode validation
- `IValidator`: the common interface of objects that perform the validation operation; its sub-interface define the contract for the batch and live modes of validation. The validators are the objects that clients of the validation service invoke to test their models
- `IModelConstraintProvider`: the interface implemented by any class that provides constraints to the system. Constraints defined in plug-in manifests are provided by the pre-defined `XmlConstraintProvider`. Dynamic constraint providers typically implement this interface by extending the `AbstractConstraintProvider` class.

Some supporting types provide additional functionality and/or controls on the validation engine:

- `IConstraintDescriptor`: provides the validation engine with various meta-data about a constraint, to help it decide:
  - when the constraint should be invoked (the "triggers"). This enables deferred loading of the plug-ins that define constraints (in the case of the XML constraint provider. It is also possible that a dynamic provider may reside in a different plug-in from the constraints that it makes available to the system; at least, the loading of constraint implementation classes can be deferred)
  - whether it is safe to invoke a constraint. Constraints that fail on run-time exceptions (so-called "errored" constraints) are removed from the validation engine for safety's sake; the descriptor retains the exception that caused the failure
  - severity of the constraints (error/warning/etc.) and other information such as name and description that are primarily for presentation in the UI
- `ConstraintRegistry`: keeps track of all constraint descriptors in the system, ensuring that they are unique. It is available to constraint providers and clients of the validation engine to look up constraint descriptors by the constraints' IDs, for "introspection" of the constraints in the system
- `ITraversalStrategy`: supports the special traversal algorithms required by some EMF meta-models where the default containment-tree iteration is not sufficient or optimal. Used by `IBatchValidator`s

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