Groovy Documentation

org.codehaus.groovy.transform
[Java] Class AbstractInterruptibleASTTransformation

java.lang.Object
  org.codehaus.groovy.ast.CodeVisitorSupport
      org.codehaus.groovy.ast.ClassCodeVisitorSupport
          org.codehaus.groovy.transform.AbstractInterruptibleASTTransformation
All Implemented Interfaces:
ASTTransformation, org.objectweb.asm.Opcodes

public abstract class AbstractInterruptibleASTTransformation
extends ClassCodeVisitorSupport

Base class for AST Transformations which will automatically throw an java.lang.InterruptedException when some conditions are met.

Authors:
Cedric Champeau
Hamlet D'Arcy
Since:
1.8.0


Field Summary
protected static java.lang.String CHECK_METHOD_START_MEMBER

protected static java.lang.String PROPAGATE_TO_COMPILE_UNIT

protected static java.lang.String THROWN_EXCEPTION_TYPE

protected boolean applyToAllClasses

protected boolean checkOnMethodStart

protected SourceUnit source

protected ClassNode thrownExceptionType

 
Method Summary
protected Expression createCondition()

Subclasses should implement this method to set the condition of the interruption statement

protected Statement createInterruptStatement()

@return Returns the interruption check statement.

protected static boolean getBooleanAnnotationParameter(AnnotationNode node, java.lang.String parameterName, boolean defaultValue)

protected static ClassNode getClassAnnotationParameter(AnnotationNode node, java.lang.String parameterName, ClassNode defaultValue)

protected java.lang.String getErrorMessage()

Subclasses should implement this method to provide good error resolution.

protected SourceUnit getSourceUnit()

protected static void internalError(java.lang.String message)

protected void setupTransform(AnnotationNode node)

protected ClassNode type()

void visit(ASTNode[] nodes, SourceUnit source)

void visitDoWhileLoop(DoWhileStatement doWhileStatement)

void visitForLoop(ForStatement forStatement)

void visitWhileLoop(WhileStatement whileStatement)

protected Statement wrapBlock(Statement statement)

Takes a statement and wraps it into a block statement which first element is the interruption check statement.

 
Methods inherited from class ClassCodeVisitorSupport
addError, getSourceUnit, visitAnnotations, visitAssertStatement, visitBlockStatement, visitBreakStatement, visitCaseStatement, visitCatchStatement, visitClass, visitClassCodeContainer, visitConstructor, visitConstructorOrMethod, visitContinueStatement, visitDeclarationExpression, visitDoWhileLoop, visitExpressionStatement, visitField, visitForLoop, visitIfElse, visitImports, visitMethod, visitObjectInitializerStatements, visitPackage, visitProperty, visitReturnStatement, visitStatement, visitSwitch, visitSynchronizedStatement, visitThrowStatement, visitTryCatchFinally, visitWhileLoop
 
Methods inherited from class CodeVisitorSupport
visitArgumentlistExpression, visitArrayExpression, visitAssertStatement, visitAttributeExpression, visitBinaryExpression, visitBitwiseNegationExpression, visitBlockStatement, visitBooleanExpression, visitBreakStatement, visitBytecodeExpression, visitCaseStatement, visitCastExpression, visitCatchStatement, visitClassExpression, visitClosureExpression, visitClosureListExpression, visitConstantExpression, visitConstructorCallExpression, visitContinueStatement, visitDeclarationExpression, visitDoWhileLoop, visitEmptyStatement, visitExpressionStatement, visitFieldExpression, visitForLoop, visitGStringExpression, visitIfElse, visitListExpression, visitListOfExpressions, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitPropertyExpression, visitRangeExpression, visitReturnStatement, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitStaticMethodCallExpression, visitSwitch, visitSynchronizedStatement, visitTernaryExpression, visitThrowStatement, visitTryCatchFinally, visitTupleExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitVariableExpression, visitWhileLoop
 
Methods inherited from class java.lang.Object
java.lang.Object#wait(long), java.lang.Object#wait(long, int), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()
 

Field Detail

CHECK_METHOD_START_MEMBER

protected static final java.lang.String CHECK_METHOD_START_MEMBER


PROPAGATE_TO_COMPILE_UNIT

protected static final java.lang.String PROPAGATE_TO_COMPILE_UNIT


THROWN_EXCEPTION_TYPE

protected static final java.lang.String THROWN_EXCEPTION_TYPE


applyToAllClasses

protected boolean applyToAllClasses


checkOnMethodStart

protected boolean checkOnMethodStart


source

protected SourceUnit source


thrownExceptionType

protected ClassNode thrownExceptionType


 
Method Detail

createCondition

protected Expression createCondition()
Subclasses should implement this method to set the condition of the interruption statement


createInterruptStatement

protected Statement createInterruptStatement()
Returns:
Returns the interruption check statement.


getBooleanAnnotationParameter

protected static boolean getBooleanAnnotationParameter(AnnotationNode node, java.lang.String parameterName, boolean defaultValue)


getClassAnnotationParameter

protected static ClassNode getClassAnnotationParameter(AnnotationNode node, java.lang.String parameterName, ClassNode defaultValue)


getErrorMessage

protected java.lang.String getErrorMessage()
Subclasses should implement this method to provide good error resolution.


getSourceUnit

protected SourceUnit getSourceUnit()


internalError

protected static void internalError(java.lang.String message)


setupTransform

protected void setupTransform(AnnotationNode node)


type

protected ClassNode type()


visit

public void visit(ASTNode[] nodes, SourceUnit source)


visitDoWhileLoop

}
public final void visitDoWhileLoop(DoWhileStatement doWhileStatement)


visitForLoop

}
public final void visitForLoop(ForStatement forStatement)


visitWhileLoop

}
}
public final void visitWhileLoop(WhileStatement whileStatement)


wrapBlock

protected final Statement wrapBlock(Statement statement)
Takes a statement and wraps it into a block statement which first element is the interruption check statement.
Parameters:
statement - the statement to be wrapped
Returns:
a block statement which first element is for checking interruption, and the second one the statement to be wrapped.


 

Groovy Documentation