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.

protected java.lang.String getArtefactType()

java.lang.String[] getArtefactTypes()

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

protected java.lang.String getArtefactType()


getArtefactTypes

public java.lang.String[] getArtefactTypes()


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