blob: 0426c577d472d810dbc9cbcd3d2b3cddb8f9b7d3 [file] [log] [blame]
/*******************************************************************************
* <copyright>
*
* </copyright>
*
* This code is auto-generated
* from: org.eclipse.qvtd.doc.miniocl/model/MiniOCL.genmodel
*
* Only the copyright statement is editable.
*******************************************************************************/
package org.eclipse.qvtd.doc.miniocl.util;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
/**
* An AbstractWrappingVisitor delegates all visits wrapping the delegation in a call to a preVisit function and a postVisit function.
*/
public abstract class AbstractWrappingVisitor<R, C, @NonNull D extends Visitor<R>, P>
extends AbstractVisitor<R, C>
implements Visitor<R>
{
protected final @NonNull D delegate;
protected AbstractWrappingVisitor(@NonNull D delegate, C context) {
super(context);
this.delegate = delegate;
// delegate.setUndecoratedVisitor(this);
}
/**
* Intercept an exception thrown by the delegated visit to perform some post-functionality that may use the visitable object,
* the result of preVisit and the thrown exception to determine the overall wrapped result.
*
* @return a rethrown RuntimeException or a RuntimeException-wrapped non-RuntimeException.
*/
protected R badVisit(org.eclipse.qvtd.doc.miniocl.util.@NonNull Visitable visitable, @Nullable P prologue, @NonNull Throwable e) throws RuntimeException {
if (e instanceof Exception) {
throw (RuntimeException)e;
}
else {
throw new RuntimeException(e);
}
}
/**
* Obtains the visitor that I wrap.
*
* @return my wrapped visitor
*/
protected @NonNull D getDelegate() {
return delegate;
}
/**
* Intercept the result of the delegated visit to perform some post-functionality that may use the visitable object,
* the result of preVisit and the result of the delegated visit to determine the overall wrapped result.
*
* @return the epilogue result, which defaults to the delegated result.
*/
protected R postVisit(org.eclipse.qvtd.doc.miniocl.util.@NonNull Visitable visitable, @Nullable P prologue, R result) {
return result;
}
/**
* Compute and return some value before performing the delegated visit.
*
* @return the prologue result, which defauilts to null.
*/
protected @Nullable P preVisit(org.eclipse.qvtd.doc.miniocl.util.@NonNull Visitable visitable) {
return null;
}
@Override
public R visiting(org.eclipse.qvtd.doc.miniocl.util.@NonNull Visitable visitable) {
throw new UnsupportedOperationException(); // Cannot happen since all methods delegate.
}
@Override
public R visitBooleanLiteralExp(org.eclipse.qvtd.doc.miniocl.@NonNull BooleanLiteralExp object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitBooleanLiteralExp(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitCallExp(org.eclipse.qvtd.doc.miniocl.@NonNull CallExp object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitCallExp(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitClass(org.eclipse.qvtd.doc.miniocl.@NonNull Class object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitClass(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitCollectionItem(org.eclipse.qvtd.doc.miniocl.@NonNull CollectionItem object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitCollectionItem(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitCollectionLiteralExp(org.eclipse.qvtd.doc.miniocl.@NonNull CollectionLiteralExp object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitCollectionLiteralExp(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitCollectionLiteralPart(org.eclipse.qvtd.doc.miniocl.@NonNull CollectionLiteralPart object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitCollectionLiteralPart(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitCollectionRange(org.eclipse.qvtd.doc.miniocl.@NonNull CollectionRange object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitCollectionRange(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitConstraint(org.eclipse.qvtd.doc.miniocl.@NonNull Constraint object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitConstraint(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitElement(org.eclipse.qvtd.doc.miniocl.@NonNull Element object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitElement(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitExpressionInOCL(org.eclipse.qvtd.doc.miniocl.@NonNull ExpressionInOCL object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitExpressionInOCL(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitFeature(org.eclipse.qvtd.doc.miniocl.@NonNull Feature object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitFeature(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitImport(org.eclipse.qvtd.doc.miniocl.@NonNull Import object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitImport(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitIntegerLiteralExp(org.eclipse.qvtd.doc.miniocl.@NonNull IntegerLiteralExp object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitIntegerLiteralExp(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitIterateExp(org.eclipse.qvtd.doc.miniocl.@NonNull IterateExp object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitIterateExp(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitIteratorExp(org.eclipse.qvtd.doc.miniocl.@NonNull IteratorExp object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitIteratorExp(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitLetExp(org.eclipse.qvtd.doc.miniocl.@NonNull LetExp object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitLetExp(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitLiteralExp(org.eclipse.qvtd.doc.miniocl.@NonNull LiteralExp object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitLiteralExp(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitLoopExp(org.eclipse.qvtd.doc.miniocl.@NonNull LoopExp object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitLoopExp(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitNamedElement(org.eclipse.qvtd.doc.miniocl.@NonNull NamedElement object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitNamedElement(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitNamespace(org.eclipse.qvtd.doc.miniocl.@NonNull Namespace object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitNamespace(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitNullLiteralExp(org.eclipse.qvtd.doc.miniocl.@NonNull NullLiteralExp object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitNullLiteralExp(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitOCLExpression(org.eclipse.qvtd.doc.miniocl.@NonNull OCLExpression object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitOCLExpression(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitOpaqueExpression(org.eclipse.qvtd.doc.miniocl.@NonNull OpaqueExpression object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitOpaqueExpression(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitOperation(org.eclipse.qvtd.doc.miniocl.@NonNull Operation object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitOperation(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitOperationCallExp(org.eclipse.qvtd.doc.miniocl.@NonNull OperationCallExp object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitOperationCallExp(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitPackage(org.eclipse.qvtd.doc.miniocl.@NonNull Package object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitPackage(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitParameter(org.eclipse.qvtd.doc.miniocl.@NonNull Parameter object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitParameter(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitPrimitiveLiteralExp(org.eclipse.qvtd.doc.miniocl.@NonNull PrimitiveLiteralExp object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitPrimitiveLiteralExp(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitProperty(org.eclipse.qvtd.doc.miniocl.@NonNull Property object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitProperty(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitPropertyCallExp(org.eclipse.qvtd.doc.miniocl.@NonNull PropertyCallExp object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitPropertyCallExp(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitRoot(org.eclipse.qvtd.doc.miniocl.@NonNull Root object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitRoot(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitTypedElement(org.eclipse.qvtd.doc.miniocl.@NonNull TypedElement object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitTypedElement(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitVariable(org.eclipse.qvtd.doc.miniocl.@NonNull Variable object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitVariable(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
@Override
public R visitVariableExp(org.eclipse.qvtd.doc.miniocl.@NonNull VariableExp object) {
@Nullable P prologue = preVisit(object);
try {
R result = delegate.visitVariableExp(object);
return postVisit(object, prologue, result);
}
catch (Throwable e) {
return badVisit(object, prologue, e);
}
}
}