Package asteroid.transformer
Class AbstractClassNodeTransformer
- java.lang.Object
-
- org.codehaus.groovy.ast.CodeVisitorSupport
-
- org.codehaus.groovy.ast.ClassCodeVisitorSupport
-
- org.codehaus.groovy.ast.ClassCodeExpressionTransformer
-
- asteroid.transformer.AbstractTransformer
-
- asteroid.transformer.AbstractClassNodeTransformer
-
- All Implemented Interfaces:
Transformer,ExpressionTransformer,GroovyClassVisitor,GroovyCodeVisitor,ErrorCollecting
- Direct Known Subclasses:
TranslateToGlobalTransform
public abstract class AbstractClassNodeTransformer extends AbstractTransformer
ThisTransformercan be used to transformClassNodenodes. To locate the classes you want to transform, a criteria in form ofClosurecan be passed in the constructor. The criteria must be aClosurereceiving as unique parameter aClassNodeand returning aBooleanvalue. If the closure returns true, then the transformation will be applied. There are some static methods creating some default criterias:- Since:
- 0.2.0
-
-
Constructor Summary
Constructors Constructor Description AbstractClassNodeTransformer(SourceUnit sourceUnit, Closure<Boolean> criteria)Every instance needs the source unit and the name of the class it's going to transform.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract voidtransformClass(ClassNode classNode)Within this method developer could modify theClassNodeinstance.voidvisitClass(ClassNode classNode)This function has to be implemented in order the transformation to traverse everyClassNodein the AST-
Methods inherited from class asteroid.transformer.AbstractTransformer
getModule, getModulePackageName, getSourceUnit
-
Methods inherited from class org.codehaus.groovy.ast.ClassCodeExpressionTransformer
transform, visitAnnotations, visitAssertStatement, visitCaseStatement, visitConstructorOrMethod, visitDoWhileLoop, visitExpressionStatement, visitField, visitForLoop, visitIfElse, visitProperty, visitReturnStatement, visitSwitch, visitSynchronizedStatement, visitThrowStatement, visitWhileLoop
-
Methods inherited from class org.codehaus.groovy.ast.ClassCodeVisitorSupport
addError, visitBlockStatement, visitBreakStatement, visitCatchStatement, visitClassCodeContainer, visitConstructor, visitContinueStatement, visitDeclarationExpression, visitImports, visitMethod, visitObjectInitializerStatements, visitPackage, visitStatement, visitTryCatchFinally
-
Methods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport
visitArgumentlistExpression, visitArrayExpression, visitAttributeExpression, visitBinaryExpression, visitBitwiseNegationExpression, visitBooleanExpression, visitBytecodeExpression, visitCastExpression, visitClassExpression, visitClosureExpression, visitClosureListExpression, visitConstantExpression, visitConstructorCallExpression, visitEmptyStatement, visitFieldExpression, visitGStringExpression, visitListExpression, visitListOfExpressions, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitPropertyExpression, visitRangeExpression, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitStaticMethodCallExpression, visitTernaryExpression, visitTupleExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitVariableExpression
-
-
-
-
Constructor Detail
-
AbstractClassNodeTransformer
public AbstractClassNodeTransformer(SourceUnit sourceUnit, Closure<Boolean> criteria)
Every instance needs the source unit and the name of the class it's going to transform. To find classes eligible to be transformed by thisTransformeraClosurereturning a boolean is used as a criteria. You can create your own criteria or use one of the static methods present in this class. These methods will create a pre-defined criteria. TheClosureused as a criteria will receive aClassNodeand return aBooleanvalue. If the closure returns true then the transformation will be apply, if not theClassNodewill be discarded.- Parameters:
sourceUnit- Needed to apply scopecriteria- used to locate target classes look for the qualified class)- Since:
- 0.2.0
- See Also:
Criterias.byClassNodeNameContains(String)
-
-
Method Detail
-
visitClass
public void visitClass(ClassNode classNode)
This function has to be implemented in order the transformation to traverse everyClassNodein the AST- Specified by:
visitClassin interfaceGroovyClassVisitor- Specified by:
visitClassin interfaceTransformer- Overrides:
visitClassin classClassCodeVisitorSupport- Parameters:
classNode- The nextClassNodeto traverse
-
-