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 GrailsASTUtils

    java.lang.Object
      org.codehaus.groovy.grails.compiler.injection.GrailsASTUtils

    public class GrailsASTUtils
    extends java.lang.Object

Helper methods for working with Groovy AST trees.

Authors:
  Graeme Rocher

Since:
  0.3

Field Summary
`static Token` | `ASSIGNMENT_OPERATOR`
`static java.lang.String` | `DOMAIN_DIR`
`static Token` | `EQUALS_OPERATOR`
`static java.lang.String` | `GRAILS_APP_DIR`
`static java.lang.String` | `METHOD_MISSING_METHOD_NAME`
`static org.codehaus.groovy.ast.ClassNode` | `MISSING_METHOD_EXCEPTION`
`static Token` | `NOT_EQUALS_OPERATOR`
`static org.codehaus.groovy.ast.expr.ConstantExpression` | `NULL_EXPRESSION`
`static java.lang.String` | `STATIC_METHOD_MISSING_METHOD_NAME`

Method Summary
`static void` | `addAnnotationIfNecessary(org.codehaus.groovy.ast.ClassNode classNode, java.lang.Class entityClass)`
`static void` | `addDelegateConstructor(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode constructorMethod)` Adds or modifies an existing constructor to delegate to the given static constructor method for initialization logic.
`static org.codehaus.groovy.ast.MethodNode` | `addDelegateInstanceMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.expr.Expression delegate, org.codehaus.groovy.ast.MethodNode declaredMethod)` Adds a delegate method to the target class node where the first argument is to the delegate method is 'this'.
`static org.codehaus.groovy.ast.MethodNode` | `addDelegateInstanceMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.expr.Expression delegate, org.codehaus.groovy.ast.MethodNode declaredMethod, boolean thisAsFirstArgument)` Adds a delegate method to the target class node where the first argument is to the delegate method is 'this'.
`static void` | `addDelegateInstanceMethods(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.ClassNode delegateNode, org.codehaus.groovy.ast.expr.Expression delegateInstance)`
`static void` | `addDelegateInstanceMethods(org.codehaus.groovy.ast.ClassNode supportedSuperType, org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.ClassNode delegateNode, org.codehaus.groovy.ast.expr.Expression delegateInstance)`
`static org.codehaus.groovy.ast.MethodNode` | `addDelegateStaticMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode delegateMethod)` Adds a static method call to given class node that delegates to the given method
`static org.codehaus.groovy.ast.MethodNode` | `addDelegateStaticMethod(org.codehaus.groovy.ast.expr.Expression expression, org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode delegateMethod)` Adds a static method to the given class node that delegates to the given method and resolves the object to invoke the method on from the given expression.
`static void` | `addFieldIfNonExistent(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.ClassNode fieldType, java.lang.String fieldName)`
`static void` | `addMethodIfNotPresent(org.codehaus.groovy.ast.ClassNode controllerClassNode, org.codehaus.groovy.ast.MethodNode methodNode)`
`static org.codehaus.groovy.ast.expr.ArgumentListExpression` | `createArgumentListFromParameters(org.codehaus.groovy.ast.Parameter[] parameterTypes, boolean thisAsFirstArgument)` Creates an argument list from the given parameter types.
`static org.codehaus.groovy.ast.stmt.ExpressionStatement` | `createPrintlnStatement(java.lang.String message)`
`static org.codehaus.groovy.ast.stmt.ExpressionStatement` | `createPrintlnStatement(java.lang.String message, java.lang.String variable)`
`static void` | `error(org.codehaus.groovy.control.SourceUnit sourceUnit, org.codehaus.groovy.ast.ASTNode astNode, java.lang.String message)` Generates a fatal compilation error.
`static void` | `error(org.codehaus.groovy.control.SourceUnit sourceUnit, org.codehaus.groovy.ast.ASTNode astNode, java.lang.String message, boolean fatal)` Generates a fatal compilation error.
`static org.codehaus.groovy.ast.AnnotationNode` | `findAnnotation(org.codehaus.groovy.ast.ClassNode annotationClassNode, java.util.List annotations)`
`static org.codehaus.groovy.ast.AnnotationNode` | `findAnnotation(org.codehaus.groovy.ast.ClassNode classNode, java.lang.Class type)`
`static org.codehaus.groovy.ast.ConstructorNode` | `findConstructor(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.Parameter[] constructorParams)` Finds a constructor for the given class node and parameter types
`static java.util.Map` | `getAllAssociationMap(org.codehaus.groovy.ast.ClassNode classNode)`
`static java.util.Map` | `getAssocationMap(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String associationType)` Returns a map containing the names and types of the given association type. eg.
`static java.util.Map` | `getConstraintMetadata(ClosureExpression closureExpression)` Evaluates a constraints closure and returns metadata about the constraints configured in the closure.
`static org.codehaus.groovy.ast.ConstructorNode` | `getDefaultConstructor(org.codehaus.groovy.ast.ClassNode classNode)` Obtains the default constructor for the given class node.
`static java.lang.String` | `getFullName(org.codehaus.groovy.ast.ClassNode classNode)` Gets the full name of a ClassNode.
`static org.codehaus.groovy.ast.ClassNode` | `getFurthestParent(org.codehaus.groovy.ast.ClassNode classNode)`
`static org.codehaus.groovy.ast.ClassNode` | `getFurthestUnresolvedParent(org.codehaus.groovy.ast.ClassNode classNode)`
`static org.codehaus.groovy.ast.Parameter[]` | `getRemainingParameterTypes(org.codehaus.groovy.ast.Parameter[] parameters)` Gets the remaining parameters excluding the first parameter in the given list
`static boolean` | `hasAnnotation(org.codehaus.groovy.ast.ClassNode classNode, java.lang.Class annotationClass)` Returns true if classNode is marked with annotationClass
`static boolean` | `hasAnyAnnotations(org.codehaus.groovy.ast.ClassNode classNode, java.lang.Class... annotationsToLookFor)` @param classNode a ClassNode to search
`static boolean` | `hasOrInheritsProperty(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String propertyName)`
`static boolean` | `hasProperty(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String propertyName)` Returns whether a classNode has the specified property or not
`static boolean` | `implementsOrInheritsZeroArgMethod(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String methodName, java.util.List ignoreClasses)`
`static boolean` | `implementsZeroArgMethod(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String methodName)` Tests whether the ClasNode implements the specified method name.
`static boolean` | `isCandidateInstanceMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode declaredMethod)`
`static boolean` | `isCandidateMethod(org.codehaus.groovy.ast.MethodNode declaredMethod)`
`static boolean` | `isConstructorMethod(org.codehaus.groovy.ast.MethodNode declaredMethod)`
`static boolean` | `isDomainClass(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.control.SourceUnit sourceNode)`
`static org.codehaus.groovy.ast.ClassNode` | `nonGeneric(org.codehaus.groovy.ast.ClassNode type)`
`static boolean` | `parametersEqual(org.codehaus.groovy.ast.Parameter[] a, org.codehaus.groovy.ast.Parameter[] b)` @return true if the two arrays are of the same size and have the same contents
`static void` | `warning(org.codehaus.groovy.control.SourceUnit sourceUnit, org.codehaus.groovy.ast.ASTNode node, java.lang.String warningMessage)`
`static void` | `wrapMethodBodyInTryCatchDebugStatements(org.codehaus.groovy.ast.MethodNode methodNode)` Wraps a method body in try / catch logic that catches any errors and logs an error, but does not rethrow!

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

### ASSIGNMENT_OPERATOR

    public static final Token ASSIGNMENT_OPERATOR

### DOMAIN_DIR

    public static final java.lang.String DOMAIN_DIR

### EQUALS_OPERATOR

    public static final Token EQUALS_OPERATOR

### GRAILS_APP_DIR

    public static final java.lang.String GRAILS_APP_DIR

### METHOD_MISSING_METHOD_NAME

    public static final java.lang.String METHOD_MISSING_METHOD_NAME

### MISSING_METHOD_EXCEPTION

    public static final org.codehaus.groovy.ast.ClassNode MISSING_METHOD_EXCEPTION

### NOT_EQUALS_OPERATOR

    public static final Token NOT_EQUALS_OPERATOR

### NULL_EXPRESSION

    public static final org.codehaus.groovy.ast.expr.ConstantExpression NULL_EXPRESSION

### STATIC_METHOD_MISSING_METHOD_NAME

    public static final java.lang.String STATIC_METHOD_MISSING_METHOD_NAME

Method Detail

### addAnnotationIfNecessary

    public static void addAnnotationIfNecessary(org.codehaus.groovy.ast.ClassNode classNode, nClassNode); java.lang.Class entityClass)

### addDelegateConstructor

    public static void addDelegateConstructor(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode constructorMethod)

  Adds or modifies an existing constructor to delegate to the given static constructor method for initialization logic.
  Parameters:
    `classNode` - The class node
    `constructorMethod` - The constructor static method

### addDelegateInstanceMethod

    public static org.codehaus.groovy.ast.MethodNode addDelegateInstanceMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.expr.Expression delegate, org.codehaus.groovy.ast.MethodNode declaredMethod)

  Adds a delegate method to the target class node where the first argument is to the delegate method is 'this'. In other words a method such as foo(Object instance, String bar) would be added with a signature of foo(String) and 'this' is passed to the delegate instance
  Parameters:
    `classNode` - The class node
    `delegate` - The expression that looks up the delegate
    `declaredMethod` - The declared method
  Returns:
    The added method node or null if it couldn't be added

### addDelegateInstanceMethod

    public static org.codehaus.groovy.ast.MethodNode addDelegateInstanceMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.expr.Expression delegate, org.codehaus.groovy.ast.MethodNode declaredMethod, boolean thisAsFirstArgument)

  Adds a delegate method to the target class node where the first argument is to the delegate method is 'this'. In other words a method such as foo(Object instance, String bar) would be added with a signature of foo(String) and 'this' is passed to the delegate instance
  Parameters:
    `classNode` - The class node
    `delegate` - The expression that looks up the delegate
    `declaredMethod` - The declared method
    `thisAsFirstArgument` - Whether 'this' should be passed as the first argument to the method
  Returns:
    The added method node or null if it couldn't be added

### addDelegateInstanceMethods

    public static void addDelegateInstanceMethods(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.ClassNode delegateNode, org.codehaus.groovy.ast.expr.Expression delegateInstance)

### addDelegateInstanceMethods

    public static void addDelegateInstanceMethods(org.codehaus.groovy.ast.ClassNode supportedSuperType, org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.ClassNode delegateNode, org.codehaus.groovy.ast.expr.Expression delegateInstance)

### addDelegateStaticMethod

    public static org.codehaus.groovy.ast.MethodNode addDelegateStaticMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode delegateMethod)

  Adds a static method call to given class node that delegates to the given method
  Parameters:
    `classNode` - The class node
    `delegateMethod` - The delegate method
  Returns:
    The added method node or null if it couldn't be added

### addDelegateStaticMethod

    public static org.codehaus.groovy.ast.MethodNode addDelegateStaticMethod(org.codehaus.groovy.ast.expr.Expression expression, org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode delegateMethod)

  Adds a static method to the given class node that delegates to the given method and resolves the object to invoke the method on from the given expression.
  Parameters:
    `expression` - The expression
    `classNode` - The class node
    `delegateMethod` - The delegate method
  Returns:
    The added method node or null if it couldn't be added

### addFieldIfNonExistent

    public static void addFieldIfNonExistent(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.ClassNode fieldType, java.lang.String fieldName)

### addMethodIfNotPresent

    public static void addMethodIfNotPresent(org.codehaus.groovy.ast.ClassNode controllerClassNode, org.codehaus.groovy.ast.MethodNode methodNode)

### createArgumentListFromParameters

    public static org.codehaus.groovy.ast.expr.ArgumentListExpression createArgumentListFromParameters(org.codehaus.groovy.ast.Parameter[] parameterTypes, boolean thisAsFirstArgument)

  Creates an argument list from the given parameter types.
  Parameters:
    `parameterTypes` - The parameter types
    `thisAsFirstArgument` - Whether to include a reference to 'this' as the first argument
  Returns:
    the arguments

### createPrintlnStatement

    public static org.codehaus.groovy.ast.stmt.ExpressionStatement createPrintlnStatement(java.lang.String message)

### createPrintlnStatement

    public static org.codehaus.groovy.ast.stmt.ExpressionStatement createPrintlnStatement(java.lang.String message, java.lang.String variable)

### error

    public static void error(org.codehaus.groovy.control.SourceUnit sourceUnit, org.codehaus.groovy.ast.ASTNode astNode, java.lang.String message)

  Generates a fatal compilation error.
  Parameters:
    `sourceUnit` - the SourceUnit
    `astNode` - the ASTNode which caused the error
    `message` - The error message

### error

    public static void error(org.codehaus.groovy.control.SourceUnit sourceUnit, org.codehaus.groovy.ast.ASTNode astNode, java.lang.String message, boolean fatal)

  Generates a fatal compilation error.
  Parameters:
    `sourceUnit` - the SourceUnit
    `astNode` - the ASTNode which caused the error
    `message` - The error message
    `fatal` - indicates if this is a fatal error

### findAnnotation

    public static org.codehaus.groovy.ast.AnnotationNode findAnnotation(org.codehaus.groovy.ast.ClassNode annotationClassNode, java.util.List annotations)

### findAnnotation

    public static org.codehaus.groovy.ast.AnnotationNode findAnnotation(org.codehaus.groovy.ast.ClassNode classNode, java.lang.Class type)

### findConstructor

    public static org.codehaus.groovy.ast.ConstructorNode findConstructor(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.Parameter[] constructorParams)

  Finds a constructor for the given class node and parameter types
  Parameters:
    `classNode` - The class node
    `constructorParams` - The parameter types
  Returns:
    The located constructor or null

### getAllAssociationMap

    public static java.util.Map getAllAssociationMap(org.codehaus.groovy.ast.ClassNode classNode)

### getAssocationMap

    public static java.util.Map getAssocationMap(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String associationType)

  Returns a map containing the names and types of the given association type. eg. GrailsDomainClassProperty.HAS_MANY
  Parameters:
    `classNode` - The target class ndoe
    `associationType` - The associationType
  Returns:
    A map

### getConstraintMetadata

    public static java.util.Map getConstraintMetadata(ClosureExpression closureExpression)

  Evaluates a constraints closure and returns metadata about the constraints configured in the closure. The Map returned has property names as keys and the value associated with each of those property names is a Map which has constraint names as keys and the Expression associated with that constraint as values.
  Parameters:
    `closureExpression` - the closure expression to evaluate
  Returns:
    the Map as described above

### getDefaultConstructor

    public static org.codehaus.groovy.ast.ConstructorNode getDefaultConstructor(org.codehaus.groovy.ast.ClassNode classNode)

  Obtains the default constructor for the given class node.
  Parameters:
    `classNode` - The class node
  Returns:
    The default constructor or null if there isn't one

### getFullName

    public static java.lang.String getFullName(org.codehaus.groovy.ast.ClassNode classNode)

  Gets the full name of a ClassNode.
  Parameters:
    `classNode` - The class node
  Returns:
    The full name

### getFurthestParent

    public static org.codehaus.groovy.ast.ClassNode getFurthestParent(org.codehaus.groovy.ast.ClassNode classNode)

### getFurthestUnresolvedParent

    public static org.codehaus.groovy.ast.ClassNode getFurthestUnresolvedParent(org.codehaus.groovy.ast.ClassNode classNode)

### getRemainingParameterTypes

    public static org.codehaus.groovy.ast.Parameter[] getRemainingParameterTypes(org.codehaus.groovy.ast.Parameter[] parameters)

  Gets the remaining parameters excluding the first parameter in the given list
  Parameters:
    `parameters` - The parameters
  Returns:
    A new array with the first parameter removed

### hasAnnotation

    public static boolean hasAnnotation(org.codehaus.groovy.ast.ClassNode classNode, java.lang.Class annotationClass)

  Returns true if classNode is marked with annotationClass
  Parameters:
    `classNode` - A ClassNode to inspect
    `annotationClass` - an annotation to look for
  Returns:
    true if classNode is marked with annotationClass, otherwise false

### hasAnyAnnotations

    public static boolean hasAnyAnnotations(org.codehaus.groovy.ast.ClassNode classNode, java.lang.Class... annotationsToLookFor)

  Parameters:
    `classNode` - a ClassNode to search
    `annotationsToLookFor` - Annotations to look for
  Returns:
    true if classNode is marked with any of the annotations in annotationsToLookFor

### hasOrInheritsProperty

    public static boolean hasOrInheritsProperty(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String propertyName)

### hasProperty

    public static boolean hasProperty(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String propertyName)

  Returns whether a classNode has the specified property or not
  Parameters:
    `classNode` - The ClassNode
    `propertyName` - The name of the property
  Returns:
    true if the property exists in the ClassNode

### implementsOrInheritsZeroArgMethod

    @SuppressWarnings("rawtypes")
    public static boolean implementsOrInheritsZeroArgMethod(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String methodName, java.util.List ignoreClasses)

### implementsZeroArgMethod

    public static boolean implementsZeroArgMethod(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String methodName)

  Tests whether the ClasNode implements the specified method name.
  Parameters:
    `classNode` - The ClassNode
    `methodName` - The method name
  Returns:
    true if it does implement the method

### isCandidateInstanceMethod

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

### isCandidateMethod

    public static boolean isCandidateMethod(org.codehaus.groovy.ast.MethodNode declaredMethod)

### isConstructorMethod

    public static boolean isConstructorMethod(org.codehaus.groovy.ast.MethodNode declaredMethod)

### isDomainClass

    public static boolean isDomainClass(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.control.SourceUnit sourceNode)

### nonGeneric

    public static org.codehaus.groovy.ast.ClassNode nonGeneric(org.codehaus.groovy.ast.ClassNode type)

### parametersEqual

    public static boolean parametersEqual(org.codehaus.groovy.ast.Parameter[] a, org.codehaus.groovy.ast.Parameter[] b)

  Returns:
    true if the two arrays are of the same size and have the same contents

### warning

    public static void warning(org.codehaus.groovy.control.SourceUnit sourceUnit, org.codehaus.groovy.ast.ASTNode node, java.lang.String warningMessage)

### wrapMethodBodyInTryCatchDebugStatements

    public static void wrapMethodBodyInTryCatchDebugStatements(org.codehaus.groovy.ast.MethodNode methodNode)

  Wraps a method body in try / catch logic that catches any errors and logs an error, but does not rethrow!
  Parameters:
    `methodNode` - The method node

Groovy Documentation