|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.eclipse.ocl.AbstractEvaluationEnvironment<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
org.eclipse.ocl.ecore.EcoreEvaluationEnvironment
public class EcoreEvaluationEnvironment
Implementation of the EvaluationEnvironment
for evaluation of OCL
expressions on instances of Ecore models (i.e., on M0 models).
Nested Class Summary |
---|
Nested classes/interfaces inherited from class org.eclipse.ocl.AbstractEvaluationEnvironment |
---|
AbstractEvaluationEnvironment.AbstractTuple<O,P> |
Nested classes/interfaces inherited from interface org.eclipse.ocl.EvaluationEnvironment |
---|
EvaluationEnvironment.Enumerations<EL> |
Constructor Summary | |
---|---|
EcoreEvaluationEnvironment()
Deprecated. A root evaluation environment should be created through the correspondent EcoreEnvironmentFactory |
|
EcoreEvaluationEnvironment(EcoreEnvironmentFactory factory)
Initializes me. |
|
EcoreEvaluationEnvironment(EvaluationEnvironment<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject> parent)
Initializes me with my parent evaluation environment (nesting scope). |
Method Summary | |
---|---|
java.lang.Object |
callOperation(org.eclipse.emf.ecore.EOperation operation,
int opcode,
java.lang.Object source,
java.lang.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. |
protected java.lang.Exception |
checkOperationReflectionConsistency(java.lang.Object source)
Check if the provided source object has support for a delegated invocation of an OCL expression body. |
protected java.lang.Object |
coerceValue(org.eclipse.emf.ecore.ETypedElement element,
java.lang.Object value,
boolean copy)
Coerces the value of the specified typed element into the appropriate representation, derived from the supplied value template. |
java.util.Map<org.eclipse.emf.ecore.EClass,java.util.Set<org.eclipse.emf.ecore.EObject>> |
createExtentMap(java.lang.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<org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature> |
createTuple(org.eclipse.emf.ecore.EClassifier type,
java.util.Map<org.eclipse.emf.ecore.EStructuralFeature,java.lang.Object> values)
Creates a new tuple instance. |
protected static CollectionKind |
getCollectionKind(org.eclipse.emf.ecore.ETypedElement element)
Obtains the collection kind appropriate for representing the values of the specified typed element. |
protected java.lang.Object |
getInvalidResult()
Obtains the language-binding-specific representation of the predefined OclInvalid object. |
protected java.lang.reflect.Method |
getJavaMethodFor(org.eclipse.emf.ecore.EOperation operation,
java.lang.Object receiver)
Returns the java method that corresponds to the supplied EOperation |
org.eclipse.emf.ecore.EClassifier |
getType(java.lang.Object object)
Queries the type of the specified object. |
org.eclipse.emf.common.util.Enumerator |
getValue(org.eclipse.emf.ecore.EEnumLiteral enumerationLiteral)
Ecore implementation of the enumeration literal value. |
boolean |
isKindOf(java.lang.Object object,
org.eclipse.emf.ecore.EClassifier classifier)
Queries whether an object is an instance of the specified classifier or some specialization thereof. |
boolean |
isTypeOf(java.lang.Object object,
org.eclipse.emf.ecore.EClassifier classifier)
Queries whether an object's type is the specified classifier. |
java.lang.Object |
navigateAssociationClass(org.eclipse.emf.ecore.EClassifier associationClass,
org.eclipse.emf.ecore.EStructuralFeature navigationSource,
java.lang.Object target)
Obtains the instance of the specified association class that links the specified source element, optionally via the specified property. |
java.lang.Object |
navigateOppositeProperty(org.eclipse.emf.ecore.EReference property,
java.lang.Object target)
Obtains the value of the specified operation, for the given source element, according to the particular metamodel semantics. |
java.lang.Object |
navigateProperty(org.eclipse.emf.ecore.EStructuralFeature property,
java.util.List<?> qualifiers,
java.lang.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. |
Methods inherited from class org.eclipse.ocl.AbstractEvaluationEnvironment |
---|
add, basicGetOptions, clear, clearOptions, getAdapter, getOptions, getParent, getValue, getValueOf, isEnabled, overrides, putOptions, remove, removeOption, removeOptions, replace, setOption, toString |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public EcoreEvaluationEnvironment()
EcoreEnvironmentFactory
public EcoreEvaluationEnvironment(EcoreEnvironmentFactory factory)
public EcoreEvaluationEnvironment(EvaluationEnvironment<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject> parent)
parent
- my parent (nesting scope); must not be null
Method Detail |
---|
public java.lang.Object callOperation(org.eclipse.emf.ecore.EOperation operation, int opcode, java.lang.Object source, java.lang.Object[] args) throws java.lang.IllegalArgumentException
AbstractEvaluationEnvironment
callOperation
in interface EvaluationEnvironment<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
callOperation
in class AbstractEvaluationEnvironment<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.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 none
java.lang.IllegalArgumentException
- if the operation is not supported
by this environmentprotected java.lang.reflect.Method getJavaMethodFor(org.eclipse.emf.ecore.EOperation operation, java.lang.Object receiver)
AbstractEvaluationEnvironment
EOperation
getJavaMethodFor
in class AbstractEvaluationEnvironment<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
operation
- the operation
protected java.lang.Object getInvalidResult()
AbstractEvaluationEnvironment
getInvalidResult
in class AbstractEvaluationEnvironment<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
public java.lang.Object navigateProperty(org.eclipse.emf.ecore.EStructuralFeature property, java.util.List<?> qualifiers, java.lang.Object target) throws java.lang.IllegalArgumentException
EvaluationEnvironment
navigateProperty
in interface EvaluationEnvironment<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
property
- the property to navigatequalifiers
- the association-end qualifier values, or an empty list
if nonetarget
- the source element owning the property value
java.lang.IllegalArgumentException
- if the property is not supported by the
element or by this environmentprotected static CollectionKind getCollectionKind(org.eclipse.emf.ecore.ETypedElement element)
element
- a typed element (property, operation, etc.)
null
if it is not
manyprotected java.lang.Object coerceValue(org.eclipse.emf.ecore.ETypedElement element, java.lang.Object value, boolean copy)
value
template.
The value
is coerced to the appropriate collection kind for
this element (or scalar if not multi-valued). The original value may
either be used as is where possible or, optionally, copied into the new
collection (if multi-valued).
element
- a typed element (property, operation, etc.)value
- the computed value of the elementcopy
- whether to copy the specified value into the resulting
collection/scalar value
getCollectionKind(ETypedElement)
public java.lang.Object navigateAssociationClass(org.eclipse.emf.ecore.EClassifier associationClass, org.eclipse.emf.ecore.EStructuralFeature navigationSource, java.lang.Object target) throws java.lang.IllegalArgumentException
EvaluationEnvironment
navigateAssociationClass
in interface EvaluationEnvironment<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.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 navigate
java.lang.IllegalArgumentException
- if the association class is not
associated with the source element, or is not supported by this
environmentpublic Tuple<org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature> createTuple(org.eclipse.emf.ecore.EClassifier type, java.util.Map<org.eclipse.emf.ecore.EStructuralFeature,java.lang.Object> values)
EvaluationEnvironment
createTuple
in interface EvaluationEnvironment<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
type
- the type (a TupleType
) of the tuple to be createdvalues
- a mapping of the tuple parts
public java.util.Map<org.eclipse.emf.ecore.EClass,java.util.Set<org.eclipse.emf.ecore.EObject>> createExtentMap(java.lang.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<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
object
- a context object in the scope that covers the OCL
classifier extents
public boolean isKindOf(java.lang.Object object, org.eclipse.emf.ecore.EClassifier classifier)
EvaluationEnvironment
isKindOf
in interface EvaluationEnvironment<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
object
- an objectclassifier
- a classifier
true
if the specified classifier is the object's
type or some supertype thereof; false
, otherwisepublic boolean isTypeOf(java.lang.Object object, org.eclipse.emf.ecore.EClassifier classifier)
EvaluationEnvironment
isTypeOf
in interface EvaluationEnvironment<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
object
- an objectclassifier
- a classifier
true
if ths specified classifier is the object's
type; false
, otherwisepublic org.eclipse.emf.ecore.EClassifier getType(java.lang.Object object)
EvaluationEnvironment
getType
in interface EvaluationEnvironment<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
object
- an object
public org.eclipse.emf.common.util.Enumerator getValue(org.eclipse.emf.ecore.EEnumLiteral enumerationLiteral)
getValue
in interface EvaluationEnvironment.Enumerations<org.eclipse.emf.ecore.EEnumLiteral>
enumerationLiteral
- the enumeration literal model element
public void setOperationReflectionCheckDisabled(boolean checkDisabled)
The check is enabled by default.
checkDisabled
- true to disable the checkprotected java.lang.Exception checkOperationReflectionConsistency(java.lang.Object source)
Missing support is the result of a failure to change the default genmodel 'Operation Reflection' setting to true.
Lack of support is tested by checking for a missing override of
EOperationImpl.eInvoke(int, EList)
.
source
- the object to checkpublic java.lang.Object navigateOppositeProperty(org.eclipse.emf.ecore.EReference property, java.lang.Object target) throws java.lang.IllegalArgumentException
EvaluationEnvironmentWithHiddenOpposites
navigateOppositeProperty
in interface EvaluationEnvironmentWithHiddenOpposites
property
- the property to navigate in reverse directiontarget
- the source element from where to start navigating / querying
java.lang.IllegalArgumentException
- if the property is not supported by the
element or by this environment
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |