AbstractGrailsArtefactTransformer (Grails 2.3.8)
Date: 2014-04-24

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:
  AnnotatedClassInjector, GrailsArtefactClassInjector, java.lang.Comparable

    @java.lang.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`

Method Summary
`protected void` | `addApiLookupFieldAndSetter(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.ClassNode implementationNode, java.lang.String apiProperty, org.codehaus.groovy.ast.expr.Expression initialValueExpression)`
`protected void` | `addDelegateInstanceMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.expr.Expression delegate, org.codehaus.groovy.ast.MethodNode declaredMethod, org.codehaus.groovy.ast.AnnotationNode markerAnnotation, java.util.Map genericsPlaceholders)`
`protected void` | `addDelegateStaticMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.expr.MethodCallExpression apiLookupMethod, org.codehaus.groovy.ast.MethodNode declaredMethod, java.util.Map genericsPlaceholders)`
`protected void` | `addEnhancedAnnotation(org.codehaus.groovy.ast.ClassNode classNode)`
`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
`protected org.codehaus.groovy.ast.AnnotationNode` | `getMarkerAnnotation()`
`java.lang.Class` | `getStaticImplementation()`
`protected boolean` | `hasArtefactAnnotation(org.codehaus.groovy.ast.ClassNode classNode)`
`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)`
`protected boolean` | `isStaticMethodExcluded(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode declaredMethod)`
`protected boolean` | `isStaticMethodIncluded(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode declaredMethod)`
`protected boolean` | `isValidArtefactType()`
`protected boolean` | `isValidTargetClassNode(org.codehaus.groovy.ast.ClassNode classNode)`
`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
`void` | `performInjectionOnAnnotatedClass(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 void` | `performInstanceImplementationInjection(org.codehaus.groovy.control.SourceUnit source, org.codehaus.groovy.ast.ClassNode classNode, java.util.Map genericsPlaceholders, java.lang.Class instanceImplementation)`
`protected void` | `performStaticImplementationInjection(org.codehaus.groovy.ast.ClassNode classNode, java.util.Map genericsPlaceholders, java.lang.Class staticImplementation)`
`protected org.codehaus.groovy.ast.MethodNode` | `populateAutowiredApiLookupMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.ClassNode implementationNode, java.lang.String apiProperty, 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.
`protected java.util.Map` | `resolveGenericsPlaceHolders(org.codehaus.groovy.ast.ClassNode classNode)`
`protected boolean` | `shouldSkipInjection(org.codehaus.groovy.ast.ClassNode classNode)`

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

Method Detail

### addApiLookupFieldAndSetter

    protected void addApiLookupFieldAndSetter(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.ClassNode implementationNode, java.lang.String apiProperty, org.codehaus.groovy.ast.expr.Expression initialValueExpression)

### addDelegateInstanceMethod

    protected void addDelegateInstanceMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.expr.Expression delegate, org.codehaus.groovy.ast.MethodNode declaredMethod, org.codehaus.groovy.ast.AnnotationNode markerAnnotation, java.util.Map genericsPlaceholders)

### addDelegateStaticMethod

    protected void addDelegateStaticMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.expr.MethodCallExpression apiLookupMethod, org.codehaus.groovy.ast.MethodNode declaredMethod, java.util.Map genericsPlaceholders)

### addEnhancedAnnotation

    protected void addEnhancedAnnotation(org.codehaus.groovy.ast.ClassNode classNode)

### 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

### getMarkerAnnotation

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

### getStaticImplementation

    public java.lang.Class getStaticImplementation()

### hasArtefactAnnotation

    protected boolean hasArtefactAnnotation(org.codehaus.groovy.ast.ClassNode classNode)

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

### isStaticMethodExcluded

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

### isStaticMethodIncluded

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

### isValidArtefactType

    protected boolean isValidArtefactType()

### isValidTargetClassNode

    protected boolean isValidTargetClassNode(org.codehaus.groovy.ast.ClassNode classNode)

### 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

### performInjectionOnAnnotatedClass

    @java.lang.Overridepublic void performInjectionOnAnnotatedClass(SourceUnit source, ClassNode classNode) {
    public void performInjectionOnAnnotatedClass(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)

### performInstanceImplementationInjection

    protected void performInstanceImplementationInjection(org.codehaus.groovy.control.SourceUnit source, org.codehaus.groovy.ast.ClassNode classNode, java.util.Map genericsPlaceholders, java.lang.Class instanceImplementation)

### performStaticImplementationInjection

    protected void performStaticImplementationInjection(org.codehaus.groovy.ast.ClassNode classNode, java.util.Map genericsPlaceholders, java.lang.Class staticImplementation)

### populateAutowiredApiLookupMethod

    protected org.codehaus.groovy.ast.MethodNode populateAutowiredApiLookupMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.ClassNode implementationNode, java.lang.String apiProperty, 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

### resolveGenericsPlaceHolders

    protected java.util.Map resolveGenericsPlaceHolders(org.codehaus.groovy.ast.ClassNode classNode)

### shouldSkipInjection

    protected boolean shouldSkipInjection(org.codehaus.groovy.ast.ClassNode classNode)

Groovy Documentation