org.eclipse.ocl.examples.impactanalyzer.deltaPropagation
Class PartialEvaluationVisitorImpl

java.lang.Object
  extended by org.eclipse.ocl.utilities.AbstractVisitor<java.lang.Object,C,O,P,EL,PM,S,COA,SSA,CT>
      extended by org.eclipse.ocl.AbstractEvaluationVisitor<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E>
          extended by org.eclipse.ocl.EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
              extended by org.eclipse.ocl.ecore.EvaluationVisitorImpl
                  extended by org.eclipse.ocl.examples.impactanalyzer.deltaPropagation.PartialEvaluationVisitorImpl
All Implemented Interfaces:
VisitorExtension<java.lang.Object>, EvaluationVisitor<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>, Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Direct Known Subclasses:
PartialEvaluationVisitorImplNoAllInstances

public class PartialEvaluationVisitorImpl
extends EvaluationVisitorImpl

When a ValueNotFoundException occurs during evaluating an expression, it is not caught, logged and swallowed but forwarded to the caller.

All visit... operations check if the expression to evaluate is the sourceExpression passed to the constructor. If so, instead of actually evaluating the expression, the valueOfSourceExpression object is returned which was also passed to the constructor. This allows for partial evaluation of any CallExp with a given value for the source expression.

When the sourceExpression has once been evaluated it is nulled out so that when due to recursion it is evaluated again, evaluation is based on the current environment and not on the cached valueOfSourceExpression. Without this it could happen that, e.g., the value for a self VariableExp is cached but would have to have a different value upon recursive evaluation.

Author:
Axel Uhl

Field Summary
 
Fields inherited from class org.eclipse.ocl.utilities.AbstractVisitor
result
 
Constructor Summary
PartialEvaluationVisitorImpl(Environment<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject> env, 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> evalEnv, java.util.Map<? extends org.eclipse.emf.ecore.EClass,? extends java.util.Set<? extends org.eclipse.emf.ecore.EObject>> extentMap, OCLExpression sourceExpression, java.lang.Object valueOfSourceExpression, org.eclipse.emf.common.notify.Notification atPre)
           
 
Method Summary
protected  org.eclipse.emf.common.notify.Notification getAtPre()
           
 PartialEcoreEvaluationEnvironment getEvaluationEnvironment()
          Obtains the evaluation environment that keeps track of variable values and knows how to call operations, navigate properties, etc.
protected  OCLExpression getSourceExpression()
           
protected  java.lang.Object getValueOfSourceExpression()
           
protected  java.lang.Object safeVisitExpression(OCLExpression<org.eclipse.emf.ecore.EClassifier> source)
          Evaluates exp.
protected  void setSourceExpression(OCLExpression sourceExpression)
           
 java.lang.Object visitAssociationClassCallExp(AssociationClassCallExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EStructuralFeature> ae)
          Callback for an AssociationClassCallExp visit.
 java.lang.Object visitBooleanLiteralExp(BooleanLiteralExp<org.eclipse.emf.ecore.EClassifier> bl)
          Callback for a BooleanLiteralExp visit.
 java.lang.Object visitCollectionLiteralExp(CollectionLiteralExp<org.eclipse.emf.ecore.EClassifier> cl)
          Callback for a CollectionLiteralExp visit.
 java.lang.Object visitEnumLiteralExp(EnumLiteralExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EEnumLiteral> el)
          Callback for an EnumLiteralExp visit.
 java.lang.Object visitExpression(OCLExpression<org.eclipse.emf.ecore.EClassifier> expression)
          Does the same as the AbstractEvaluationVisitor implementation but additionally catches the ValueNotFoundException and in that case passes on the exception instead of turning it into an OclInvalid value.
 java.lang.Object visitIfExp(IfExp<org.eclipse.emf.ecore.EClassifier> ie)
          Callback for an IfExp visit.
 java.lang.Object visitIntegerLiteralExp(IntegerLiteralExp<org.eclipse.emf.ecore.EClassifier> il)
          Callback for an IntegerLiteralExp visit.
 java.lang.Object visitInvalidLiteralExp(InvalidLiteralExp<org.eclipse.emf.ecore.EClassifier> il)
          Simply returns AbstractVisitor.result.
 java.lang.Object visitIterateExp(IterateExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> ie)
          Callback for an IterateExp visit.
 java.lang.Object visitIteratorExp(IteratorExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> ie)
          Callback for an IteratorExp visit.
 java.lang.Object visitLetExp(LetExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> l)
          Callback for LetExp visit.
 java.lang.Object visitMessageExp(MessageExp<org.eclipse.emf.ecore.EClassifier,CallOperationAction,SendSignalAction> m)
          Visits the message expression's target and then its arguments.
 java.lang.Object visitNullLiteralExp(NullLiteralExp<org.eclipse.emf.ecore.EClassifier> il)
          Simply returns AbstractVisitor.result.
 java.lang.Object visitOperationCallExp(OperationCallExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation> oc)
          Callback for an OperationCallExp visit.
 java.lang.Object visitOppositePropertyCallExp(OppositePropertyCallExp pc)
          Callback for a PropertyCallExp visit.
 java.lang.Object visitPropertyCallExp(PropertyCallExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EStructuralFeature> pc)
          Callback for a PropertyCallExp visit.
 java.lang.Object visitRealLiteralExp(RealLiteralExp<org.eclipse.emf.ecore.EClassifier> rl)
          Callback for a RealLiteralExp visit.
 java.lang.Object visitStateExp(StateExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EObject> s)
          Simply returns AbstractVisitor.result.
 java.lang.Object visitStringLiteralExp(StringLiteralExp<org.eclipse.emf.ecore.EClassifier> sl)
          Callback for a StringLiteralExp visit.
 java.lang.Object visitTupleLiteralExp(TupleLiteralExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EStructuralFeature> tl)
          Callback for a TupleLiteralExp visit.
 java.lang.Object visitTypeExp(TypeExp<org.eclipse.emf.ecore.EClassifier> t)
          Callback for a TypeExp visiy.
 java.lang.Object visitUnlimitedNaturalLiteralExp(UnlimitedNaturalLiteralExp<org.eclipse.emf.ecore.EClassifier> literalExp)
          Callback for an UnlimitedNaturalLiteralExp visit.
 java.lang.Object visitUnspecifiedValueExp(UnspecifiedValueExp<org.eclipse.emf.ecore.EClassifier> uv)
          Callback for an UnspecifiedValueExp visit.
 java.lang.Object visitVariableExp(VariableExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> v)
          Callback for a VariableExp visit.
 
Methods inherited from class org.eclipse.ocl.ecore.EvaluationVisitorImpl
getOperationBody, getPropertyBody
 
Methods inherited from class org.eclipse.ocl.EvaluationVisitorImpl
createRegexCache, createTypeChecker, getRegexMatcher, visitTupleLiteralPart, visitVariable
 
Methods inherited from class org.eclipse.ocl.AbstractEvaluationVisitor
call, coerceNumber, getBoolean, getEnvironment, getExtentMap, getInteger, getInvalid, getName, getReal, getSpecification, getStandardLibrary, getString, getUMLReflection, getUnlimitedNatural, getVisitor, higherPrecisionNumber, isLaxNullHandling, isUndefined, navigate, oclIsKindOf, oclIsTypeOf, setEvaluationEnvironment, toString, visitConstraint
 
Methods inherited from class org.eclipse.ocl.utilities.AbstractVisitor
handleAssociationClassCallExp, handleCollectionItem, handleCollectionLiteralExp, handleCollectionRange, handleConstraint, handleExpressionInOCL, handleIfExp, handleIterateExp, handleIteratorExp, handleLetExp, handleMessageExp, handleOperationCallExp, handlePropertyCallExp, handleTupleLiteralExp, handleTupleLiteralPart, handleVariable, safeVisit, visitCollectionItem, visitCollectionRange, visitExpressionInOCL
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.eclipse.ocl.utilities.Visitor
visitCollectionItem, visitCollectionRange, visitExpressionInOCL
 

Constructor Detail

PartialEvaluationVisitorImpl

public PartialEvaluationVisitorImpl(Environment<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject> env,
                                    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> evalEnv,
                                    java.util.Map<? extends org.eclipse.emf.ecore.EClass,? extends java.util.Set<? extends org.eclipse.emf.ecore.EObject>> extentMap,
                                    OCLExpression sourceExpression,
                                    java.lang.Object valueOfSourceExpression,
                                    org.eclipse.emf.common.notify.Notification atPre)
Parameters:
atPre - a Notification object such that an evaluation will be based on the state *before* the notification. For example, if the notification indicates the removal of a reference from an element e1 to an element e2 across reference r then when during partial evaluation r is traversed starting from e1 then e2 will show in the results although in the current version of the model it would not. If null, the evaluator will evaluate expressions on the model as is.
Method Detail

visitOperationCallExp

public java.lang.Object visitOperationCallExp(OperationCallExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation> oc)
Description copied from class: EvaluationVisitorImpl
Callback for an OperationCallExp visit.

Specified by:
visitOperationCallExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitOperationCallExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>

safeVisitExpression

protected java.lang.Object safeVisitExpression(OCLExpression<org.eclipse.emf.ecore.EClassifier> source)
Description copied from class: AbstractEvaluationVisitor
Evaluates exp. If the evaluation terminates with an exception that does not have special semantics for the OCL evaluator itself, such as EvaluationHaltedException, the exception is caught, and invalid is returned as the result of the evaluation. If the evaluation terminates normally, the evaluation result is returned.

Subclasses may override this method to add exceptions to the list of exceptions that are not caught because they have special meaning to a specialized OCL evaluator.

Overrides:
safeVisitExpression in class AbstractEvaluationVisitor<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>

visitIterateExp

public java.lang.Object visitIterateExp(IterateExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> ie)
Description copied from class: EvaluationVisitorImpl
Callback for an IterateExp visit.

Specified by:
visitIterateExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitIterateExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>

visitIteratorExp

public java.lang.Object visitIteratorExp(IteratorExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> ie)
Description copied from class: EvaluationVisitorImpl
Callback for an IteratorExp visit.

Specified by:
visitIteratorExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitIteratorExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>

visitEnumLiteralExp

public java.lang.Object visitEnumLiteralExp(EnumLiteralExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EEnumLiteral> el)
Description copied from class: EvaluationVisitorImpl
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,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitEnumLiteralExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
Parameters:
el - the enumeration literal expresion
Returns:
the enumeration literal as an Integer

getEvaluationEnvironment

public PartialEcoreEvaluationEnvironment getEvaluationEnvironment()
Description copied from interface: EvaluationVisitor
Obtains the evaluation environment that keeps track of variable values and knows how to call operations, navigate properties, etc.

Specified by:
getEvaluationEnvironment in interface EvaluationVisitor<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
Overrides:
getEvaluationEnvironment in class AbstractEvaluationVisitor<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
Returns:
the evaluation environment

visitVariableExp

public java.lang.Object visitVariableExp(VariableExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> v)
Description copied from class: EvaluationVisitorImpl
Callback for a VariableExp visit.

Specified by:
visitVariableExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitVariableExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
Parameters:
v - the variable expression
Returns:
the value of the variable

visitPropertyCallExp

public java.lang.Object visitPropertyCallExp(PropertyCallExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EStructuralFeature> pc)
Description copied from class: EvaluationVisitorImpl
Callback for a PropertyCallExp visit. Evaluates the source of the expression and then reflectively gets the value of the property on the result. For example, in "self.foo", "self" is the source and would be evaluated first, then the value of the property "foo" would be accessed on that object.

Specified by:
visitPropertyCallExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitPropertyCallExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>

visitAssociationClassCallExp

public java.lang.Object visitAssociationClassCallExp(AssociationClassCallExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EStructuralFeature> ae)
Description copied from class: EvaluationVisitorImpl
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,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitAssociationClassCallExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>

visitIfExp

public java.lang.Object visitIfExp(IfExp<org.eclipse.emf.ecore.EClassifier> ie)
Description copied from class: EvaluationVisitorImpl
Callback for an IfExp visit.

Specified by:
visitIfExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitIfExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>

visitTypeExp

public java.lang.Object visitTypeExp(TypeExp<org.eclipse.emf.ecore.EClassifier> t)
Description copied from class: EvaluationVisitorImpl
Callback for a TypeExp visiy.

Specified by:
visitTypeExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitTypeExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>

visitStateExp

public java.lang.Object visitStateExp(StateExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EObject> s)
Description copied from class: AbstractVisitor
Simply returns AbstractVisitor.result.

Specified by:
visitStateExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitStateExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>

visitMessageExp

public java.lang.Object visitMessageExp(MessageExp<org.eclipse.emf.ecore.EClassifier,CallOperationAction,SendSignalAction> m)
Description copied from class: AbstractVisitor
Visits the message expression's target and then its arguments. Returns the result of AbstractVisitor.handleMessageExp(MessageExp, Object, List).

Specified by:
visitMessageExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitMessageExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>

visitUnspecifiedValueExp

public java.lang.Object visitUnspecifiedValueExp(UnspecifiedValueExp<org.eclipse.emf.ecore.EClassifier> uv)
Description copied from class: EvaluationVisitorImpl
Callback for an UnspecifiedValueExp visit.

Specified by:
visitUnspecifiedValueExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitUnspecifiedValueExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>

visitIntegerLiteralExp

public java.lang.Object visitIntegerLiteralExp(IntegerLiteralExp<org.eclipse.emf.ecore.EClassifier> il)
Description copied from class: EvaluationVisitorImpl
Callback for an IntegerLiteralExp visit.

Specified by:
visitIntegerLiteralExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitIntegerLiteralExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
Returns:
the value of the integer literal as a java.lang.Integer.

visitUnlimitedNaturalLiteralExp

public java.lang.Object visitUnlimitedNaturalLiteralExp(UnlimitedNaturalLiteralExp<org.eclipse.emf.ecore.EClassifier> literalExp)
Description copied from class: EvaluationVisitorImpl
Callback for an UnlimitedNaturalLiteralExp visit.

Specified by:
visitUnlimitedNaturalLiteralExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitUnlimitedNaturalLiteralExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
Returns:
the value of the natural literal as a java.lang.Integer.

visitRealLiteralExp

public java.lang.Object visitRealLiteralExp(RealLiteralExp<org.eclipse.emf.ecore.EClassifier> rl)
Description copied from class: EvaluationVisitorImpl
Callback for a RealLiteralExp visit.

Specified by:
visitRealLiteralExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitRealLiteralExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
Returns:
the value of the real literal as a java.lang.Double.

visitStringLiteralExp

public java.lang.Object visitStringLiteralExp(StringLiteralExp<org.eclipse.emf.ecore.EClassifier> sl)
Description copied from class: EvaluationVisitorImpl
Callback for a StringLiteralExp visit.

Specified by:
visitStringLiteralExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitStringLiteralExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
Returns:
the value of the string literal as a java.lang.String.

visitBooleanLiteralExp

public java.lang.Object visitBooleanLiteralExp(BooleanLiteralExp<org.eclipse.emf.ecore.EClassifier> bl)
Description copied from class: EvaluationVisitorImpl
Callback for a BooleanLiteralExp visit.

Specified by:
visitBooleanLiteralExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitBooleanLiteralExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
Returns:
the value of the boolean literal as a java.lang.Boolean.

visitInvalidLiteralExp

public java.lang.Object visitInvalidLiteralExp(InvalidLiteralExp<org.eclipse.emf.ecore.EClassifier> il)
Description copied from class: AbstractVisitor
Simply returns AbstractVisitor.result.

Specified by:
visitInvalidLiteralExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitInvalidLiteralExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>

visitNullLiteralExp

public java.lang.Object visitNullLiteralExp(NullLiteralExp<org.eclipse.emf.ecore.EClassifier> il)
Description copied from class: AbstractVisitor
Simply returns AbstractVisitor.result.

Specified by:
visitNullLiteralExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitNullLiteralExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>

visitLetExp

public java.lang.Object visitLetExp(LetExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EParameter> l)
Description copied from class: EvaluationVisitorImpl
Callback for LetExp visit.

Specified by:
visitLetExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitLetExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>

visitCollectionLiteralExp

public java.lang.Object visitCollectionLiteralExp(CollectionLiteralExp<org.eclipse.emf.ecore.EClassifier> cl)
Description copied from class: EvaluationVisitorImpl
Callback for a CollectionLiteralExp visit.

Specified by:
visitCollectionLiteralExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitCollectionLiteralExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>

visitTupleLiteralExp

public java.lang.Object visitTupleLiteralExp(TupleLiteralExp<org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EStructuralFeature> tl)
Description copied from class: EvaluationVisitorImpl
Callback for a TupleLiteralExp visit.

Specified by:
visitTupleLiteralExp in interface Visitor<java.lang.Object,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint>
Overrides:
visitTupleLiteralExp in class EvaluationVisitorImpl<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
Parameters:
tl - tuple literal expression
Returns:
String

visitExpression

public java.lang.Object visitExpression(OCLExpression<org.eclipse.emf.ecore.EClassifier> expression)
Does the same as the AbstractEvaluationVisitor implementation but additionally catches the ValueNotFoundException and in that case passes on the exception instead of turning it into an OclInvalid value.

Specified by:
visitExpression in interface EvaluationVisitor<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
Overrides:
visitExpression in class AbstractEvaluationVisitor<org.eclipse.emf.ecore.EPackage,org.eclipse.emf.ecore.EClassifier,org.eclipse.emf.ecore.EOperation,org.eclipse.emf.ecore.EStructuralFeature,org.eclipse.emf.ecore.EEnumLiteral,org.eclipse.emf.ecore.EParameter,org.eclipse.emf.ecore.EObject,CallOperationAction,SendSignalAction,Constraint,org.eclipse.emf.ecore.EClass,org.eclipse.emf.ecore.EObject>
Parameters:
expression - an OCL expression to evaluate
Returns:
the result of the evaluation

visitOppositePropertyCallExp

public java.lang.Object visitOppositePropertyCallExp(OppositePropertyCallExp pc)
Description copied from class: EvaluationVisitorImpl
Callback for a PropertyCallExp visit. Evaluates the source of the expression and then reflectively gets the value of the property on the result. For example, in "self.foo", "self" is the source and would be evaluated first, then the value of the property "foo" would be accessed on that object.

Specified by:
visitOppositePropertyCallExp in interface VisitorExtension<java.lang.Object>
Overrides:
visitOppositePropertyCallExp in class EvaluationVisitorImpl

getSourceExpression

protected OCLExpression getSourceExpression()

setSourceExpression

protected void setSourceExpression(OCLExpression sourceExpression)

getValueOfSourceExpression

protected java.lang.Object getValueOfSourceExpression()

getAtPre

protected org.eclipse.emf.common.notify.Notification getAtPre()