EMF Model Validation Model Traversal Strategies
Identifier:
org.eclipse.emf.validation.traversal
Since:
1.0
Description:
Extension point on which plug-ins can contribute customized logic for
traversal of EMF metamodels that they define, in batch validation.
Configuration Markup:
<!ELEMENT extension (
traversalStrategy+)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED
>
<!ELEMENT traversalStrategy (
eclass*)>
<!ATTLIST traversalStrategy
namespaceUri CDATA #REQUIRED
class CDATA #REQUIRED
>
Declares a traversal strategy that knows how to iterate sub-trees rooted at
elements of types in a specific EPackage.
Zero or more EClasses may be specified to indicate which specific element types
are to use the traversal strategy. If no EClasses are listed, then this
strategy constitutes the default for the package.
Multiple traversal strategies can be provided for the same EPackage, for
example to iterate different element types in different ways. In fact, at
at least two declarations are needed to define a default strategy for the
package and a select number of alternative implementations for specific
EClasses.
-
namespaceUri - The namespace URI of the EPackage for which the extension declares a traversal
strategy.
-
class - The fully-qualified name of a class implementing the ITraversalStrategy
interface.
<!ELEMENT eclass EMPTY>
<!ATTLIST eclass
name CDATA #REQUIRED
>
Indicates a specific EClass in the package identified by the extension's
namespace URI to which the traversal strategy applies. This EClass is
assumed to be one whose instances can serve as a root container, thus
defining a "kind of" model implemented by the metamodel. A metamodel may
require different traversal algorithms for resources rooted in different
metaclasses; the validation system finds the most appropriate traversal
strategy for an element according to its root container.
The inheritance of EClasses is taken into account. During validation, the
system finds the most specific strategy declaration available for any EClass
(defaulting to the package default strategy if needed).
As an example of metamodels that distinguish different kinds of models by the
root container type, the UML 2.0 metamodel defines Model and Profile
metaclasses (both specializations of Package) that can serve as root
containers.
-
name - The name of an EClass in the EPackage.
Examples:
This example shows an extension that declares a traversal strategy for the EXTLibrary
meta-model. It applies to traversals starting at Persons or Items (rather than at libraries),
perhaps because its purpose is to back-track to the nearest containing Library and start from there. When traversal starts from a Library, this extension indicates that the default
strategy (recursion over the containment tree) is sufficient.
<extension
point=
"org.eclipse.emf.validation.traversal"
>
<traversalStrategy
namespaceUri=
"https:///org/eclipse/emf/examples/library/extlibrary.ecore/1.0.0"
class=
"com.example.validation.traversal.EXTLibraryTraversalStrategy"
/>
<eclass name=
"Person"
/>
<eclass name=
"Item"
/>
</traversalStrategy>
</extension>
Copyright (c) 2005 IBM Corporation and others.
All rights reserved. This program and the accompanying materials
are made available under the terms of the Eclipse Public License v1.0
which accompanies this distribution, and is available at
https://www.eclipse.org/legal/epl-v10.html