org.eclipse.ocl.examples.impactanalyzer.instanceScope.traceback
Interface TracebackStep

All Known Implementing Classes:
AbstractTracebackStep, AbstractTracebackStep.TracebackStepAndScopeChange, AbstractTracebackStep.TracebackStepAndScopeChangeWithOperationCallExp, BranchingTracebackStep, CollectionLiteralTracebackStep, EmptyTracebackStep, IfTracebackStep, IterateTracebackStep, IteratorTracebackStep, LetTracebackStep, OperationCallTracebackStep, OppositePropertyCallTracebackStep, PropertyCallTracebackStep, TupleLiteralTracebackStep, VariableTracebackStep

public interface TracebackStep

Objects of classes implementing this interface are constructed by TracebackStepCache.createStep(OCLExpression, org.eclipse.emf.ecore.EClass, org.eclipse.ocl.examples.impactanalyzer.impl.OperationBodyToCallMapper, java.util.Stack, OCLFactory). For each (sub-)expression visited in the OCL AST, such a step is created. The constructors try to perform as much pre-computation as possible so that when executing the step with its traceback(AnnotatedEObject, UnusedEvaluationRequestSet, org.eclipse.ocl.examples.impactanalyzer.instanceScope.traceback.TracebackCache, Notification) method, as little effort as possible needs to be spent.

When being executed, the step computes a conservative superset of the objects that, when used as the context for the overall OCLExpression, lead to the expression for which this TracebackStep was created evaluating to source.

Author:
Martin Hanysz, Axel Uhl

Method Summary
 OperationCallExpKeyedSet traceback(AnnotatedEObject source, UnusedEvaluationRequestSet pendingUnusedEvalRequests, TracebackCache tracebackCache, org.eclipse.emf.common.notify.Notification changeEvent)
          When being executed, the step computes a conservative superset of the objects that, when used as the context for the overall OCLExpression, may cause the expression for which this TracebackStep was created to evaluate to source.
 

Method Detail

traceback

OperationCallExpKeyedSet traceback(AnnotatedEObject source,
                                   UnusedEvaluationRequestSet pendingUnusedEvalRequests,
                                   TracebackCache tracebackCache,
                                   org.eclipse.emf.common.notify.Notification changeEvent)
When being executed, the step computes a conservative superset of the objects that, when used as the context for the overall OCLExpression, may cause the expression for which this TracebackStep was created to evaluate to source.

Parameters:
source - the object to which the expression, for which this step was created, shall evaluate
pendingUnusedEvalRequests - When tracing back a VariableExp expression, this infers a value for the variable referred to by the expression. This may trigger a previously delayed "unused" evaluation to be triggered. Those triggerable "unused" evaluation requests are passed using this parameter. When triggering one of them proves the location of the original change to be unused, an empty set will result from this call. May be null, having the same effect as passing a set that contains no requests.
tracebackCache - cache in which previous results of traceback(AnnotatedEObject, UnusedEvaluationRequestSet, org.eclipse.ocl.examples.impactanalyzer.instanceScope.traceback.TracebackCache, Notification) executions can be found
changeEvent - the original change event; used for performing pre/post evaluations
Returns:
the set of objects (with optional annotation explaining the derivation path of each object) for which, when used as context for the overall expression, the OCL (sub-)expression for which this step is responsible may evaluate to source. The resulting objects may additionally be keyed by OperationCallExp expressions in case their inference left an operation body through a self or parameter variable. These keys are removed again in the OperationCallTracebackStep, keying the results specific to the call being traced by the null key. All object reached without leaving an operation body through a self or parameter variable are also keyed by the null key.