public abstract class AbstractGrailsArtefactTransformer extends java.lang.Object implements GrailsArtefactClassInjector, AnnotatedClassInjector, java.lang.Comparable
| Modifier and Type | Field and Description |
|---|---|
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 |
EMPTY_CLASS_ARRAY, ZERO_ARGS, ZERO_PARAMETERSPRIVATE_STATIC_MODIFIER| Constructor and Description |
|---|
AbstractGrailsArtefactTransformer() |
| Modifier and Type | Method and Description |
|---|---|
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<java.lang.String,org.codehaus.groovy.ast.ClassNode> 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<java.lang.String,org.codehaus.groovy.ast.ClassNode> 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() |
abstract java.lang.Class |
getInstanceImplementation()
The class that provides the implementation of all instance methods and properties
|
protected org.codehaus.groovy.ast.AnnotationNode |
getMarkerAnnotation()
A marker annotation to be applied to added methods, defaults to null
|
abstract java.lang.Class |
getStaticImplementation()
The class that provides static methods
|
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.ast.ClassNode classNode)
Handles injection of properties, methods etc.
|
void |
performInjection(org.codehaus.groovy.control.SourceUnit source,
org.codehaus.groovy.classgen.GeneratorContext context,
org.codehaus.groovy.ast.ClassNode classNode)
Handles injection of properties, methods etc.
|
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)
Handles injection of properties, methods etc.
|
void |
performInjectionOnAnnotatedClass(org.codehaus.groovy.control.SourceUnit source,
org.codehaus.groovy.classgen.GeneratorContext context,
org.codehaus.groovy.ast.ClassNode classNode)
Performs injection on an annotated entity
|
protected void |
performInstanceImplementationInjection(org.codehaus.groovy.control.SourceUnit source,
org.codehaus.groovy.ast.ClassNode classNode,
java.util.Map<java.lang.String,org.codehaus.groovy.ast.ClassNode> genericsPlaceholders,
java.lang.Class instanceImplementation) |
protected void |
performStaticImplementationInjection(org.codehaus.groovy.ast.ClassNode classNode,
java.util.Map<java.lang.String,org.codehaus.groovy.ast.ClassNode> 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<java.lang.String,org.codehaus.groovy.ast.ClassNode> |
resolveGenericsPlaceHolders(org.codehaus.groovy.ast.ClassNode classNode) |
protected boolean |
shouldSkipInjection(org.codehaus.groovy.ast.ClassNode classNode) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitshouldInjectprotected static final org.codehaus.groovy.ast.ClassNode OBJECT_CLASS
public static final int PUBLIC_STATIC_MODIFIER
public static final java.lang.String CURRENT_PREFIX
public static final java.lang.String METHOD_MISSING_METHOD_NAME
public static final java.lang.String STATIC_METHOD_MISSING_METHOD_NAME
public java.lang.String[] getArtefactTypes()
getArtefactTypes in interface GrailsArtefactClassInjectorprotected java.lang.String getArtefactType()
public int compareTo(java.lang.Object o)
compareTo in interface java.lang.ComparableComparable.compareTo(Object)public void performInjection(org.codehaus.groovy.control.SourceUnit source,
org.codehaus.groovy.classgen.GeneratorContext context,
org.codehaus.groovy.ast.ClassNode classNode)
ClassInjectorperformInjection in interface ClassInjectorsource - The source unitcontext - The generator contextclassNode - The ClassNode instancepublic void performInjectionOnAnnotatedClass(org.codehaus.groovy.control.SourceUnit source,
org.codehaus.groovy.ast.ClassNode classNode)
ClassInjectorperformInjectionOnAnnotatedClass in interface ClassInjectorsource - The source unitclassNode - The ClassNode instancepublic void performInjectionOnAnnotatedClass(org.codehaus.groovy.control.SourceUnit source,
org.codehaus.groovy.classgen.GeneratorContext context,
org.codehaus.groovy.ast.ClassNode classNode)
AnnotatedClassInjectorperformInjectionOnAnnotatedClass in interface AnnotatedClassInjectorsource - The source unitclassNode - The class nodeprotected void performInstanceImplementationInjection(org.codehaus.groovy.control.SourceUnit source,
org.codehaus.groovy.ast.ClassNode classNode,
java.util.Map<java.lang.String,org.codehaus.groovy.ast.ClassNode> genericsPlaceholders,
java.lang.Class instanceImplementation)
protected void performStaticImplementationInjection(org.codehaus.groovy.ast.ClassNode classNode,
java.util.Map<java.lang.String,org.codehaus.groovy.ast.ClassNode> genericsPlaceholders,
java.lang.Class staticImplementation)
protected void addEnhancedAnnotation(org.codehaus.groovy.ast.ClassNode classNode)
protected boolean shouldSkipInjection(org.codehaus.groovy.ast.ClassNode classNode)
protected boolean hasArtefactAnnotation(org.codehaus.groovy.ast.ClassNode classNode)
protected boolean isValidTargetClassNode(org.codehaus.groovy.ast.ClassNode classNode)
protected boolean isValidArtefactType()
protected java.util.Map<java.lang.String,org.codehaus.groovy.ast.ClassNode> resolveGenericsPlaceHolders(org.codehaus.groovy.ast.ClassNode classNode)
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<java.lang.String,org.codehaus.groovy.ast.ClassNode> 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<java.lang.String,org.codehaus.groovy.ast.ClassNode> genericsPlaceholders)
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 requiresStaticLookupMethod()
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 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 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 void performInjectionInternal(java.lang.String apiInstanceProperty,
org.codehaus.groovy.control.SourceUnit source,
org.codehaus.groovy.ast.ClassNode classNode)
apiInstanceProperty - source - The sourceclassNode - The class nodepublic abstract java.lang.Class getInstanceImplementation()
public abstract java.lang.Class getStaticImplementation()
public void performInjection(org.codehaus.groovy.control.SourceUnit source,
org.codehaus.groovy.ast.ClassNode classNode)
ClassInjectorperformInjection in interface ClassInjectorsource - The source unitclassNode - The ClassNode instanceprotected org.codehaus.groovy.ast.AnnotationNode getMarkerAnnotation()