public abstract class AbstractEvaluationVisitorDecorator<EV extends EvaluationVisitor> extends AbstractExtendingVisitor<java.lang.Object,java.lang.Object> implements EvaluationVisitor
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.
Modifier and Type | Field and Description |
---|---|
protected EV |
delegate |
context
Modifier | Constructor and Description |
---|---|
protected |
AbstractEvaluationVisitorDecorator(EV decorated) |
Modifier and Type | Method and Description |
---|---|
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 |
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.
|
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, visitProperty, visitPseudostate, visitRegion, visitRoot, visitSelfType, visitSendSignalAction, visitSequenceType, visitSetType, visitSignal, visitState, visitStateMachine, visitStereotype, visitTemplateableElement, visitTemplateBinding, visitTemplateParameter, visitTemplateParameterSubstitution, visitTemplateParameterType, visitTemplateSignature, visitTransition, visitTrigger, visitTupleType, visitType, visitTypedElement, visitTypedMultiplicityElement, visitTypeTemplateParameter, visitUnspecifiedType, visitValueSpecification, visitVariableDeclaration, visitVertex, visitVoidType
getAdapter, safeVisit, visit
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
evaluate, evaluate, getEvaluator, getMetaModelManager, getStandardLibrary
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, visitProperty, visitPseudostate, visitRegion, visitRoot, visitSelfType, visitSendSignalAction, visitSequenceType, visitSetType, visitSignal, visitState, visitStateMachine, visitStereotype, visitTemplateableElement, visitTemplateBinding, visitTemplateParameter, visitTemplateParameterSubstitution, visitTemplateParameterType, visitTemplateSignature, visitTransition, visitTrigger, visitTupleType, visitType, visitTypedElement, visitTypedMultiplicityElement, visitTypeTemplateParameter, visitUnspecifiedType, visitValueSpecification, visitVariableDeclaration, visitVertex, visitVoidType
getIdResolver, getLogger, getStaticTypeOf, getStaticTypeOf, getStaticTypeOf, isCanceled, setCanceled, setLogger
@NonNull protected final EV extends EvaluationVisitor delegate
protected AbstractEvaluationVisitorDecorator(@NonNull EV decorated)
@NonNull public EvaluationVisitor createNestedEvaluator()
createNestedEvaluator
in interface DomainEvaluator
createNestedEvaluator
in interface EvaluationVisitor
@NonNull protected final EV getDelegate()
public Environment getEnvironment()
getEnvironment
in interface EvaluationVisitor
@NonNull public EvaluationEnvironment getEvaluationEnvironment()
getEvaluationEnvironment
in interface DomainEvaluator
getEvaluationEnvironment
in interface EvaluationVisitor
@NonNull public DomainModelManager getModelManager()
getModelManager
in interface DomainEvaluator
getModelManager
in interface EvaluationVisitor
public void setUndecoratedVisitor(@NonNull EvaluationVisitor evaluationVisitor)
setUndecoratedVisitor
in interface EvaluationVisitor
public java.lang.Object visitConstraint(@NonNull Constraint constraint)
visitConstraint
in interface Visitor<java.lang.Object>
visitConstraint
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitAssociationClassCallExp(@NonNull AssociationClassCallExp callExp)
visitAssociationClassCallExp
in interface Visitor<java.lang.Object>
visitAssociationClassCallExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitBooleanLiteralExp(@NonNull BooleanLiteralExp literalExp)
visitBooleanLiteralExp
in interface Visitor<java.lang.Object>
visitBooleanLiteralExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitCollectionItem(@NonNull CollectionItem item)
visitCollectionItem
in interface Visitor<java.lang.Object>
visitCollectionItem
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitCollectionLiteralExp(@NonNull CollectionLiteralExp literalExp)
visitCollectionLiteralExp
in interface Visitor<java.lang.Object>
visitCollectionLiteralExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitCollectionRange(@NonNull CollectionRange range)
visitCollectionRange
in interface Visitor<java.lang.Object>
visitCollectionRange
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitConstructorExp(@NonNull ConstructorExp constructorExp)
visitConstructorExp
in interface Visitor<java.lang.Object>
visitConstructorExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitEnumLiteralExp(@NonNull EnumLiteralExp literalExp)
visitEnumLiteralExp
in interface Visitor<java.lang.Object>
visitEnumLiteralExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitExpressionInOCL(@NonNull ExpressionInOCL expression)
visitExpressionInOCL
in interface Visitor<java.lang.Object>
visitExpressionInOCL
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitIfExp(@NonNull IfExp ifExp)
visitIfExp
in interface Visitor<java.lang.Object>
visitIfExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitIntegerLiteralExp(@NonNull IntegerLiteralExp literalExp)
visitIntegerLiteralExp
in interface Visitor<java.lang.Object>
visitIntegerLiteralExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitInvalidLiteralExp(@NonNull InvalidLiteralExp literalExp)
visitInvalidLiteralExp
in interface Visitor<java.lang.Object>
visitInvalidLiteralExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitLetExp(@NonNull LetExp letExp)
visitLetExp
in interface Visitor<java.lang.Object>
visitLetExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitMessageExp(@NonNull MessageExp messageExp)
visitMessageExp
in interface Visitor<java.lang.Object>
visitMessageExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitNullLiteralExp(@NonNull NullLiteralExp literalExp)
visitNullLiteralExp
in interface Visitor<java.lang.Object>
visitNullLiteralExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitOperationCallExp(@NonNull OperationCallExp callExp)
visitOperationCallExp
in interface Visitor<java.lang.Object>
visitOperationCallExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitPropertyCallExp(@NonNull PropertyCallExp callExp)
visitPropertyCallExp
in interface Visitor<java.lang.Object>
visitPropertyCallExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitRealLiteralExp(@NonNull RealLiteralExp literalExp)
visitRealLiteralExp
in interface Visitor<java.lang.Object>
visitRealLiteralExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitStateExp(@NonNull StateExp stateExp)
visitStateExp
in interface Visitor<java.lang.Object>
visitStateExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitStringLiteralExp(@NonNull StringLiteralExp literalExp)
visitStringLiteralExp
in interface Visitor<java.lang.Object>
visitStringLiteralExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitTupleLiteralExp(@NonNull TupleLiteralExp literalExp)
visitTupleLiteralExp
in interface Visitor<java.lang.Object>
visitTupleLiteralExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitTupleLiteralPart(@NonNull TupleLiteralPart part)
visitTupleLiteralPart
in interface Visitor<java.lang.Object>
visitTupleLiteralPart
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitTypeExp(@NonNull TypeExp typeExp)
visitTypeExp
in interface Visitor<java.lang.Object>
visitTypeExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitUnlimitedNaturalLiteralExp(@NonNull UnlimitedNaturalLiteralExp literalExp)
visitUnlimitedNaturalLiteralExp
in interface Visitor<java.lang.Object>
visitUnlimitedNaturalLiteralExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitUnspecifiedValueExp(@NonNull UnspecifiedValueExp unspecExp)
visitUnspecifiedValueExp
in interface Visitor<java.lang.Object>
visitUnspecifiedValueExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitVariable(@NonNull Variable variable)
visitVariable
in interface Visitor<java.lang.Object>
visitVariable
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>
public java.lang.Object visitVariableExp(@NonNull VariableExp variableExp)
visitVariableExp
in interface Visitor<java.lang.Object>
visitVariableExp
in class AbstractExtendingVisitor<java.lang.Object,java.lang.Object>