org.codehaus.groovy.grails.compiler.injection.test
Class TestMixinTransformation

java.lang.Object
  extended by org.codehaus.groovy.grails.compiler.injection.test.TestMixinTransformation
All Implemented Interfaces:
org.codehaus.groovy.transform.ASTTransformation
Direct Known Subclasses:
TestForTransformation

public class TestMixinTransformation
extends java.lang.Object
implements org.codehaus.groovy.transform.ASTTransformation

An AST transformation to be applied to tests for adding behavior to a target test class.

Since:
2.0

Field Summary
static org.codehaus.groovy.ast.ClassNode GROOVY_OBJECT_CLASS_NODE
           
static org.codehaus.groovy.ast.AnnotationNode MIXIN_METHOD_ANNOTATION
           
static java.lang.String OBJECT_CLASS
           
static java.lang.String SET_UP_METHOD
           
static java.lang.String SPEC_CLASS
           
static java.lang.String TEAR_DOWN_METHOD
           
static org.codehaus.groovy.ast.expr.VariableExpression THIS_EXPRESSION
           
 
Constructor Summary
TestMixinTransformation()
           
 
Method Summary
protected  void addMethodCallsToMethod(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String name, java.util.List<org.codehaus.groovy.ast.MethodNode> methods)
           
protected  void error(org.codehaus.groovy.control.SourceUnit source, java.lang.String me)
           
protected  org.codehaus.groovy.ast.expr.ListExpression getListOfClasses(org.codehaus.groovy.ast.AnnotationNode node)
           
protected  org.codehaus.groovy.ast.stmt.BlockStatement getOrCreateMethodBody(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode setupMethod, java.lang.String name)
           
protected  org.codehaus.groovy.ast.stmt.BlockStatement getOrCreateNoArgsMethodBody(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String name)
           
protected  boolean hasAnnotation(org.codehaus.groovy.ast.MethodNode mixinMethod, java.lang.Class<?> beforeClass)
           
protected  boolean hasDeclaredMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode mixinMethod)
           
static boolean isAddableMethod(org.codehaus.groovy.ast.MethodNode declaredMethod)
           
protected  boolean isCandidateMethod(org.codehaus.groovy.ast.MethodNode declaredMethod)
           
static boolean isJunit3Test(org.codehaus.groovy.ast.ClassNode classNode)
           
static boolean isSpockTest(org.codehaus.groovy.ast.ClassNode classNode)
           
 void visit(org.codehaus.groovy.ast.ASTNode[] astNodes, org.codehaus.groovy.control.SourceUnit source)
           
 void weaveMixinsIntoClass(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.expr.ListExpression values)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MIXIN_METHOD_ANNOTATION

public static final org.codehaus.groovy.ast.AnnotationNode MIXIN_METHOD_ANNOTATION

OBJECT_CLASS

public static final java.lang.String OBJECT_CLASS
See Also:
Constant Field Values

SPEC_CLASS

public static final java.lang.String SPEC_CLASS
See Also:
Constant Field Values

SET_UP_METHOD

public static final java.lang.String SET_UP_METHOD
See Also:
Constant Field Values

THIS_EXPRESSION

public static final org.codehaus.groovy.ast.expr.VariableExpression THIS_EXPRESSION

TEAR_DOWN_METHOD

public static final java.lang.String TEAR_DOWN_METHOD
See Also:
Constant Field Values

GROOVY_OBJECT_CLASS_NODE

public static final org.codehaus.groovy.ast.ClassNode GROOVY_OBJECT_CLASS_NODE
Constructor Detail

TestMixinTransformation

public TestMixinTransformation()
Method Detail

visit

public void visit(org.codehaus.groovy.ast.ASTNode[] astNodes,
                  org.codehaus.groovy.control.SourceUnit source)
Specified by:
visit in interface org.codehaus.groovy.transform.ASTTransformation

getListOfClasses

protected org.codehaus.groovy.ast.expr.ListExpression getListOfClasses(org.codehaus.groovy.ast.AnnotationNode node)

weaveMixinsIntoClass

public void weaveMixinsIntoClass(org.codehaus.groovy.ast.ClassNode classNode,
                                 org.codehaus.groovy.ast.expr.ListExpression values)

hasDeclaredMethod

protected boolean hasDeclaredMethod(org.codehaus.groovy.ast.ClassNode classNode,
                                    org.codehaus.groovy.ast.MethodNode mixinMethod)

hasAnnotation

protected boolean hasAnnotation(org.codehaus.groovy.ast.MethodNode mixinMethod,
                                java.lang.Class<?> beforeClass)

addMethodCallsToMethod

protected void addMethodCallsToMethod(org.codehaus.groovy.ast.ClassNode classNode,
                                      java.lang.String name,
                                      java.util.List<org.codehaus.groovy.ast.MethodNode> methods)

getOrCreateNoArgsMethodBody

protected org.codehaus.groovy.ast.stmt.BlockStatement getOrCreateNoArgsMethodBody(org.codehaus.groovy.ast.ClassNode classNode,
                                                                                  java.lang.String name)

getOrCreateMethodBody

protected org.codehaus.groovy.ast.stmt.BlockStatement getOrCreateMethodBody(org.codehaus.groovy.ast.ClassNode classNode,
                                                                            org.codehaus.groovy.ast.MethodNode setupMethod,
                                                                            java.lang.String name)

isJunit3Test

public static boolean isJunit3Test(org.codehaus.groovy.ast.ClassNode classNode)

isSpockTest

public static boolean isSpockTest(org.codehaus.groovy.ast.ClassNode classNode)

isCandidateMethod

protected boolean isCandidateMethod(org.codehaus.groovy.ast.MethodNode declaredMethod)

isAddableMethod

public static boolean isAddableMethod(org.codehaus.groovy.ast.MethodNode declaredMethod)

error

protected void error(org.codehaus.groovy.control.SourceUnit source,
                     java.lang.String me)