Helper methods for working with Groovy AST trees.
Modifiers | Name | Description |
---|---|---|
static org.codehaus.groovy.syntax.Token |
ASSIGNMENT_OPERATOR |
|
static java.lang.String |
DOMAIN_DIR |
|
static org.codehaus.groovy.syntax.Token |
EQUALS_OPERATOR |
|
static java.lang.String |
GRAILS_APP_DIR |
|
static org.codehaus.groovy.ast.ClassNode |
INTEGER_CLASS_NODE |
|
static org.codehaus.groovy.syntax.Token |
LOGICAL_AND_OPERATOR |
|
static java.lang.String |
METHOD_MISSING_METHOD_NAME |
|
static org.codehaus.groovy.ast.ClassNode |
MISSING_METHOD_EXCEPTION |
|
static org.codehaus.groovy.syntax.Token |
NOT_EQUALS_OPERATOR |
|
static org.codehaus.groovy.ast.expr.ConstantExpression |
NULL_EXPRESSION |
|
static org.codehaus.groovy.ast.ClassNode |
OBJECT_CLASS_NODE |
|
static java.lang.String |
STATIC_METHOD_MISSING_METHOD_NAME |
|
static org.codehaus.groovy.ast.expr.VariableExpression |
THIS_EXPR |
@deprecated Sharing copies of VariableExpression which refer to "this" is unsafe |
static org.codehaus.groovy.ast.ClassNode |
VOID_CLASS_NODE |
|
static org.codehaus.groovy.ast.expr.ArgumentListExpression |
ZERO_ARGUMENTS |
|
static org.codehaus.groovy.ast.Parameter[] |
ZERO_PARAMETERS |
Type | Name and description |
---|---|
static void |
addAnnotationIfNecessary(org.codehaus.groovy.ast.ClassNode classNode, java.lang.Class<Entity> entityClass) |
static org.codehaus.groovy.ast.AnnotatedNode |
addCompileStaticAnnotation(org.codehaus.groovy.ast.AnnotatedNode annotatedNode) Marks a method to be staticly compiled |
static org.codehaus.groovy.ast.AnnotatedNode |
addCompileStaticAnnotation(org.codehaus.groovy.ast.AnnotatedNode annotatedNode, boolean skip) Adds @CompileStatic annotation to method |
static org.codehaus.groovy.ast.ConstructorNode |
addDelegateConstructor(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode constructorMethod, java.util.Map<java.lang.String, org.codehaus.groovy.ast.ClassNode> genericsPlaceholders) 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, org.codehaus.groovy.ast.AnnotationNode markerAnnotation) |
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) |
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, org.codehaus.groovy.ast.AnnotationNode markerAnnotation, boolean thisAsFirstArgument) |
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, org.codehaus.groovy.ast.AnnotationNode markerAnnotation, boolean thisAsFirstArgument, java.util.Map<java.lang.String, org.codehaus.groovy.ast.ClassNode> genericsPlaceholders) |
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, org.codehaus.groovy.ast.AnnotationNode markerAnnotation, boolean thisAsFirstArgument, java.util.Map<java.lang.String, org.codehaus.groovy.ast.ClassNode> genericsPlaceholders, boolean noNullCheck) 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 classNode, org.codehaus.groovy.ast.ClassNode delegateNode, org.codehaus.groovy.ast.expr.Expression delegateInstance, java.util.Map<java.lang.String, org.codehaus.groovy.ast.ClassNode> genericsPlaceholders) |
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 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, java.util.Map<java.lang.String, org.codehaus.groovy.ast.ClassNode> genericsPlaceholders, boolean noNullCheck, boolean addCompileStatic) |
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 org.codehaus.groovy.ast.MethodNode |
addDelegateStaticMethod(org.codehaus.groovy.ast.expr.Expression delegate, org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode delegateMethod, org.codehaus.groovy.ast.AnnotationNode markerAnnotation, java.util.Map<java.lang.String, org.codehaus.groovy.ast.ClassNode> genericsPlaceholders, boolean noNullCheck) 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 org.codehaus.groovy.ast.AnnotationNode |
addEnhancedAnnotation(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String... enhancedFor) Add the grails.artefact.Enhanced annotation to classNode if it does not already exist and ensure that all of the features in the enhancedFor array are represented in the enhancedFor attribute of the Enhanced annnotation |
static org.codehaus.groovy.ast.FieldNode |
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.MethodCallExpression |
applyDefaultMethodTarget(org.codehaus.groovy.ast.expr.MethodCallExpression methodCallExpression, org.codehaus.groovy.ast.ClassNode targetClassNode) Set the method target of a MethodCallExpression to the first matching method with same number of arguments. |
static org.codehaus.groovy.ast.expr.MethodCallExpression |
applyDefaultMethodTarget(org.codehaus.groovy.ast.expr.MethodCallExpression methodCallExpression, java.lang.Class<?> targetClass) Set the method target of a MethodCallExpression to the first matching method with same number of arguments. |
static org.codehaus.groovy.ast.expr.MethodCallExpression |
applyImplicitThis(org.codehaus.groovy.ast.expr.MethodCallExpression methodCallExpression, boolean useImplicitThis) |
static org.codehaus.groovy.ast.expr.MethodCallExpression |
applyMethodTarget(org.codehaus.groovy.ast.expr.MethodCallExpression methodCallExpression, org.codehaus.groovy.ast.ClassNode targetClassNode, org.codehaus.groovy.ast.ClassNode... targetParameterTypes) Set the method target of a MethodCallExpression to the first matching method with same number and type of arguments. |
static org.codehaus.groovy.ast.expr.MethodCallExpression |
applyMethodTarget(org.codehaus.groovy.ast.expr.MethodCallExpression methodCallExpression, java.lang.Class<?> targetClass, java.lang.Class<?>... targetParameterClassTypes) Set the method target of a MethodCallExpression to the first matching method with same number and type of arguments. |
static org.codehaus.groovy.ast.expr.MethodCallExpression |
applyMethodTarget(org.codehaus.groovy.ast.expr.MethodCallExpression methodCallExpression, org.codehaus.groovy.ast.ClassNode targetClassNode, java.lang.Class<?>... targetParameterClassTypes) Set the method target of a MethodCallExpression to the first matching method with same number and type of arguments. |
static org.codehaus.groovy.ast.expr.MethodCallExpression |
buildGetMapExpression(org.codehaus.groovy.ast.expr.Expression objectExpression, java.lang.String keyName) Build static direct call to get entry from Map |
static org.codehaus.groovy.ast.expr.MethodCallExpression |
buildGetPropertyExpression(org.codehaus.groovy.ast.expr.Expression objectExpression, java.lang.String propertyName, org.codehaus.groovy.ast.ClassNode targetClassNode) Build static direct call to getter of a property |
static org.codehaus.groovy.ast.expr.MethodCallExpression |
buildGetPropertyExpression(org.codehaus.groovy.ast.expr.Expression objectExpression, java.lang.String propertyName, org.codehaus.groovy.ast.ClassNode targetClassNode, boolean useBooleanGetter) Build static direct call to getter of a property |
static org.codehaus.groovy.ast.expr.Expression |
buildGetThisObjectExpression(boolean inClosureBlock) |
static org.codehaus.groovy.ast.expr.MethodCallExpression |
buildPutMapExpression(org.codehaus.groovy.ast.expr.Expression objectExpression, java.lang.String keyName, org.codehaus.groovy.ast.expr.Expression valueExpression) Build static direct call to put entry in Map |
static org.codehaus.groovy.ast.expr.MethodCallExpression |
buildSetPropertyExpression(org.codehaus.groovy.ast.expr.Expression objectExpression, java.lang.String propertyName, org.codehaus.groovy.ast.ClassNode targetClassNode, org.codehaus.groovy.ast.expr.Expression valueExpression) Build static direct call to setter of a property |
static org.codehaus.groovy.ast.expr.Expression |
buildThisExpression() |
static org.codehaus.groovy.ast.AnnotationNode |
cloneAnnotation(org.codehaus.groovy.ast.AnnotationNode node) |
static void |
copyAnnotations(org.codehaus.groovy.ast.AnnotatedNode from, org.codehaus.groovy.ast.AnnotatedNode to) |
static void |
copyAnnotations(org.codehaus.groovy.ast.AnnotatedNode from, org.codehaus.groovy.ast.AnnotatedNode to, java.util.Set<java.lang.String> included, java.util.Set<java.lang.String> excluded) |
static org.codehaus.groovy.ast.Parameter[] |
copyParameters(org.codehaus.groovy.ast.Parameter[] parameterTypes) |
static org.codehaus.groovy.ast.Parameter[] |
copyParameters(org.codehaus.groovy.ast.Parameter[] parameterTypes, java.util.Map<java.lang.String, org.codehaus.groovy.ast.ClassNode> genericsPlaceholders) |
static org.codehaus.groovy.ast.expr.ArgumentListExpression |
createArgumentListFromParameters(org.codehaus.groovy.ast.Parameter[] parameterTypes, boolean thisAsFirstArgument, java.util.Map<java.lang.String, org.codehaus.groovy.ast.ClassNode> genericsPlaceholders) 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 void |
filterAnnotations(org.codehaus.groovy.ast.AnnotatedNode annotatedNode, java.util.Set<java.lang.String> classNamesToRetain, java.util.Set<java.lang.String> classNamesToRemove) |
static org.codehaus.groovy.ast.AnnotationNode |
findAnnotation(org.codehaus.groovy.ast.ClassNode annotationClassNode, java.util.List<org.codehaus.groovy.ast.AnnotationNode> 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 org.codehaus.groovy.ast.ClassNode |
findInterface(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.ClassNode interfaceNode) |
static java.util.Map<java.lang.String, org.codehaus.groovy.ast.ClassNode> |
getAllAssociationMap(org.codehaus.groovy.ast.ClassNode classNode) |
static java.util.Map<java.lang.String, org.codehaus.groovy.ast.ClassNode> |
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<java.lang.String, java.util.Map<java.lang.String, org.codehaus.groovy.ast.expr.Expression>> |
getConstraintMetadata(org.codehaus.groovy.ast.expr.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<? extends java.lang.annotation.Annotation> annotationClass) Returns true if classNode is marked with annotationClass |
static boolean |
hasAnyAnnotations(org.codehaus.groovy.ast.ClassNode classNode, java.lang.Class<? extends java.lang.annotation.Annotation>... 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 |
hasZeroArgsConstructor(org.codehaus.groovy.ast.ClassNode implementationNode) |
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 |
isApplied(org.codehaus.groovy.ast.ASTNode astNode, java.lang.Class<?> transformationClass) |
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 boolean |
isInnerClassNode(org.codehaus.groovy.ast.ClassNode classNode) Whether the given class node is an inner class |
static boolean |
isSetterOrGetterMethod(org.codehaus.groovy.ast.MethodNode md) |
static void |
markApplied(org.codehaus.groovy.ast.ASTNode astNode, java.lang.Class<?> transformationClass) |
static org.codehaus.groovy.ast.expr.MethodCallExpression |
noImplicitThis(org.codehaus.groovy.ast.expr.MethodCallExpression methodCallExpression) |
static org.codehaus.groovy.ast.ClassNode |
nonGeneric(org.codehaus.groovy.ast.ClassNode type) |
static org.codehaus.groovy.ast.ClassNode |
nonGeneric(org.codehaus.groovy.ast.ClassNode type, org.codehaus.groovy.ast.ClassNode wildcardReplacement) |
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 |
processVariableScopes(org.codehaus.groovy.control.SourceUnit source, org.codehaus.groovy.ast.ClassNode classNode) |
static void |
processVariableScopes(org.codehaus.groovy.control.SourceUnit source, org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode methodNode) |
static void |
removeCompileStaticAnnotations(org.codehaus.groovy.ast.AnnotatedNode annotatedNode) |
static org.codehaus.groovy.ast.ClassNode |
replaceGenericsPlaceholders(org.codehaus.groovy.ast.ClassNode type, java.util.Map<java.lang.String, org.codehaus.groovy.ast.ClassNode> genericsPlaceholders) |
static org.codehaus.groovy.ast.ClassNode |
replaceGenericsPlaceholders(org.codehaus.groovy.ast.ClassNode type, java.util.Map<java.lang.String, org.codehaus.groovy.ast.ClassNode> genericsPlaceholders, org.codehaus.groovy.ast.ClassNode defaultPlaceholder) |
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 | Name |
---|---|
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() |
Marks a method to be staticly compiled
Adds
Adds or modifies an existing constructor to delegate to the given static constructor method for initialization logic.
classNode
- The class nodeconstructorMethod
- The constructor static methodAdds 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
classNode
- The class nodedelegate
- The expression that looks up the delegatedeclaredMethod
- The declared methodAdds 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
classNode
- The class nodedelegate
- The expression that looks up the delegatedeclaredMethod
- The declared methodthisAsFirstArgument
- Whether 'this' should be passed as the first argument to the methodAdds a static method call to given class node that delegates to the given method
classNode
- The class nodedelegateMethod
- The delegate methodAdds 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.
expression
- The expressionclassNode
- The class nodedelegateMethod
- The delegate methodAdds 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.
delegate
- The expressionclassNode
- The class nodedelegateMethod
- The delegate methodmarkerAnnotation
- A marker annotation to be added to all methodsAdd the grails.artefact.Enhanced annotation to classNode if it does not already exist and ensure that all of the features in the enhancedFor array are represented in the enhancedFor attribute of the Enhanced annnotation
classNode
- the class to add the Enhanced annotation toenhancedFor
- an array of feature names to include in the enhancedFor attribute of the annotationSet the method target of a MethodCallExpression to the first matching method with same number of arguments. This doesn't check argument types.
Set the method target of a MethodCallExpression to the first matching method with same number of arguments. This doesn't check argument types.
Set the method target of a MethodCallExpression to the first matching method with same number and type of arguments. A null parameter type will match any type
Set the method target of a MethodCallExpression to the first matching method with same number and type of arguments.
Set the method target of a MethodCallExpression to the first matching method with same number and type of arguments.
Build static direct call to get entry from Map
Build static direct call to getter of a property
Build static direct call to getter of a property
Build static direct call to put entry in Map
Build static direct call to setter of a property
Creates an argument list from the given parameter types.
parameterTypes
- The parameter typesthisAsFirstArgument
- Whether to include a reference to 'this' as the first argumentGenerates a fatal compilation error.
sourceUnit
- the SourceUnitastNode
- the ASTNode which caused the errormessage
- The error messageGenerates a fatal compilation error.
sourceUnit
- the SourceUnitastNode
- the ASTNode which caused the errormessage
- The error messagefatal
- indicates if this is a fatal errorFinds a constructor for the given class node and parameter types
classNode
- The class nodeconstructorParams
- The parameter typesReturns a map containing the names and types of the given association type. eg. GrailsDomainClassProperty.HAS_MANY
classNode
- The target class ndoeassociationType
- The associationType 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 MapclosureExpression
- the closure expression to evaluate
Obtains the default constructor for the given class node.
classNode
- The class nodeGets the full name of a ClassNode.
classNode
- The class nodeGets the remaining parameters excluding the first parameter in the given list
parameters
- The parametersReturns true if classNode is marked with annotationClass
classNode
- A ClassNode to inspectannotationClass
- an annotation to look for
classNode
- a ClassNode to searchannotationsToLookFor
- Annotations to look forReturns whether a classNode has the specified property or not
classNode
- The ClassNodepropertyName
- The name of the propertyTests whether the ClasNode implements the specified method name.
classNode
- The ClassNodemethodName
- The method nameWhether the given class node is an inner class
classNode
- The class node
Wraps a method body in try / catch logic that catches any errors and logs an error, but does not rethrow!
methodNode
- The method node