Groovy Documentation

org.codehaus.groovy.grails.compiler.injection
[Java] Class AbstractGrailsArtefactTransformer

java.lang.Object
  org.codehaus.groovy.grails.compiler.injection.AbstractGrailsArtefactTransformer
All Implemented Interfaces:
java.lang.Comparable, GrailsArtefactClassInjector

@SuppressWarnings("rawtypes")
public abstract class AbstractGrailsArtefactTransformer
extends java.lang.Object

Abstract transformer that takes an implementation class and creates methods in a target ClassNode that delegate to that implementation class. Subclasses should override to provide the implementation class details

Authors:
Graeme Rocher
Since:
2.0


Field Summary
static java.lang.String CURRENT_PREFIX

static java.lang.String METHOD_MISSING_METHOD_NAME

protected static org.codehaus.groovy.ast.ClassNode OBJECT_CLASS

static int PUBLIC_STATIC_MODIFIER

static java.lang.String STATIC_METHOD_MISSING_METHOD_NAME

protected static org.codehaus.groovy.ast.expr.VariableExpression THIS_EXPRESSION

 
Method Summary
int compareTo(java.lang.Object o)

Used for ordering not equality.

java.lang.String getArtefactType()

java.lang.Class getInstanceImplementation()

The class that provides the implementation of all instance methods and properties

java.lang.Class getStaticImplementation()

The class that provides static methods

protected boolean isCandidateInstanceMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode declaredMethod)

protected boolean isStaticCandidateMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode declaredMethod)

void performInjection(org.codehaus.groovy.control.SourceUnit source, org.codehaus.groovy.classgen.GeneratorContext context, org.codehaus.groovy.ast.ClassNode classNode)

void performInjection(org.codehaus.groovy.control.SourceUnit source, org.codehaus.groovy.ast.ClassNode classNode)

protected void performInjectionInternal(java.lang.String apiInstanceProperty, org.codehaus.groovy.control.SourceUnit source, org.codehaus.groovy.ast.ClassNode classNode)

Subclasses can override to provide additional transformation

protected org.codehaus.groovy.ast.MethodNode populateAutowiredApiLookupMethod(org.codehaus.groovy.ast.ClassNode implementationNode, java.lang.String apiInstanceProperty, java.lang.String methodName, org.codehaus.groovy.ast.stmt.BlockStatement methodBody)

protected org.codehaus.groovy.ast.MethodNode populateDefaultApiLookupMethod(org.codehaus.groovy.ast.ClassNode implementationNode, java.lang.String apiInstanceProperty, java.lang.String methodName, org.codehaus.groovy.ast.stmt.BlockStatement methodBody)

protected boolean requiresAutowiring()

If the API requires autowiring then a

Autowired:
property will be added.

protected boolean requiresStaticLookupMethod()

Subclasses should override in the instance API requires a static lookup method instead of autowiring.

 
Methods inherited from class java.lang.Object
java.lang.Object#wait(), java.lang.Object#wait(long), java.lang.Object#wait(long, int), 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

CURRENT_PREFIX

public static final java.lang.String CURRENT_PREFIX


METHOD_MISSING_METHOD_NAME

public static final java.lang.String METHOD_MISSING_METHOD_NAME


OBJECT_CLASS

protected static final org.codehaus.groovy.ast.ClassNode OBJECT_CLASS


PUBLIC_STATIC_MODIFIER

public static final int PUBLIC_STATIC_MODIFIER


STATIC_METHOD_MISSING_METHOD_NAME

public static final java.lang.String STATIC_METHOD_MISSING_METHOD_NAME


THIS_EXPRESSION

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


 
Method Detail

compareTo

public int compareTo(java.lang.Object o)
Used for ordering not equality. Note: this class has a natural ordering that is inconsistent with equals.
See Also:
java.lang.Comparable#compareTo(java.lang.Object)


getArtefactType

public java.lang.String getArtefactType()


getInstanceImplementation

public java.lang.Class getInstanceImplementation()
The class that provides the implementation of all instance methods and properties
Returns:
A class whose methods contain a first argument of type object that is the instance


getStaticImplementation

public java.lang.Class getStaticImplementation()
The class that provides static methods
Returns:
A class or null if non is provided


isCandidateInstanceMethod

protected boolean isCandidateInstanceMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode declaredMethod)


isStaticCandidateMethod

protected boolean isStaticCandidateMethod(@SuppressWarnings("unused") org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode declaredMethod)


performInjection

public void performInjection(org.codehaus.groovy.control.SourceUnit source, org.codehaus.groovy.classgen.GeneratorContext context, org.codehaus.groovy.ast.ClassNode classNode)


performInjection

public void performInjection(org.codehaus.groovy.control.SourceUnit source, org.codehaus.groovy.ast.ClassNode classNode)


performInjectionInternal

@SuppressWarnings("unused")
protected void performInjectionInternal(java.lang.String apiInstanceProperty, org.codehaus.groovy.control.SourceUnit source, org.codehaus.groovy.ast.ClassNode classNode)
Subclasses can override to provide additional transformation
Parameters:
apiInstanceProperty
source - The source
classNode - The class node


populateAutowiredApiLookupMethod

protected org.codehaus.groovy.ast.MethodNode populateAutowiredApiLookupMethod(org.codehaus.groovy.ast.ClassNode implementationNode, @SuppressWarnings("unused") java.lang.String apiInstanceProperty, java.lang.String methodName, org.codehaus.groovy.ast.stmt.BlockStatement methodBody)


populateDefaultApiLookupMethod

protected org.codehaus.groovy.ast.MethodNode populateDefaultApiLookupMethod(org.codehaus.groovy.ast.ClassNode implementationNode, java.lang.String apiInstanceProperty, java.lang.String methodName, org.codehaus.groovy.ast.stmt.BlockStatement methodBody)


requiresAutowiring

protected boolean requiresAutowiring()
If the API requires autowiring then a
Autowired:
property will be added. If not a private field that instantiates the API will be crated. Defaults to true.
Returns:
Whether autowiring is required


requiresStaticLookupMethod

protected boolean requiresStaticLookupMethod()
Subclasses should override in the instance API requires a static lookup method instead of autowiring. Defaults to false.
Returns:
Whether a static lookup method is used for the instance API


 

Groovy Documentation