org.eclipse.ocl.examples.pivot.evaluation
Class EvaluationVisitorImpl

java.lang.Object
  extended by org.eclipse.ocl.examples.pivot.util.AbstractVisitor<R,C>
      extended by org.eclipse.ocl.examples.pivot.util.AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
          extended by org.eclipse.ocl.examples.pivot.evaluation.AbstractEvaluationVisitor
              extended by org.eclipse.ocl.examples.pivot.evaluation.EvaluationVisitorImpl
All Implemented Interfaces:
DomainEvaluator, EvaluationVisitor, Visitor<java.lang.Object>
Direct Known Subclasses:
OCLConsolePage.CancelableEvaluationVisitor, OCLVMEvaluationVisitorImpl

public class EvaluationVisitorImpl
extends AbstractEvaluationVisitor

An evaluation visitor implementation for OCL expressions.


Field Summary
 
Fields inherited from class org.eclipse.ocl.examples.pivot.evaluation.AbstractEvaluationVisitor
environment, evaluationEnvironment, metaModelManager, modelManager, monitor, undecoratedVisitor
 
Fields inherited from class org.eclipse.ocl.examples.pivot.util.AbstractVisitor
context
 
Constructor Summary
EvaluationVisitorImpl(Environment env, EvaluationEnvironment evalEnv, DomainModelManager modelManager)
          Constructor
 
Method Summary
 EvaluationVisitor createNestedEvaluator()
           
 EvaluationVisitor createNestedUndecoratedEvaluator(NamedElement operation)
           
 void dispose()
           
 java.lang.Object evaluate(DomainExpression body)
           
 java.lang.Object evaluate(ExpressionInOCL expressionInOCL)
           
protected  java.lang.Object evaluatePropertyCallExp(NavigationCallExp propertyCallExp, Property referredProperty)
           
 EvaluationVisitor getEvaluator()
           
static boolean isSimpleRange(CollectionLiteralExp cl)
           
 LibraryFeature lookupImplementation(DomainType dynamicType, DomainOperation staticOperation)
           
 java.lang.Object safeVisit(Visitable v)
          A null-safe visitation of the specified visitable.
 java.lang.Object visitAssociationClassCallExp(AssociationClassCallExp ae)
          Callback for an AssociationClassCallExp visit.
 java.lang.Object visitBooleanLiteralExp(BooleanLiteralExp booleanLiteralExp)
          Callback for a BooleanLiteralExp visit.
 java.lang.Object visitCollectionItem(CollectionItem item)
           
 java.lang.Object visitCollectionLiteralExp(CollectionLiteralExp cl)
          Callback for a CollectionLiteralExp visit.
 java.lang.Object visitCollectionRange(CollectionRange range)
           
 java.lang.Object visitConstructorExp(ConstructorExp ce)
           
 java.lang.Object visitEnumLiteralExp(EnumLiteralExp el)
          Callback for an EnumLiteralExp visit.
 java.lang.Object visitExpressionInOCL(ExpressionInOCL expression)
           
 java.lang.Object visitIfExp(IfExp ifExp)
          Callback for an IfExp visit.
 java.lang.Object visiting(Visitable visitable)
          Return the result of visiting a visitable for which no more specific pivot type method is available.
 java.lang.Object visitIntegerLiteralExp(IntegerLiteralExp integerLiteralExp)
          Callback for an IntegerLiteralExp visit.
 java.lang.Object visitInvalidLiteralExp(InvalidLiteralExp invalidLiteralExp)
           
 java.lang.Object visitIterateExp(IterateExp iterateExp)
          Callback for an IterateExp visit.
 java.lang.Object visitIteratorExp(IteratorExp iteratorExp)
          Callback for an IteratorExp visit.
 java.lang.Object visitLetExp(LetExp letExp)
          Callback for LetExp visit.
 java.lang.Object visitMessageExp(MessageExp m)
           
 java.lang.Object visitNullLiteralExp(NullLiteralExp nullLiteralExp)
           
 java.lang.Object visitOperationCallExp(OperationCallExp operationCallExp)
          Callback for an OperationCallExp visit.
 java.lang.Object visitOppositePropertyCallExp(OppositePropertyCallExp oppositePropertyCallExp)
          Callback for an OppositePropertyCallExp visit.
 java.lang.Object visitPropertyCallExp(PropertyCallExp propertyCallExp)
          Callback for a PropertyCallExp visit.
 java.lang.Object visitRealLiteralExp(RealLiteralExp realLiteralExp)
          Callback for a RealLiteralExp visit.
 java.lang.Object visitStateExp(StateExp s)
           
 java.lang.Object visitStringLiteralExp(StringLiteralExp stringLiteralExp)
          Callback for a StringLiteralExp visit.
 java.lang.Object visitTupleLiteralExp(TupleLiteralExp tl)
          Callback for a TupleLiteralExp visit.
 java.lang.Object visitTupleLiteralPart(TupleLiteralPart tp)
           
 java.lang.Object visitTypeExp(TypeExp t)
          Callback for a TypeExp visit.
 java.lang.Object visitUnlimitedNaturalLiteralExp(UnlimitedNaturalLiteralExp unlimitedNaturalLiteralExp)
          Callback for an UnlimitedNaturalLiteralExp visit.
 java.lang.Object visitUnspecifiedValueExp(UnspecifiedValueExp uv)
          Callback for an UnspecifiedValueExp visit.
 java.lang.Object visitVariable(Variable variable)
          Callback for a Variable visit.
 java.lang.Object visitVariableExp(VariableExp variableExp)
          Callback for a VariableExp visit.
 
Methods inherited from class org.eclipse.ocl.examples.pivot.evaluation.AbstractEvaluationVisitor
createRegexCache, getEnvironment, getEvaluationEnvironment, getIdResolver, getLogger, getMetaModelManager, getModelManager, getMonitor, getRegexPattern, getStandardLibrary, getStaticTypeOf, getStaticTypeOf, getStaticTypeOf, getUndecoratedVisitor, getVisitor, isCanceled, setCanceled, setLogger, setMonitor, setUndecoratedVisitor, toString, visitConstraint
 
Methods inherited from class org.eclipse.ocl.examples.pivot.util.AbstractExtendingVisitor
visitAnnotation, visitAnyType, visitAssociationClass, visitBagType, visitBehavior, visitCallExp, visitCallOperationAction, visitClass, visitCollectionLiteralPart, visitCollectionType, visitComment, visitConnectionPointReference, visitConstructorPart, visitDataType, visitDetail, visitDynamicElement, visitDynamicProperty, visitDynamicType, visitElement, visitElementExtension, visitEnumeration, visitEnumerationLiteral, visitFeature, visitFeatureCallExp, visitFinalState, visitImport, visitInvalidType, visitIteration, visitLambdaType, visitLibrary, visitLiteralExp, visitLoopExp, visitMessageType, visitMetaclass, visitNamedElement, visitNamespace, visitNavigationCallExp, visitNumericLiteralExp, visitOCLExpression, visitOpaqueExpression, visitOperation, visitOperationTemplateParameter, visitOrderedSetType, visitPackage, visitPackageableElement, visitParameter, visitParameterableElement, visitPrecedence, visitPrimitiveLiteralExp, visitPrimitiveType, visitProfile, visitProfileApplication, visitProperty, visitPseudostate, visitRegion, visitRoot, visitSelfType, visitSendSignalAction, visitSequenceType, visitSetType, visitSignal, visitState, visitStateMachine, visitStereotype, visitTemplateableElement, visitTemplateBinding, visitTemplateParameter, visitTemplateParameterSubstitution, visitTemplateParameterType, visitTemplateSignature, visitTransition, visitTrigger, visitTupleType, visitType, visitTypedElement, visitTypedMultiplicityElement, visitTypeExtension, visitTypeTemplateParameter, visitUnspecifiedType, visitValueSpecification, visitVariableDeclaration, visitVertex, visitVoidType
 
Methods inherited from class org.eclipse.ocl.examples.pivot.util.AbstractVisitor
getAdapter, visit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.eclipse.ocl.examples.pivot.util.Visitor
getAdapter, visitAnnotation, visitAnyType, visitAssociationClass, visitBagType, visitBehavior, visitCallExp, visitCallOperationAction, visitClass, visitCollectionLiteralPart, visitCollectionType, visitComment, visitConnectionPointReference, visitConstructorPart, visitDataType, visitDetail, visitDynamicElement, visitDynamicProperty, visitDynamicType, visitElement, visitElementExtension, visitEnumeration, visitEnumerationLiteral, visitFeature, visitFeatureCallExp, visitFinalState, visitImport, visitInvalidType, visitIteration, visitLambdaType, visitLibrary, visitLiteralExp, visitLoopExp, visitMessageType, visitMetaclass, visitNamedElement, visitNamespace, visitNavigationCallExp, visitNumericLiteralExp, visitOCLExpression, visitOpaqueExpression, visitOperation, visitOperationTemplateParameter, visitOrderedSetType, visitPackage, visitPackageableElement, visitParameter, visitParameterableElement, visitPrecedence, visitPrimitiveLiteralExp, visitPrimitiveType, visitProfile, visitProfileApplication, visitProperty, visitPseudostate, visitRegion, visitRoot, visitSelfType, visitSendSignalAction, visitSequenceType, visitSetType, visitSignal, visitState, visitStateMachine, visitStereotype, visitTemplateableElement, visitTemplateBinding, visitTemplateParameter, visitTemplateParameterSubstitution, visitTemplateParameterType, visitTemplateSignature, visitTransition, visitTrigger, visitTupleType, visitType, visitTypedElement, visitTypedMultiplicityElement, visitTypeExtension, visitTypeTemplateParameter, visitUnspecifiedType, visitValueSpecification, visitVariableDeclaration, visitVertex, visitVoidType
 

Constructor Detail

EvaluationVisitorImpl

public EvaluationVisitorImpl(@NonNull
                             Environment env,
                             @NonNull
                             EvaluationEnvironment evalEnv,
                             @NonNull
                             DomainModelManager modelManager)
Constructor

Parameters:
env - an evaluation environment (map of variable names to values)
modelManager - a map of classes to their instance lists
Method Detail

isSimpleRange

public static boolean isSimpleRange(@NonNull
                                    CollectionLiteralExp cl)

createNestedEvaluator

@NonNull
public EvaluationVisitor createNestedEvaluator()

createNestedUndecoratedEvaluator

@NonNull
public EvaluationVisitor createNestedUndecoratedEvaluator(@NonNull
                                                                  NamedElement operation)

dispose

public void dispose()

evaluate

@Nullable
public java.lang.Object evaluate(@NonNull
                                          DomainExpression body)

evaluate

@Nullable
public java.lang.Object evaluate(@NonNull
                                          ExpressionInOCL expressionInOCL)

evaluatePropertyCallExp

protected java.lang.Object evaluatePropertyCallExp(@NonNull
                                                   NavigationCallExp propertyCallExp,
                                                   @NonNull
                                                   Property referredProperty)

getEvaluator

@NonNull
public EvaluationVisitor getEvaluator()

lookupImplementation

@NonNull
public LibraryFeature lookupImplementation(@NonNull
                                                   DomainType dynamicType,
                                                   @NonNull
                                                   DomainOperation staticOperation)

safeVisit

public java.lang.Object safeVisit(@Nullable
                                  Visitable v)
Description copied from class: AbstractVisitor
A null-safe visitation of the specified visitable.

Overrides:
safeVisit in class AbstractVisitor<java.lang.Object,java.lang.Object>
Parameters:
v - a visitable, or null
Returns:
null if the visitable is null; otherwise, the result of visiting it

visitAssociationClassCallExp

public java.lang.Object visitAssociationClassCallExp(@NonNull
                                                     AssociationClassCallExp ae)
Callback for an AssociationClassCallExp visit. Evaluates the source of the expression and then reflectively gets the value of the reference on the result. For example, in "self.foo", "self" is the source and would be evaluated first, then the value of the reference "foo" would be derived on that object.

Specified by:
visitAssociationClassCallExp in interface Visitor<java.lang.Object>
Overrides:
visitAssociationClassCallExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitBooleanLiteralExp

public java.lang.Object visitBooleanLiteralExp(@NonNull
                                               BooleanLiteralExp booleanLiteralExp)
Callback for a BooleanLiteralExp visit.

Specified by:
visitBooleanLiteralExp in interface Visitor<java.lang.Object>
Overrides:
visitBooleanLiteralExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
Returns:
the value of the boolean literal as a java.lang.Boolean.

visitCollectionItem

public java.lang.Object visitCollectionItem(@NonNull
                                            CollectionItem item)
Specified by:
visitCollectionItem in interface Visitor<java.lang.Object>
Overrides:
visitCollectionItem in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitCollectionLiteralExp

public java.lang.Object visitCollectionLiteralExp(@NonNull
                                                  CollectionLiteralExp cl)
Callback for a CollectionLiteralExp visit.

Specified by:
visitCollectionLiteralExp in interface Visitor<java.lang.Object>
Overrides:
visitCollectionLiteralExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitCollectionRange

public java.lang.Object visitCollectionRange(@NonNull
                                             CollectionRange range)
Specified by:
visitCollectionRange in interface Visitor<java.lang.Object>
Overrides:
visitCollectionRange in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitConstructorExp

public java.lang.Object visitConstructorExp(@NonNull
                                            ConstructorExp ce)
Specified by:
visitConstructorExp in interface Visitor<java.lang.Object>
Overrides:
visitConstructorExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitEnumLiteralExp

public java.lang.Object visitEnumLiteralExp(@NonNull
                                            EnumLiteralExp el)
Callback for an EnumLiteralExp visit. Get the referred enum literal and return it as an Integer.

Specified by:
visitEnumLiteralExp in interface Visitor<java.lang.Object>
Overrides:
visitEnumLiteralExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
Parameters:
el - the enumeration literal expresion
Returns:
the enumeration literal as an Integer

visitExpressionInOCL

public java.lang.Object visitExpressionInOCL(@NonNull
                                             ExpressionInOCL expression)
Specified by:
visitExpressionInOCL in interface Visitor<java.lang.Object>
Overrides:
visitExpressionInOCL in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitIfExp

public java.lang.Object visitIfExp(@NonNull
                                   IfExp ifExp)
Callback for an IfExp visit.

Specified by:
visitIfExp in interface Visitor<java.lang.Object>
Overrides:
visitIfExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitIntegerLiteralExp

public java.lang.Object visitIntegerLiteralExp(@NonNull
                                               IntegerLiteralExp integerLiteralExp)
Callback for an IntegerLiteralExp visit.

Specified by:
visitIntegerLiteralExp in interface Visitor<java.lang.Object>
Overrides:
visitIntegerLiteralExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
Returns:
the value of the integer literal as a java.lang.Integer.

visitInvalidLiteralExp

public java.lang.Object visitInvalidLiteralExp(@NonNull
                                               InvalidLiteralExp invalidLiteralExp)
Specified by:
visitInvalidLiteralExp in interface Visitor<java.lang.Object>
Overrides:
visitInvalidLiteralExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitIterateExp

public java.lang.Object visitIterateExp(@NonNull
                                        IterateExp iterateExp)
Callback for an IterateExp visit.

Specified by:
visitIterateExp in interface Visitor<java.lang.Object>
Overrides:
visitIterateExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitIteratorExp

public java.lang.Object visitIteratorExp(@NonNull
                                         IteratorExp iteratorExp)
Callback for an IteratorExp visit.

Specified by:
visitIteratorExp in interface Visitor<java.lang.Object>
Overrides:
visitIteratorExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitLetExp

public java.lang.Object visitLetExp(@NonNull
                                    LetExp letExp)
Callback for LetExp visit.

Specified by:
visitLetExp in interface Visitor<java.lang.Object>
Overrides:
visitLetExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitMessageExp

public java.lang.Object visitMessageExp(@NonNull
                                        MessageExp m)
Specified by:
visitMessageExp in interface Visitor<java.lang.Object>
Overrides:
visitMessageExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitNullLiteralExp

public java.lang.Object visitNullLiteralExp(@NonNull
                                            NullLiteralExp nullLiteralExp)
Specified by:
visitNullLiteralExp in interface Visitor<java.lang.Object>
Overrides:
visitNullLiteralExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitOperationCallExp

public java.lang.Object visitOperationCallExp(@NonNull
                                              OperationCallExp operationCallExp)
Callback for an OperationCallExp visit.

Specified by:
visitOperationCallExp in interface Visitor<java.lang.Object>
Overrides:
visitOperationCallExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitOppositePropertyCallExp

public java.lang.Object visitOppositePropertyCallExp(@NonNull
                                                     OppositePropertyCallExp oppositePropertyCallExp)
Callback for an OppositePropertyCallExp visit.

Specified by:
visitOppositePropertyCallExp in interface Visitor<java.lang.Object>
Overrides:
visitOppositePropertyCallExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitPropertyCallExp

public java.lang.Object visitPropertyCallExp(@NonNull
                                             PropertyCallExp propertyCallExp)
Callback for a PropertyCallExp visit.

Specified by:
visitPropertyCallExp in interface Visitor<java.lang.Object>
Overrides:
visitPropertyCallExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitRealLiteralExp

public java.lang.Object visitRealLiteralExp(@NonNull
                                            RealLiteralExp realLiteralExp)
Callback for a RealLiteralExp visit.

Specified by:
visitRealLiteralExp in interface Visitor<java.lang.Object>
Overrides:
visitRealLiteralExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
Returns:
the value of the real literal as a java.lang.Double.

visitStateExp

public java.lang.Object visitStateExp(@NonNull
                                      StateExp s)
Specified by:
visitStateExp in interface Visitor<java.lang.Object>
Overrides:
visitStateExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitStringLiteralExp

public java.lang.Object visitStringLiteralExp(@NonNull
                                              StringLiteralExp stringLiteralExp)
Callback for a StringLiteralExp visit.

Specified by:
visitStringLiteralExp in interface Visitor<java.lang.Object>
Overrides:
visitStringLiteralExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
Returns:
the value of the string literal as a java.lang.String.

visitTupleLiteralExp

public java.lang.Object visitTupleLiteralExp(@NonNull
                                             TupleLiteralExp tl)
Callback for a TupleLiteralExp visit.

Specified by:
visitTupleLiteralExp in interface Visitor<java.lang.Object>
Overrides:
visitTupleLiteralExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
Parameters:
tl - tuple literal expression
Returns:
String

visitTupleLiteralPart

public java.lang.Object visitTupleLiteralPart(@NonNull
                                              TupleLiteralPart tp)
Specified by:
visitTupleLiteralPart in interface Visitor<java.lang.Object>
Overrides:
visitTupleLiteralPart in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitTypeExp

public java.lang.Object visitTypeExp(@NonNull
                                     TypeExp t)
Callback for a TypeExp visit.

Specified by:
visitTypeExp in interface Visitor<java.lang.Object>
Overrides:
visitTypeExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitUnlimitedNaturalLiteralExp

public java.lang.Object visitUnlimitedNaturalLiteralExp(@NonNull
                                                        UnlimitedNaturalLiteralExp unlimitedNaturalLiteralExp)
Callback for an UnlimitedNaturalLiteralExp visit.

Specified by:
visitUnlimitedNaturalLiteralExp in interface Visitor<java.lang.Object>
Overrides:
visitUnlimitedNaturalLiteralExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
Returns:
the value of the natural literal as a java.lang.Integer.

visitUnspecifiedValueExp

public java.lang.Object visitUnspecifiedValueExp(@NonNull
                                                 UnspecifiedValueExp uv)
Callback for an UnspecifiedValueExp visit.

Specified by:
visitUnspecifiedValueExp in interface Visitor<java.lang.Object>
Overrides:
visitUnspecifiedValueExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitVariable

public java.lang.Object visitVariable(@NonNull
                                      Variable variable)
Callback for a Variable visit.

Specified by:
visitVariable in interface Visitor<java.lang.Object>
Overrides:
visitVariable in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>

visitVariableExp

public java.lang.Object visitVariableExp(@NonNull
                                         VariableExp variableExp)
Callback for a VariableExp visit.

Specified by:
visitVariableExp in interface Visitor<java.lang.Object>
Overrides:
visitVariableExp in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
Parameters:
variableExp - the variable expression
Returns:
the value of the variable

visiting

public java.lang.Object visiting(@NonNull
                                 Visitable visitable)
Description copied from interface: Visitor
Return the result of visiting a visitable for which no more specific pivot type method is available.