Groovy Documentation

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

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

@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 static methods

protected org.codehaus.groovy.ast.AnnotationNode getMarkerAnnotation()

java.lang.Class getStaticImplementation()

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)

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

protected org.codehaus.groovy.ast.MethodNode populateAutowiredApiLookupMethod(org.codehaus.groovy.ast.ClassNode classNode, 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()

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, int), java.lang.Object#wait(long), 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 static methods
Returns:
A class or null if non is provided


getMarkerAnnotation

protected org.codehaus.groovy.ast.AnnotationNode getMarkerAnnotation()


getStaticImplementation

public java.lang.Class getStaticImplementation()


isCandidateInstanceMethod

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


isStaticCandidateMethod

protected boolean isStaticCandidateMethod(default method that throws a 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

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


performInjectionOnAnnotatedClass

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


populateAutowiredApiLookupMethod

protected org.codehaus.groovy.ast.MethodNode populateAutowiredApiLookupMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.ClassNode implementationNode, assNode implementationNode, 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()


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