@groovy.transform.CompileStatic class AstUtils extends java.lang.Object
Utility methods for dealing with Groovy ASTs
| Modifiers | Name | Description |
|---|---|---|
static org.codehaus.groovy.syntax.Token |
ASSIGNMENT_OPERATOR |
|
static org.codehaus.groovy.ast.ClassNode |
COMPILE_STATIC_TYPE |
|
static java.util.regex.Pattern |
DOMAIN_PATH_PATTERN |
|
static java.lang.String |
DOMAIN_TYPE |
|
static org.codehaus.groovy.ast.ClassNode[] |
EMPTY_CLASS_ARRAY |
|
static java.lang.String |
GRAILS_APP_DIR |
The name of the Grails application directory |
static org.codehaus.groovy.ast.ClassNode |
OBJECT_CLASS_NODE |
|
static java.lang.String |
REGEX_FILE_SEPARATOR |
|
static java.lang.Object |
TRANSFORM_APPLIED_MARKER |
|
static org.codehaus.groovy.ast.ClassNode |
TYPE_CHECKED_TYPE |
|
static org.codehaus.groovy.ast.expr.ArgumentListExpression |
ZERO_ARGUMENTS |
|
static org.codehaus.groovy.ast.Parameter[] |
ZERO_PARAMETERS |
|
| Constructor and description |
|---|
AstUtils() |
| Type Params | Return Type | Name and description |
|---|---|---|
|
static void |
addAnnotationIfNecessary(org.codehaus.groovy.ast.AnnotatedNode classNode, java.lang.Class<? extends java.lang.annotation.Annotation> annotationClass)Adds an annotation to the give nclass node if it doesn't already exist |
|
static org.codehaus.groovy.ast.AnnotationNode |
addAnnotationOrGetExisting(org.codehaus.groovy.ast.AnnotatedNode classNode, java.lang.Class<? extends java.lang.annotation.Annotation> annotationClass)Adds an annotation to the given class node or returns the existing annotation |
|
static org.codehaus.groovy.ast.AnnotationNode |
addAnnotationOrGetExisting(org.codehaus.groovy.ast.AnnotatedNode annotatedNode, java.lang.Class<? extends java.lang.annotation.Annotation> annotationClass, java.util.Map<java.lang.String, java.lang.Object> members)Adds an annotation to the given class node or returns the existing annotation |
|
static org.codehaus.groovy.ast.AnnotationNode |
addAnnotationOrGetExisting(org.codehaus.groovy.ast.AnnotatedNode annotatedNode, org.codehaus.groovy.ast.ClassNode annotationClassNode) |
|
static org.codehaus.groovy.ast.AnnotationNode |
addAnnotationOrGetExisting(org.codehaus.groovy.ast.AnnotatedNode annotatedNode, org.codehaus.groovy.ast.ClassNode annotationClassNode, java.util.Map<java.lang.String, java.lang.Object> members) |
|
static void |
addTransformedEntityName(java.lang.String name)
|
|
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.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.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 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, boolean skipExisting)Copies the annotations of one node onto another. |
|
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.Parameter[] |
copyParameters(java.util.Map<java.lang.String, org.codehaus.groovy.ast.ClassNode> genericsSpec, org.codehaus.groovy.ast.Parameter[] parameterTypes, java.util.List<java.lang.String> currentMethodGenPlaceholders) |
|
static void |
error(org.codehaus.groovy.control.SourceUnit sourceUnit, org.codehaus.groovy.ast.ASTNode expr, java.lang.String errorMessage) |
|
protected static void |
findAbstractMethodsInternal(org.codehaus.groovy.ast.ClassNode classNode, java.util.List<org.codehaus.groovy.ast.MethodNode> methods, boolean includeProtected) |
|
static java.util.List<org.codehaus.groovy.ast.MethodNode> |
findAllAbstractMethods(org.codehaus.groovy.ast.ClassNode classNode)Finds all the abstract methods for the give class node |
|
static java.util.List<org.codehaus.groovy.ast.MethodNode> |
findAllUnimplementedAbstractMethods(org.codehaus.groovy.ast.ClassNode classNode)Finds all the abstract methods for the give class node |
|
static org.codehaus.groovy.ast.AnnotationNode |
findAnnotation(org.codehaus.groovy.ast.AnnotatedNode classNode, java.lang.Class<?> type) |
|
static org.codehaus.groovy.ast.AnnotationNode |
findAnnotation(org.codehaus.groovy.ast.AnnotatedNode annotationClassNode, java.util.List<org.codehaus.groovy.ast.AnnotationNode> annotations) |
|
static org.codehaus.groovy.ast.ClassNode |
findInterface(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String interfaceName) |
|
static java.util.List<org.codehaus.groovy.ast.MethodNode> |
findPublicAbstractMethods(org.codehaus.groovy.ast.ClassNode classNode)Finds all the abstract methods for the give class node |
|
static org.codehaus.groovy.ast.ClassNode |
getFurthestUnresolvedParent(org.codehaus.groovy.ast.ClassNode classNode) |
|
static java.util.Collection<java.lang.String> |
getKnownEntityNames()
|
|
static org.codehaus.groovy.ast.PropertyNode |
getPropertyFromHierarchy(org.codehaus.groovy.ast.ClassNode cn, java.lang.String name)Obtains a property from the class hierarchy |
|
static org.codehaus.groovy.ast.ClassNode |
getPropertyType(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String propertyName)Returns the property type if it exists |
|
static boolean |
hasAnnotation(org.codehaus.groovy.ast.MethodNode methodNode, java.lang.Class<? extends java.lang.annotation.Annotation> annotationClass)Returns true if MethodNode is marked with annotationClass |
|
static boolean |
hasAnnotation(org.codehaus.groovy.ast.MethodNode methodNode, org.codehaus.groovy.ast.ClassNode annotationClassNode) |
|
static boolean |
hasAnnotation(org.codehaus.groovy.ast.MethodNode methodNode, java.lang.String annotationClassName)Returns true if MethodNode is marked with annotationClass |
|
static boolean |
hasAnnotation(java.util.List<org.codehaus.groovy.ast.AnnotationNode> annotationNodes, org.codehaus.groovy.ast.AnnotationNode annotationNode) |
|
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)
|
|
static boolean |
hasJunitAnnotation(org.codehaus.groovy.ast.MethodNode md)Whether the method node has any JUnit annotations |
|
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 |
implementsInterface(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String interfaceName)Whether the given class node implements the given interface name |
|
static boolean |
implementsInterface(org.codehaus.groovy.ast.ClassNode classNode, java.lang.Class itfc)Whether the given class node implements the given interface node |
|
static boolean |
implementsInterface(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.ClassNode interfaceNode)Whether the given class node implements the given interface node |
|
static boolean |
implementsOrInheritsZeroArgMethod(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String methodName) |
|
static boolean |
implementsZeroArgMethod(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String methodName)Tests whether the ClasNode implements the specified method name. |
|
static void |
injectTrait(org.codehaus.groovy.ast.ClassNode classNode, java.lang.Class traitClass) |
|
static boolean |
isDomainClass(java.net.URL url)Checks whether the file referenced by the given url is a domain class |
|
static boolean |
isDomainClass(org.codehaus.groovy.ast.ClassNode classNode) |
|
static boolean |
isEnum(org.codehaus.groovy.ast.ClassNode classNode)Is the class an enum |
|
static boolean |
isGetter(org.codehaus.groovy.ast.MethodNode declaredMethod) |
|
static boolean |
isGroovyType(org.codehaus.groovy.ast.ClassNode type)Whether the given type is a Groovy object |
|
static boolean |
isIterableOrArrayOfDomainClasses(org.codehaus.groovy.ast.ClassNode type) |
|
static boolean |
isNumberType(org.codehaus.groovy.ast.ClassNode classNode)Is the class a number |
|
static boolean |
isSetter(org.codehaus.groovy.ast.MethodNode declaredMethod) |
|
static boolean |
isSpockTest(org.codehaus.groovy.ast.ClassNode classNode)Whether the class is a Spock test |
|
static boolean |
isSubclassOf(org.codehaus.groovy.ast.ClassNode classNode, java.lang.String parentClassName)Returns true if the given class name is a parent class of the given class |
|
static boolean |
isSubclassOfOrImplementsInterface(org.codehaus.groovy.ast.ClassNode childClass, org.codehaus.groovy.ast.ClassNode superClass) |
|
static boolean |
isSubclassOfOrImplementsInterface(org.codehaus.groovy.ast.ClassNode childClass, java.lang.String superClassName) |
|
static org.codehaus.groovy.ast.expr.ClosureExpression |
makeClosureAwareOfArguments(org.codehaus.groovy.ast.MethodNode methodNode, org.codehaus.groovy.ast.expr.ClosureExpression closure)Makes a closure aware of the given methods arguments |
|
static org.codehaus.groovy.ast.expr.MapExpression |
mapX(java.util.Map<java.lang.String, ? extends org.codehaus.groovy.ast.expr.Expression> map)Builds a map |
|
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 void |
processVariableScopes(org.codehaus.groovy.control.SourceUnit source, org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.MethodNode methodNode) |
|
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 org.codehaus.groovy.ast.expr.VariableExpression |
varThis()
|
|
static void |
warning(org.codehaus.groovy.control.SourceUnit sourceUnit, org.codehaus.groovy.ast.ASTNode node, java.lang.String warningMessage) |
| Methods inherited from class | Name |
|---|---|
class java.lang.Object |
java.lang.Object#equals(java.lang.Object), java.lang.Object#getClass(), java.lang.Object#hashCode(), java.lang.Object#notify(), java.lang.Object#notifyAll(), java.lang.Object#toString(), java.lang.Object#wait(), java.lang.Object#wait(long), java.lang.Object#wait(long, int) |
The name of the Grails application directory
Adds an annotation to the give nclass node if it doesn't already exist
classNode - The class nodeannotationClass - The annotation classAdds an annotation to the given class node or returns the existing annotation
classNode - The class nodeannotationClass - The annotation classAdds an annotation to the given class node or returns the existing annotation
annotatedNode - The class nodeannotationClass - The annotation class
name - Adds the name of a transformed entityBuild static direct call to getter of a property
Build static direct call to getter of a property
Build static direct call to setter of a property
Copies the annotations of one node onto another.
from - The node to copy the annotations fromto - The node to copy the annotations toincluded - If non-null, only annotations whose class name appears here are copiedexcluded - If non-null, annotations whose class name appears here are not copiedskipExisting - When true an annotation is not copied if to already carries one of the
same type. Callers that may write onto a node they have already annotated themselves should opt in.
The default is false, because repeatable annotations legitimately occur more than once on the
same node and skipping them would silently produce an incomplete set.Finds all the abstract methods for the give class node
classNode - The class nodeFinds all the abstract methods for the give class node
classNode - The class nodeFinds all the abstract methods for the give class node
classNode - The class node
Obtains a property from the class hierarchy
cn - The class nodename - The property nameReturns the property type if it exists
classNode - The ClassNodepropertyName - The name of the propertyReturns true if MethodNode is marked with annotationClass
methodNode - A MethodNode to inspectannotationClass - an annotation to look forReturns true if MethodNode is marked with annotationClass
methodNode - A MethodNode to inspectannotationClass - an annotation to look forReturns 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 forWhether the method node has any JUnit annotations
md - The method nodeReturns whether a classNode has the specified property or not
classNode - The ClassNodepropertyName - The name of the propertyWhether the given class node implements the given interface name
classNode - The class nodeinterfaceName - The interface nameWhether the given class node implements the given interface node
classNode - The class nodeitfc - The interfaceWhether the given class node implements the given interface node
classNode - The class nodeinterfaceName - The interface nodeTests whether the ClasNode implements the specified method name.
classNode - The ClassNodemethodName - The method nameChecks whether the file referenced by the given url is a domain class
url - The URL instanceIs the class an enum
classNode - The class nodeWhether the given type is a Groovy object
type - The typeIs the class a number
classNode - The class nodeWhether the class is a Spock test
classNode - The class nodeReturns true if the given class name is a parent class of the given class
classNode - The class nodeparentClassName - the parent class nameMakes a closure aware of the given methods arguments
methodNode - The methodclosure - The existing closureBuilds a map
map - The map