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<Value,java.lang.Object>
          extended by org.eclipse.ocl.examples.pivot.evaluation.AbstractEvaluationVisitor
              extended by org.eclipse.ocl.examples.pivot.evaluation.EvaluationVisitorImpl
All Implemented Interfaces:
EvaluationVisitor, Visitor<Value,java.lang.Object>
Direct Known Subclasses:
OCLConsolePage.CancelableEvaluationVisitor

public class EvaluationVisitorImpl
extends AbstractEvaluationVisitor

An evaluation visitor implementation for OCL expressions.

Since:
1.3
Author:
Tim Klinger (tklinger), Christian W. Damus (cdamus)

Field Summary
 
Fields inherited from class org.eclipse.ocl.examples.pivot.evaluation.AbstractEvaluationVisitor
environment, evaluationEnvironment, modelManager, typeManager, valueFactory
 
Fields inherited from class org.eclipse.ocl.examples.pivot.util.AbstractVisitor
context
 
Constructor Summary
EvaluationVisitorImpl(Environment env, EvaluationEnvironment evalEnv, ModelManager modelManager)
          Constructor
 
Method Summary
 EvaluationVisitor createNestedVisitor()
           
protected  Value handleCallExp(CallExp callExp, Operation staticOperation)
           
static boolean isSimpleRange(CollectionLiteralExp cl)
           
 Value safeVisit(Visitable v)
          A null-safe visitation of the specified visitable.
 Value visitAssociationClassCallExp(AssociationClassCallExp ae)
          Callback for an AssociationClassCallExp visit.
 BooleanValue visitBooleanLiteralExp(BooleanLiteralExp booleanLiteralExp)
          Callback for a BooleanLiteralExp visit.
 Value visitCollectionItem(CollectionItem item)
           
 Value visitCollectionLiteralExp(CollectionLiteralExp cl)
          Callback for a CollectionLiteralExp visit.
 Value visitCollectionRange(CollectionRange range)
           
 Value visitEnumLiteralExp(EnumLiteralExp el)
          Callback for an EnumLiteralExp visit.
 Value visitExpressionInOcl(ExpressionInOcl expression)
           
 Value visitIfExp(IfExp ifExp)
          Callback for an IfExp visit.
 Value visiting(Visitable visitable)
          Return the result of visiting a visitable for which no more specific pivot type method is available.
 Value visitIntegerLiteralExp(IntegerLiteralExp integerLiteralExp)
          Callback for an IntegerLiteralExp visit.
 Value visitInvalidLiteralExp(InvalidLiteralExp invalidLiteralExp)
           
 Value visitIterateExp(IterateExp iterateExp)
          Callback for an IterateExp visit.
 Value visitIteratorExp(IteratorExp iteratorExp)
          Callback for an IteratorExp visit.
 Value visitLetExp(LetExp letExp)
          Callback for LetExp visit.
 Value visitMessageExp(MessageExp m)
           
 Value visitNullLiteralExp(NullLiteralExp nullLiteralExp)
           
 Value visitOperationCallExp(OperationCallExp operationCallExp)
          Callback for an OperationCallExp visit.
 Value visitPropertyCallExp(PropertyCallExp propertyCallExp)
          Callback for a PropertyCallExp visit.
 Value visitRealLiteralExp(RealLiteralExp realLiteralExp)
          Callback for a RealLiteralExp visit.
 Value visitStateExp(StateExp s)
           
 Value visitStringLiteralExp(StringLiteralExp stringLiteralExp)
          Callback for a StringLiteralExp visit.
 Value visitTupleLiteralExp(TupleLiteralExp tl)
          Callback for a TupleLiteralExp visit.
 Value visitTupleLiteralPart(TupleLiteralPart tp)
           
 Value visitTypeExp(TypeExp t)
          Callback for a TypeExp visit.
 Value visitUnlimitedNaturalLiteralExp(UnlimitedNaturalLiteralExp unlimitedNaturalLiteralExp)
          Callback for an UnlimitedNaturalLiteralExp visit.
 Value visitUnspecifiedValueExp(UnspecifiedValueExp uv)
          Callback for an UnspecifiedValueExp visit.
 Value visitVariable(Variable variable)
          Callback for a Variable visit.
 Value visitVariableExp(VariableExp variableExp)
          Callback for a VariableExp visit.
 
Methods inherited from class org.eclipse.ocl.examples.pivot.evaluation.AbstractEvaluationVisitor
getEnvironment, getEvaluationEnvironment, getModelManager, getTypeManager, getUndecoratedVisitor, getValueFactory, getVisitor, setUndecoratedVisitor, throwInvalidEvaluation, throwInvalidEvaluation, throwInvalidEvaluation, toString, visitConstraint
 
Methods inherited from class org.eclipse.ocl.examples.pivot.util.AbstractExtendingVisitor
visitAnnotation, visitAnyType, visitAssociationClass, visitBagType, visitCallExp, visitCallOperationAction, visitClass, visitClassifierType, visitCollectionLiteralPart, visitCollectionType, visitComment, visitDataType, visitDetail, visitElement, visitEnumeration, visitEnumerationLiteral, visitFeature, visitFeatureCallExp, visitInvalidType, visitIteration, visitLambdaType, visitLibrary, visitLiteralExp, visitLoopExp, visitMessageType, visitMonikeredElement, visitMultiplicityElement, visitNamedElement, visitNamespace, visitNavigationCallExp, visitNumericLiteralExp, visitOclExpression, visitOpaqueExpression, visitOperation, visitOperationTemplateParameter, visitOrderedSetType, visitPackage, visitPackageableElement, visitParameter, visitParameterableElement, visitPrecedence, visitPrimitiveLiteralExp, visitPrimitiveType, visitProperty, visitSendSignalAction, visitSequenceType, visitSetType, visitSignal, visitState, visitTemplateableElement, visitTemplateBinding, visitTemplateParameter, visitTemplateParameterSubstitution, visitTemplateParameterType, visitTemplateSignature, visitTupleType, visitType, visitTypedElement, visitTypedMultiplicityElement, visitTypeTemplateParameter, visitUnspecifiedType, visitValueSpecification, visitVariableDeclaration, 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, visitCallExp, visitCallOperationAction, visitClass, visitClassifierType, visitCollectionLiteralPart, visitCollectionType, visitComment, visitDataType, visitDetail, visitElement, visitEnumeration, visitEnumerationLiteral, visitFeature, visitFeatureCallExp, visitInvalidType, visitIteration, visitLambdaType, visitLibrary, visitLiteralExp, visitLoopExp, visitMessageType, visitMonikeredElement, visitMultiplicityElement, visitNamedElement, visitNamespace, visitNavigationCallExp, visitNumericLiteralExp, visitOclExpression, visitOpaqueExpression, visitOperation, visitOperationTemplateParameter, visitOrderedSetType, visitPackage, visitPackageableElement, visitParameter, visitParameterableElement, visitPrecedence, visitPrimitiveLiteralExp, visitPrimitiveType, visitProperty, visitSendSignalAction, visitSequenceType, visitSetType, visitSignal, visitState, visitTemplateableElement, visitTemplateBinding, visitTemplateParameter, visitTemplateParameterSubstitution, visitTemplateParameterType, visitTemplateSignature, visitTupleType, visitType, visitTypedElement, visitTypedMultiplicityElement, visitTypeTemplateParameter, visitUnspecifiedType, visitValueSpecification, visitVariableDeclaration, visitVoidType
 

Constructor Detail

EvaluationVisitorImpl

public EvaluationVisitorImpl(Environment env,
                             EvaluationEnvironment evalEnv,
                             ModelManager 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(CollectionLiteralExp cl)

createNestedVisitor

public EvaluationVisitor createNestedVisitor()

handleCallExp

protected Value handleCallExp(CallExp callExp,
                              Operation staticOperation)
                       throws InvalidEvaluationException
Throws:
InvalidEvaluationException

safeVisit

public Value safeVisit(Visitable v)
Description copied from class: AbstractVisitor
A null-safe visitation of the specified visitable.

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

visitAssociationClassCallExp

public Value visitAssociationClassCallExp(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<Value,java.lang.Object>
Overrides:
visitAssociationClassCallExp in class AbstractExtendingVisitor<Value,java.lang.Object>

visitBooleanLiteralExp

public BooleanValue visitBooleanLiteralExp(BooleanLiteralExp booleanLiteralExp)
Callback for a BooleanLiteralExp visit.

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

visitCollectionItem

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

visitCollectionLiteralExp

public Value visitCollectionLiteralExp(CollectionLiteralExp cl)
Callback for a CollectionLiteralExp visit.

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

visitCollectionRange

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

visitEnumLiteralExp

public Value visitEnumLiteralExp(EnumLiteralExp el)
Callback for an EnumLiteralExp visit. Get the referred enum literal and return it as an Integer.

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

visitExpressionInOcl

public Value visitExpressionInOcl(ExpressionInOcl expression)
Specified by:
visitExpressionInOcl in interface Visitor<Value,java.lang.Object>
Overrides:
visitExpressionInOcl in class AbstractExtendingVisitor<Value,java.lang.Object>

visitIfExp

public Value visitIfExp(IfExp ifExp)
Callback for an IfExp visit.

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

visitIntegerLiteralExp

public Value visitIntegerLiteralExp(IntegerLiteralExp integerLiteralExp)
Callback for an IntegerLiteralExp visit.

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

visitInvalidLiteralExp

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

visitIterateExp

public Value visitIterateExp(IterateExp iterateExp)
Callback for an IterateExp visit.

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

visitIteratorExp

public Value visitIteratorExp(IteratorExp iteratorExp)
Callback for an IteratorExp visit.

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

visitLetExp

public Value visitLetExp(LetExp letExp)
Callback for LetExp visit.

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

visitMessageExp

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

visitNullLiteralExp

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

visitOperationCallExp

public Value visitOperationCallExp(OperationCallExp operationCallExp)
Callback for an OperationCallExp visit.

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

visitPropertyCallExp

public Value visitPropertyCallExp(PropertyCallExp propertyCallExp)
Callback for a PropertyCallExp visit.

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

visitRealLiteralExp

public Value visitRealLiteralExp(RealLiteralExp realLiteralExp)
Callback for a RealLiteralExp visit.

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

visitStateExp

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

visitStringLiteralExp

public Value visitStringLiteralExp(StringLiteralExp stringLiteralExp)
Callback for a StringLiteralExp visit.

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

visitTupleLiteralExp

public Value visitTupleLiteralExp(TupleLiteralExp tl)
Callback for a TupleLiteralExp visit.

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

visitTupleLiteralPart

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

visitTypeExp

public Value visitTypeExp(TypeExp t)
Callback for a TypeExp visit.

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

visitUnlimitedNaturalLiteralExp

public Value visitUnlimitedNaturalLiteralExp(UnlimitedNaturalLiteralExp unlimitedNaturalLiteralExp)
Callback for an UnlimitedNaturalLiteralExp visit.

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

visitUnspecifiedValueExp

public Value visitUnspecifiedValueExp(UnspecifiedValueExp uv)
Callback for an UnspecifiedValueExp visit.

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

visitVariable

public Value visitVariable(Variable variable)
Callback for a Variable visit.

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

visitVariableExp

public Value visitVariableExp(VariableExp variableExp)
Callback for a VariableExp visit.

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

visiting

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