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

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
All Implemented Interfaces:
DomainEvaluator, EvaluationVisitor, Visitor<Value>
Direct Known Subclasses:
EvaluationVisitorImpl

public abstract class AbstractEvaluationVisitor
extends AbstractExtendingVisitor<Value,java.lang.Object>
implements EvaluationVisitor

An evaluation visitor implementation for OCL expressions.

Note that this class is not intended to be used or extended by clients. Use the AbstractEvaluationVisitor interface, instead.

See the Environment class for a description of the generic type parameters of this class.

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

Field Summary
protected  Environment environment
           
protected  EvaluationEnvironment evaluationEnvironment
           
protected  MetaModelManager metaModelManager
           
protected  DomainModelManager modelManager
           
protected  ValueFactory valueFactory
           
 
Fields inherited from class org.eclipse.ocl.examples.pivot.util.AbstractVisitor
context
 
Constructor Summary
protected AbstractEvaluationVisitor(Environment env, EvaluationEnvironment evalEnv, DomainModelManager modelManager)
          Initializes me.
 
Method Summary
 Environment getEnvironment()
          Obtains the environment that provides the metamodel semantics for the expression to be evaluated.
 EvaluationEnvironment getEvaluationEnvironment()
          Obtains the evaluation environment that keeps track of variable values and knows how to call operations, navigate properties, etc.
 MetaModelManager getMetaModelManager()
           
 DomainModelManager getModelManager()
          Obtains the mapping of model classes to their extents.
 DomainStandardLibrary getStandardLibrary()
           
protected  EvaluationVisitor getUndecoratedVisitor()
          Obtains the visitor on which I perform nested Visitable#accept(org.eclipse.ocl.utilities.Visitor) calls.
 ValueFactory getValueFactory()
          Return the factory for values and indirectly for types.
protected  EvaluationVisitor getVisitor()
          Deprecated. use getUndecoratedVisitor()
 boolean isCanceled()
          Return true if the evaluation has been canceled.
 void setCanceled(boolean isCanceled)
          Request cancelation of the current the evaluation, or reset the request for a new evaluation.
 void setUndecoratedVisitor(EvaluationVisitor evaluationVisitor)
          Sets the visitor on which I perform nested Visitable#accept(org.eclipse.ocl.utilities.Visitor) calls.
 NullValue throwInvalidEvaluation(InvalidValueException e)
           
 NullValue throwInvalidEvaluation(java.lang.String message)
           
 NullValue throwInvalidEvaluation(java.lang.Throwable e, DomainExpression expression, java.lang.Object value, java.lang.String message, java.lang.Object... bindings)
           
 java.lang.String toString()
           
 Value visitConstraint(Constraint constraint)
          This default implementation asserts that the constraint is boolean-valued if it is an invariant, pre-condition, or post-condition constraint and returns the value of its body expression by delegation to #visitExpression(OCLExpression).
 
Methods inherited from class org.eclipse.ocl.examples.pivot.util.AbstractExtendingVisitor
visitAnnotation, visitAnyType, visitAssociationClass, visitAssociationClassCallExp, visitBagType, visitBooleanLiteralExp, visitCallExp, visitCallOperationAction, visitClass, visitClassifierType, visitCollectionItem, visitCollectionLiteralExp, visitCollectionLiteralPart, visitCollectionRange, visitCollectionType, visitComment, visitConstructorExp, visitConstructorPart, visitDataType, visitDetail, visitElement, visitEnumeration, visitEnumerationLiteral, visitEnumLiteralExp, visitExpressionInOCL, visitFeature, visitFeatureCallExp, visitIfExp, visitIntegerLiteralExp, visitInvalidLiteralExp, visitInvalidType, visitIterateExp, visitIteration, visitIteratorExp, visitLambdaType, visitLetExp, visitLibrary, visitLiteralExp, visitLoopExp, visitMessageExp, visitMessageType, visitModel, visitMultiplicityElement, visitNamedElement, visitNamespace, visitNavigationCallExp, visitNullLiteralExp, visitNumericLiteralExp, visitOCLExpression, visitOpaqueExpression, visitOperation, visitOperationCallExp, visitOperationTemplateParameter, visitOrderedSetType, visitPackage, visitPackageableElement, visitParameter, visitParameterableElement, visitPrecedence, visitPrimitiveLiteralExp, visitPrimitiveType, visitProperty, visitPropertyCallExp, visitRealLiteralExp, visitSelfType, visitSendSignalAction, visitSequenceType, visitSetType, visitSignal, visitState, visitStateExp, visitStringLiteralExp, visitTemplateableElement, visitTemplateBinding, visitTemplateParameter, visitTemplateParameterSubstitution, visitTemplateParameterType, visitTemplateSignature, visitTupleLiteralExp, visitTupleLiteralPart, visitTupleType, visitType, visitTypedElement, visitTypedMultiplicityElement, visitTypeExp, visitTypeTemplateParameter, visitUnlimitedNaturalLiteralExp, visitUnspecifiedType, visitUnspecifiedValueExp, visitValueSpecification, visitVariable, visitVariableDeclaration, visitVariableExp, visitVoidType
 
Methods inherited from class org.eclipse.ocl.examples.pivot.util.AbstractVisitor
getAdapter, safeVisit, 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.evaluation.EvaluationVisitor
createNestedEvaluator, evaluate, getEvaluator
 
Methods inherited from interface org.eclipse.ocl.examples.pivot.util.Visitor
getAdapter, visitAnnotation, visitAnyType, visitAssociationClass, visitAssociationClassCallExp, visitBagType, visitBooleanLiteralExp, visitCallExp, visitCallOperationAction, visitClass, visitClassifierType, visitCollectionItem, visitCollectionLiteralExp, visitCollectionLiteralPart, visitCollectionRange, visitCollectionType, visitComment, visitConstructorExp, visitConstructorPart, visitDataType, visitDetail, visitElement, visitEnumeration, visitEnumerationLiteral, visitEnumLiteralExp, visitExpressionInOCL, visitFeature, visitFeatureCallExp, visitIfExp, visiting, visitIntegerLiteralExp, visitInvalidLiteralExp, visitInvalidType, visitIterateExp, visitIteration, visitIteratorExp, visitLambdaType, visitLetExp, visitLibrary, visitLiteralExp, visitLoopExp, visitMessageExp, visitMessageType, visitModel, visitMultiplicityElement, visitNamedElement, visitNamespace, visitNavigationCallExp, visitNullLiteralExp, visitNumericLiteralExp, visitOCLExpression, visitOpaqueExpression, visitOperation, visitOperationCallExp, visitOperationTemplateParameter, visitOrderedSetType, visitPackage, visitPackageableElement, visitParameter, visitParameterableElement, visitPrecedence, visitPrimitiveLiteralExp, visitPrimitiveType, visitProperty, visitPropertyCallExp, visitRealLiteralExp, visitSelfType, visitSendSignalAction, visitSequenceType, visitSetType, visitSignal, visitState, visitStateExp, visitStringLiteralExp, visitTemplateableElement, visitTemplateBinding, visitTemplateParameter, visitTemplateParameterSubstitution, visitTemplateParameterType, visitTemplateSignature, visitTupleLiteralExp, visitTupleLiteralPart, visitTupleType, visitType, visitTypedElement, visitTypedMultiplicityElement, visitTypeExp, visitTypeTemplateParameter, visitUnlimitedNaturalLiteralExp, visitUnspecifiedType, visitUnspecifiedValueExp, visitValueSpecification, visitVariable, visitVariableDeclaration, visitVariableExp, visitVoidType
 

Field Detail

evaluationEnvironment

protected final EvaluationEnvironment evaluationEnvironment

environment

protected final Environment environment

metaModelManager

protected final MetaModelManager metaModelManager

modelManager

protected final DomainModelManager modelManager

valueFactory

protected final ValueFactory valueFactory
Constructor Detail

AbstractEvaluationVisitor

protected AbstractEvaluationVisitor(Environment env,
                                    EvaluationEnvironment evalEnv,
                                    DomainModelManager modelManager)
Initializes me.

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

getEnvironment

public Environment getEnvironment()
Description copied from interface: EvaluationVisitor
Obtains the environment that provides the metamodel semantics for the expression to be evaluated.

Specified by:
getEnvironment in interface EvaluationVisitor
Returns:
the environment

getEvaluationEnvironment

public EvaluationEnvironment 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 DomainEvaluator
Specified by:
getEvaluationEnvironment in interface EvaluationVisitor
Returns:
the evaluation environment

getMetaModelManager

public MetaModelManager getMetaModelManager()
Specified by:
getMetaModelManager in interface EvaluationVisitor

getModelManager

public DomainModelManager getModelManager()
Description copied from interface: EvaluationVisitor
Obtains the mapping of model classes to their extents.

Specified by:
getModelManager in interface DomainEvaluator
Specified by:
getModelManager in interface EvaluationVisitor
Returns:
the model manager

getStandardLibrary

public DomainStandardLibrary getStandardLibrary()
Specified by:
getStandardLibrary in interface EvaluationVisitor

getUndecoratedVisitor

protected EvaluationVisitor getUndecoratedVisitor()
Obtains the visitor on which I perform nested Visitable#accept(org.eclipse.ocl.utilities.Visitor) calls. This handles the case in which I am decorated by another visitor that must intercept every visitXxx() method. If I internally just recursively visit myself, then this decorator is cut out of the picture.

Returns:
my delegate visitor, which may be my own self or some other

getValueFactory

public ValueFactory getValueFactory()
Description copied from interface: DomainEvaluator
Return the factory for values and indirectly for types.

Specified by:
getValueFactory in interface DomainEvaluator
Specified by:
getValueFactory in interface EvaluationVisitor

getVisitor

@Deprecated
protected final EvaluationVisitor getVisitor()
Deprecated. use getUndecoratedVisitor()

Obtains the visitor on which I perform nested Visitable#accept(org.eclipse.ocl.utilities.Visitor) calls. This handles the case in which I am decorated by another visitor that must intercept every visitXxx() method. If I internally just recursively visit myself, then this decorator is cut out of the picture.

Returns:
my delegate visitor, which may be my own self or some other

isCanceled

public boolean isCanceled()
Description copied from interface: DomainEvaluator
Return true if the evaluation has been canceled.

Specified by:
isCanceled in interface DomainEvaluator

setCanceled

public void setCanceled(boolean isCanceled)
Description copied from interface: DomainEvaluator
Request cancelation of the current the evaluation, or reset the request for a new evaluation. Cancelation occurs by throwing an EvaluationHaltedException when #getValuefactory() is next invoked.

Specified by:
setCanceled in interface DomainEvaluator

setUndecoratedVisitor

public void setUndecoratedVisitor(EvaluationVisitor evaluationVisitor)
Sets the visitor on which I perform nested Visitable#accept(org.eclipse.ocl.utilities.Visitor) calls.

Specified by:
setUndecoratedVisitor in interface EvaluationVisitor
Parameters:
visitor - my delegate visitor
See Also:
getUndecoratedVisitor()

throwInvalidEvaluation

public NullValue throwInvalidEvaluation(java.lang.String message)
                                 throws InvalidEvaluationException
Specified by:
throwInvalidEvaluation in interface EvaluationVisitor
Throws:
InvalidEvaluationException

throwInvalidEvaluation

public NullValue throwInvalidEvaluation(InvalidValueException e)
                                 throws InvalidEvaluationException
Specified by:
throwInvalidEvaluation in interface DomainEvaluator
Specified by:
throwInvalidEvaluation in interface EvaluationVisitor
Throws:
InvalidEvaluationException

throwInvalidEvaluation

public NullValue throwInvalidEvaluation(java.lang.Throwable e,
                                        DomainExpression expression,
                                        java.lang.Object value,
                                        java.lang.String message,
                                        java.lang.Object... bindings)
Specified by:
throwInvalidEvaluation in interface DomainEvaluator
Specified by:
throwInvalidEvaluation in interface EvaluationVisitor

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

visitConstraint

public Value visitConstraint(Constraint constraint)
This default implementation asserts that the constraint is boolean-valued if it is an invariant, pre-condition, or post-condition constraint and returns the value of its body expression by delegation to #visitExpression(OCLExpression).

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