Overview | Package | Class | Deprecated | Index | Help
| Groovy Documentation
| FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## 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()`
`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 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()` 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()

### isCandidateInstanceMethod

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

### isStaticCandidateMethod

    protected boolean isStaticCandidateMethod( 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)

  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 classNode, org.codehaus.groovy.ast.ClassNode implementationNode, DIFIER, implementationNode,Z 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