public class EcoreEvaluationEnvironment extends AbstractEvaluationEnvironment<EClassifier,EOperation,EStructuralFeature,EClass,EObject> implements EvaluationEnvironment.Enumerations<EEnumLiteral>, EvaluationEnvironmentWithHiddenOpposites
EvaluationEnvironment
for evaluation of OCL
expressions on instances of Ecore models (i.e., on M0 models).EvaluationEnvironment.Enumerations<EL>
Constructor and Description |
---|
EcoreEvaluationEnvironment()
Deprecated.
A root evaluation environment should be created through the correspondent
EcoreEnvironmentFactory |
EcoreEvaluationEnvironment(EcoreEnvironmentFactory factory)
Initializes me.
|
EcoreEvaluationEnvironment(EvaluationEnvironment<EClassifier,EOperation,EStructuralFeature,EClass,EObject> parent)
Initializes me with my parent evaluation environment (nesting scope).
|
Modifier and Type | Method and Description |
---|---|
Object |
callOperation(EOperation operation,
int opcode,
Object source,
Object[] args)
Implements the inherited method by attempting to find an appropriate
Java method in the actual type of the source object and invoking
it.
|
Map<EClass,Set<EObject>> |
createExtentMap(Object object)
Creates an extent map for invocation of OclType.allInstances()
using the specified
object as a context from which to find
the scope in which OCL classifier extents are defined. |
Tuple<EOperation,EStructuralFeature> |
createTuple(EClassifier type,
Map<EStructuralFeature,Object> values)
Creates a new tuple instance.
|
EClassifier |
getType(Object object)
Queries the type of the specified object.
|
Enumerator |
getValue(EEnumLiteral enumerationLiteral)
Ecore implementation of the enumeration literal value.
|
boolean |
isKindOf(Object object,
EClassifier classifier)
Queries whether an object is an instance of the specified classifier or
some specialization thereof.
|
boolean |
isTypeOf(Object object,
EClassifier classifier)
Queries whether an object's type is the specified classifier.
|
Object |
navigateAssociationClass(EClassifier associationClass,
EStructuralFeature navigationSource,
Object target)
Obtains the instance of the specified association class that links the
specified source element, optionally via the specified property.
|
Object |
navigateOppositeProperty(EReference property,
Object target)
Obtains the value of the specified operation, for the given source element,
according to the particular metamodel semantics.
|
Object |
navigateProperty(EStructuralFeature property,
List<?> qualifiers,
Object target)
Obtains the value of the specified operation, for the given source element,
according to the particular metamodel semantics.
|
void |
setOperationReflectionCheckDisabled(boolean checkDisabled)
Configure the check that an incorrect usage of "Operation Reflection"
false in a genmodel has omitted the eInvoke override.
|
add, clear, clearOptions, getAdapter, getOptions, getValueOf, isEnabled, overrides, putOptions, remove, removeOption, removeOptions, replace, setOption, toString
public EcoreEvaluationEnvironment()
EcoreEnvironmentFactory
public EcoreEvaluationEnvironment(EcoreEnvironmentFactory factory)
public EcoreEvaluationEnvironment(EvaluationEnvironment<EClassifier,EOperation,EStructuralFeature,EClass,EObject> parent)
parent
- my parent (nesting scope); must not be null
public Object callOperation(EOperation operation, int opcode, Object source, Object[] args) throws IllegalArgumentException
AbstractEvaluationEnvironment
callOperation
in interface EvaluationEnvironment<EClassifier,EOperation,EStructuralFeature,EClass,EObject>
callOperation
in class AbstractEvaluationEnvironment<EClassifier,EOperation,EStructuralFeature,EClass,EObject>
operation
- the operation to invokeopcode
- the operation code, if this is an OCL Standard Library
operation (which this environment overrides)source
- the source element on which the operation is invokedargs
- the arguments, or an empty array if noneIllegalArgumentException
- if the operation is not supported
by this environmentpublic Object navigateProperty(EStructuralFeature property, List<?> qualifiers, Object target) throws IllegalArgumentException
EvaluationEnvironment
navigateProperty
in interface EvaluationEnvironment<EClassifier,EOperation,EStructuralFeature,EClass,EObject>
property
- the property to navigatequalifiers
- the association-end qualifier values, or an empty list
if nonetarget
- the source element owning the property valueIllegalArgumentException
- if the property is not supported by the
element or by this environmentpublic Object navigateAssociationClass(EClassifier associationClass, EStructuralFeature navigationSource, Object target) throws IllegalArgumentException
EvaluationEnvironment
navigateAssociationClass
in interface EvaluationEnvironment<EClassifier,EOperation,EStructuralFeature,EClass,EObject>
associationClass
- the association class to navigate tonavigationSource
- in case of ambiguity, the property of the
source element's classifier through which to navigate to the
association classtarget
- the source element from which to navigateIllegalArgumentException
- if the association class is not
associated with the source element, or is not supported by this
environmentpublic Tuple<EOperation,EStructuralFeature> createTuple(EClassifier type, Map<EStructuralFeature,Object> values)
EvaluationEnvironment
createTuple
in interface EvaluationEnvironment<EClassifier,EOperation,EStructuralFeature,EClass,EObject>
type
- the type (a TupleType
) of the tuple to be createdvalues
- a mapping of the tuple partspublic Map<EClass,Set<EObject>> createExtentMap(Object object)
EvaluationEnvironment
object
as a context from which to find
the scope in which OCL classifier extents are defined. This scope may
be a resource, resource set, or some metamodel-specific scope. Note that
in the case that the object
is not an
EObject
but is, instead, some primitive
type, then this may be difficult to determine.
Clients are encouraged to do what they can to optimize this mapping, by
lazy initialization of key-value pairs, workspace indices, or whatever
means is available. Note that the map will only ever be accessed by
key (Map.get(java.lang.Object)
); it will never be queried for
all entries, all keys, all values, etc. This knowledge could help
optimization.
createExtentMap
in interface EvaluationEnvironment<EClassifier,EOperation,EStructuralFeature,EClass,EObject>
object
- a context object in the scope that covers the OCL
classifier extentspublic boolean isKindOf(Object object, EClassifier classifier)
EvaluationEnvironment
isKindOf
in interface EvaluationEnvironment<EClassifier,EOperation,EStructuralFeature,EClass,EObject>
object
- an objectclassifier
- a classifiertrue
if the specified classifier is the object's
type or some supertype thereof; false
, otherwisepublic boolean isTypeOf(Object object, EClassifier classifier)
EvaluationEnvironment
isTypeOf
in interface EvaluationEnvironment<EClassifier,EOperation,EStructuralFeature,EClass,EObject>
object
- an objectclassifier
- a classifiertrue
if ths specified classifier is the object's
type; false
, otherwisepublic EClassifier getType(Object object)
EvaluationEnvironment
getType
in interface EvaluationEnvironment<EClassifier,EOperation,EStructuralFeature,EClass,EObject>
object
- an objectpublic Enumerator getValue(EEnumLiteral enumerationLiteral)
getValue
in interface EvaluationEnvironment.Enumerations<EEnumLiteral>
getValue
in interface Customizable
getValue
in class AbstractEvaluationEnvironment<EClassifier,EOperation,EStructuralFeature,EClass,EObject>
enumerationLiteral
- the option to querypublic void setOperationReflectionCheckDisabled(boolean checkDisabled)
The check is enabled by default.
checkDisabled
- true to disable the checkpublic Object navigateOppositeProperty(EReference property, Object target) throws IllegalArgumentException
EvaluationEnvironmentWithHiddenOpposites
navigateOppositeProperty
in interface EvaluationEnvironmentWithHiddenOpposites
property
- the property to navigate in reverse directiontarget
- the source element from where to start navigating / queryingIllegalArgumentException
- if the property is not supported by the
element or by this environmentCopyright © 2005, 2018 IBM Corporation and others. All Rights Reserved.