@groovy.transform.CompileStatic class AstUtils extends java.lang.Object
Utility methods for dealing with Groovy ASTs
Modifiers | Name | Description |
---|---|---|
class |
AstUtils.1 |
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 |
|
private static java.lang.Class<?>[] |
EMPTY_JAVA_CLASS_ARRAY |
|
private static java.util.Set<java.lang.String> |
ENTITY_ANNOTATIONS |
|
static java.lang.String |
GRAILS_APP_DIR |
The name of the Grails application directory |
private static java.lang.Class<?>[] |
OBJECT_CLASS_ARG |
|
static org.codehaus.groovy.ast.ClassNode |
OBJECT_CLASS_NODE |
|
static java.lang.String |
REGEX_FILE_SEPARATOR |
|
private static java.lang.String |
SPEC_CLASS |
|
private static java.util.Set<java.lang.String> |
TRANSFORMED_CLASSES |
|
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 |
|
private static java.util.Map<java.lang.String, org.codehaus.groovy.ast.ClassNode> |
emptyGenericsPlaceHoldersMap |
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 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 |
|
private static org.codehaus.groovy.ast.ClassNode |
implementsInterfaceInternal(org.codehaus.groovy.ast.ClassNode[] interfaces, java.lang.String interfaceName) |
|
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#wait(long), java.lang.Object#wait(long, int), 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() |
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
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