org.eclipse.ocl.examples.pivot.evaluation
Class AbstractEvaluationVisitorDecorator<EV extends EvaluationVisitor>

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.AbstractEvaluationVisitorDecorator<EV>
All Implemented Interfaces:
DomainEvaluator, EvaluationVisitor, Visitor<java.lang.Object>
Direct Known Subclasses:
EvaluationVisitorDecorator, OCLVMEvaluationVisitorDecorator

public abstract class AbstractEvaluationVisitorDecorator<EV extends EvaluationVisitor>
extends AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
implements EvaluationVisitor

A visitor that decorates another EvaluationVisitor, to intercept invocations of the visitXxx(...) methods. By default, every visitation is simply delegated to the decorated visitor. Subclasses may extend these delegations with any additional behaviour that is required, even replacing calls to the delegate where necessary.

This class works together with the AbstractEvaluationVisitor to ensure that recursive visitXxx() calls are correctly intercepted by me (and not just implemented within the decorated visitor). Moreover, this works with decorators nested to any depth.


Field Summary
protected  EV delegate
           
 
Fields inherited from class org.eclipse.ocl.examples.pivot.util.AbstractVisitor
context
 
Constructor Summary
protected AbstractEvaluationVisitorDecorator(EV decorated)
           
 
Method Summary
 EvaluationVisitor createNestedEvaluator()
          Delegates to my decorated visitor.
protected  EV getDelegate()
          Obtains the visitor that I decorate.
 Environment getEnvironment()
          Obtains my delegate's environment.
 EvaluationEnvironment getEvaluationEnvironment()
          Obtains my delegate's evaluation environment.
 DomainModelManager getModelManager()
          Obtains my delegate's extent map.
 void setUndecoratedVisitor(EvaluationVisitor evaluationVisitor)
          Delegates to my decorated visitor.
 java.lang.Object visitAssociationClassCallExp(AssociationClassCallExp callExp)
          Delegates to my decorated visitor.
 java.lang.Object visitBooleanLiteralExp(BooleanLiteralExp literalExp)
          Delegates to my decorated visitor.
 java.lang.Object visitCollectionItem(CollectionItem item)
          Delegates to my decorated visitor.
 java.lang.Object visitCollectionLiteralExp(CollectionLiteralExp literalExp)
          Delegates to my decorated visitor.
 java.lang.Object visitCollectionRange(CollectionRange range)
          Delegates to my decorated visitor.
 java.lang.Object visitConstraint(Constraint constraint)
          Delegates to my decorated visitor.
 java.lang.Object visitConstructorExp(ConstructorExp constructorExp)
          Delegates to my decorated visitor.
 java.lang.Object visitEnumLiteralExp(EnumLiteralExp literalExp)
          Delegates to my decorated visitor.
 java.lang.Object visitExpressionInOCL(ExpressionInOCL expression)
          Delegates to my decorated visitor.
 java.lang.Object visitIfExp(IfExp ifExp)
          Delegates to my decorated visitor.
 java.lang.Object visiting(Visitable visitable)
          Delegates to my decorated visitor.
 java.lang.Object visitIntegerLiteralExp(IntegerLiteralExp literalExp)
          Delegates to my decorated visitor.
 java.lang.Object visitInvalidLiteralExp(InvalidLiteralExp literalExp)
          Delegates to my decorated visitor.
 java.lang.Object visitLetExp(LetExp letExp)
          Delegates to my decorated visitor.
 java.lang.Object visitMessageExp(MessageExp messageExp)
          Delegates to my decorated visitor.
 java.lang.Object visitNullLiteralExp(NullLiteralExp literalExp)
          Delegates to my decorated visitor.
 java.lang.Object visitOperationCallExp(OperationCallExp callExp)
          Delegates to my decorated visitor.
 java.lang.Object visitOppositePropertyCallExp(OppositePropertyCallExp callExp)
          Delegates to my decorated visitor.
 java.lang.Object visitPropertyCallExp(PropertyCallExp callExp)
          Delegates to my decorated visitor.
 java.lang.Object visitRealLiteralExp(RealLiteralExp literalExp)
          Delegates to my decorated visitor.
 java.lang.Object visitStateExp(StateExp stateExp)
          Delegates to my decorated visitor.
 java.lang.Object visitStringLiteralExp(StringLiteralExp literalExp)
          Delegates to my decorated visitor.
 java.lang.Object visitTupleLiteralExp(TupleLiteralExp literalExp)
          Delegates to my decorated visitor.
 java.lang.Object visitTupleLiteralPart(TupleLiteralPart part)
          Delegates to my decorated visitor.
 java.lang.Object visitTypeExp(TypeExp typeExp)
          Delegates to my decorated visitor.
 java.lang.Object visitUnlimitedNaturalLiteralExp(UnlimitedNaturalLiteralExp literalExp)
          Delegates to my decorated visitor.
 java.lang.Object visitUnspecifiedValueExp(UnspecifiedValueExp unspecExp)
          Delegates to my decorated visitor.
 java.lang.Object visitVariable(Variable variable)
          Delegates to my decorated visitor.
 java.lang.Object visitVariableExp(VariableExp variableExp)
          Delegates to my decorated visitor.
 
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, visitIterateExp, visitIteration, visitIteratorExp, 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, safeVisit, visit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.eclipse.ocl.examples.pivot.evaluation.EvaluationVisitor
evaluate, evaluate, getEvaluator, getMetaModelManager, getMonitor, getStandardLibrary, isCanceled, setCanceled, setMonitor
 
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, visitIterateExp, visitIteration, visitIteratorExp, 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 interface org.eclipse.ocl.examples.domain.evaluation.DomainEvaluator
dispose, getIdResolver, getLogger, getRegexPattern, getStaticTypeOf, getStaticTypeOf, getStaticTypeOf, setLogger
 

Field Detail

delegate

@NonNull
protected final EV extends EvaluationVisitor delegate
Constructor Detail

AbstractEvaluationVisitorDecorator

protected AbstractEvaluationVisitorDecorator(@NonNull
                                             EV decorated)
Method Detail

createNestedEvaluator

@NonNull
public EvaluationVisitor createNestedEvaluator()
Delegates to my decorated visitor.

Specified by:
createNestedEvaluator in interface DomainEvaluator
Specified by:
createNestedEvaluator in interface EvaluationVisitor

getDelegate

@NonNull
protected final EV getDelegate()
Obtains the visitor that I decorate.

Returns:
my decorated visitor

getEnvironment

@NonNull
public Environment getEnvironment()
Obtains my delegate's environment.

Specified by:
getEnvironment in interface EvaluationVisitor
Returns:
the environment

getEvaluationEnvironment

@NonNull
public EvaluationEnvironment getEvaluationEnvironment()
Obtains my delegate's evaluation environment.

Specified by:
getEvaluationEnvironment in interface DomainEvaluator
Specified by:
getEvaluationEnvironment in interface EvaluationVisitor
Returns:
the evaluation environment

getModelManager

@NonNull
public DomainModelManager getModelManager()
Obtains my delegate's extent map.

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

setUndecoratedVisitor

public void setUndecoratedVisitor(@NonNull
                                  EvaluationVisitor evaluationVisitor)
Delegates to my decorated visitor.

Specified by:
setUndecoratedVisitor in interface EvaluationVisitor
Parameters:
evaluationVisitor - the evaluationVisitor that is not decorated/

visitConstraint

public java.lang.Object visitConstraint(@NonNull
                                        Constraint constraint)
Delegates to my decorated visitor.

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

visitAssociationClassCallExp

public java.lang.Object visitAssociationClassCallExp(@NonNull
                                                     AssociationClassCallExp callExp)
Delegates to my decorated visitor.

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 literalExp)
Delegates to my decorated visitor.

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

visitCollectionItem

public java.lang.Object visitCollectionItem(@NonNull
                                            CollectionItem item)
Delegates to my decorated visitor.

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 literalExp)
Delegates to my decorated visitor.

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)
Delegates to my decorated visitor.

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 constructorExp)
Delegates to my decorated visitor.

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 literalExp)
Delegates to my decorated visitor.

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

visitExpressionInOCL

public java.lang.Object visitExpressionInOCL(@NonNull
                                             ExpressionInOCL expression)
Delegates to my decorated visitor.

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)
Delegates to my decorated visitor.

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 literalExp)
Delegates to my decorated visitor.

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

visitInvalidLiteralExp

public java.lang.Object visitInvalidLiteralExp(@NonNull
                                               InvalidLiteralExp literalExp)
Delegates to my decorated visitor.

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

visitLetExp

public java.lang.Object visitLetExp(@NonNull
                                    LetExp letExp)
Delegates to my decorated visitor.

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 messageExp)
Delegates to my decorated visitor.

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 literalExp)
Delegates to my decorated visitor.

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 callExp)
Delegates to my decorated visitor.

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 callExp)
Delegates to my decorated visitor.

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 callExp)
Delegates to my decorated visitor.

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 literalExp)
Delegates to my decorated visitor.

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

visitStateExp

public java.lang.Object visitStateExp(@NonNull
                                      StateExp stateExp)
Delegates to my decorated visitor.

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 literalExp)
Delegates to my decorated visitor.

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

visitTupleLiteralExp

public java.lang.Object visitTupleLiteralExp(@NonNull
                                             TupleLiteralExp literalExp)
Delegates to my decorated visitor.

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

visitTupleLiteralPart

public java.lang.Object visitTupleLiteralPart(@NonNull
                                              TupleLiteralPart part)
Delegates to my decorated visitor.

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 typeExp)
Delegates to my decorated visitor.

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 literalExp)
Delegates to my decorated visitor.

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

visitUnspecifiedValueExp

public java.lang.Object visitUnspecifiedValueExp(@NonNull
                                                 UnspecifiedValueExp unspecExp)
Delegates to my decorated visitor.

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)
Delegates to my decorated visitor.

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)
Delegates to my decorated visitor.

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

visiting

public java.lang.Object visiting(@NonNull
                                 Visitable visitable)
Delegates to my decorated visitor.

Specified by:
visiting in interface Visitor<java.lang.Object>