[Java] Class ClassNodeUtils
- org.apache.groovy.ast.tools.ClassNodeUtils
public class ClassNodeUtils extends Object
Utility class for working with ClassNodes
Methods Summary
Type Params | Return Type | Name and description |
---|---|---|
public static void |
addDeclaredMethodsFromAllInterfaces(ClassNode cNode, Map<String, MethodNode> methodsMap) Adds methods from interfaces and parent interfaces. | |
public static void |
addDeclaredMethodsFromInterfaces(ClassNode cNode, Map<String, MethodNode> methodsMap) Adds methods from all interfaces. | |
public static ConstructorNode |
addGeneratedConstructor(ClassNode classNode, int modifiers, Parameter[] parameters, ClassNode[] exceptions, Statement code) Add a method that is marked as @Generated . | |
public static void |
addGeneratedConstructor(ClassNode classNode, ConstructorNode consNode) Add a method that is marked as @Generated . | |
public static void |
addGeneratedInnerClass(ClassNode cNode, ClassNode inner) Add an inner class that is marked as @Generated . | |
public static MethodNode |
addGeneratedMethod(ClassNode cNode, String name, int modifiers, ClassNode returnType, Parameter[] parameters, ClassNode[] exceptions, Statement code) Return an existing method if one exists or else create a new method and mark it as @Generated . | |
public static void |
addGeneratedMethod(ClassNode cNode, MethodNode mNode) Add a method and mark it as @Generated . | |
public static String |
formatTypeName(ClassNode cNode) Formats a type name into a human readable version. | |
public static Map<String, MethodNode> |
getDeclaredMethodsFromInterfaces(ClassNode cNode) Gets methods from all interfaces. | |
public static Map<String, MethodNode> |
getDeclaredMethodsFromSuper(ClassNode cNode) Add methods from the super class. | |
public static FieldNode |
getField(ClassNode classNode, String fieldName) Return the (potentially inherited) field of the classnode. | |
public static String |
getPropNameForAccessor(String accessorName) Returns the property name, e.g. age, given an accessor name, e.g. getAge. | |
public static PropertyNode |
getStaticProperty(ClassNode cNode, String propName) Detect whether a static property with the given name is within the class or a super class. | |
public static boolean |
hasExplicitConstructor(AbstractASTTransformation xform, ClassNode cNode) Determine if an explicit (non-generated) constructor is in the class. | |
public static boolean |
hasNoArgConstructor(ClassNode cNode) | |
public static boolean |
hasPossibleStaticMethod(ClassNode cNode, String name, Expression arguments, boolean trySpread) Returns true if the given method has a possibly matching static method with the given name and arguments. | |
public static boolean |
hasPossibleStaticProperty(ClassNode cNode, String methodName) Return true if we have a static accessor | |
public static boolean |
hasStaticProperty(ClassNode cNode, String propName) | |
public static boolean |
isInnerClass(ClassNode cNode) Detect whether a given ClassNode is a inner class (non-static). | |
public static boolean |
isValidAccessorName(String accessorName) Detect whether the given accessor name starts with "get", "set" or "is" followed by at least one character. | |
public static boolean |
samePackageName(ClassNode first, ClassNode second) Determine if the given ClassNode values have the same package name. |
Inherited Methods Summary
Methods inherited from class | Name |
---|---|
class Object | wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll |
Method Detail
public static void addDeclaredMethodsFromAllInterfaces(ClassNode cNode, Map<String, MethodNode> methodsMap)
Adds methods from interfaces and parent interfaces. Existing entries in the methods map take precedence. Methods from interfaces visited early take precedence over later ones.
- Parameters:
-
cNode
- The ClassNode -
methodsMap
- A map of existing methods to alter
public static void addDeclaredMethodsFromInterfaces(ClassNode cNode, Map<String, MethodNode> methodsMap)
Adds methods from all interfaces. Existing entries in the methods map take precedence. Methods from interfaces visited early take precedence over later ones.
- Parameters:
-
cNode
- The ClassNode -
methodsMap
- A map of existing methods to alter
public static ConstructorNode addGeneratedConstructor(ClassNode classNode, int modifiers, Parameter[] parameters, ClassNode[] exceptions, Statement code)
Add a method that is marked as @Generated
.
- See Also:
- ClassNode.addConstructor
public static void addGeneratedConstructor(ClassNode classNode, ConstructorNode consNode)
Add a method that is marked as @Generated
.
- See Also:
- ClassNode.addConstructor
public static void addGeneratedInnerClass(ClassNode cNode, ClassNode inner)
Add an inner class that is marked as @Generated
.
- See Also:
- ModuleNode.addClass
public static MethodNode addGeneratedMethod(ClassNode cNode, String name, int modifiers, ClassNode returnType, Parameter[] parameters, ClassNode[] exceptions, Statement code)
Return an existing method if one exists or else create a new method and mark it as @Generated
.
- See Also:
- ClassNode.addMethod
public static void addGeneratedMethod(ClassNode cNode, MethodNode mNode)
Add a method and mark it as @Generated
.
- See Also:
- ClassNode.addMethod
public static String formatTypeName(ClassNode cNode)
Formats a type name into a human readable version. For arrays, appends "[]" to the formatted type name of the component. For unit class nodes, uses the class node name.
- Parameters:
-
cNode
- the type to format
- Returns:
- a human readable version of the type name (java.lang.String[] for example)
public static Map<String, MethodNode> getDeclaredMethodsFromInterfaces(ClassNode cNode)
Gets methods from all interfaces. Methods from interfaces visited early take precedence over later ones.
- Parameters:
-
cNode
- The ClassNode
- Returns:
- A map of methods
public static Map<String, MethodNode> getDeclaredMethodsFromSuper(ClassNode cNode)
Add methods from the super class.
- Parameters:
-
cNode
- The ClassNode
- Returns:
- A map of methods
public static FieldNode getField(ClassNode classNode, String fieldName)
Return the (potentially inherited) field of the classnode.
- Parameters:
-
classNode
- the classnode -
fieldName
- the name of the field
- Returns:
- the field or null if not found
public static String getPropNameForAccessor(String accessorName)
Returns the property name, e.g. age, given an accessor name, e.g. getAge. Returns the original if a valid prefix cannot be removed.
- Parameters:
-
accessorName
- the accessor name of interest, e.g. getAge
- Returns:
- the property name, e.g. age, or original if not a valid property accessor name
public static PropertyNode getStaticProperty(ClassNode cNode, String propName)
Detect whether a static property with the given name is within the class or a super class.
- Parameters:
-
cNode
- the ClassNode of interest -
propName
- the property name
- Returns:
- the static property if found or else null
public static boolean hasExplicitConstructor(AbstractASTTransformation xform, ClassNode cNode)
Determine if an explicit (non-generated) constructor is in the class.
- Parameters:
-
xform
- if non null, add an error if an explicit constructor is found -
cNode
- the type of the containing class
- Returns:
- true if an explicit (non-generated) constructor was found
public static boolean hasNoArgConstructor(ClassNode cNode)
public static boolean hasPossibleStaticMethod(ClassNode cNode, String name, Expression arguments, boolean trySpread)
Returns true if the given method has a possibly matching static method with the given name and arguments. Handles default arguments and optionally spread expressions.
- Parameters:
-
cNode
- the ClassNode of interest -
name
- the name of the method of interest -
arguments
- the arguments to match against -
trySpread
- whether to try to account for SpreadExpressions within the arguments
- Returns:
- true if a matching method was found
public static boolean hasPossibleStaticProperty(ClassNode cNode, String methodName)
Return true if we have a static accessor
public static boolean hasStaticProperty(ClassNode cNode, String propName)
public static boolean isInnerClass(ClassNode cNode)
Detect whether a given ClassNode is a inner class (non-static).
- Parameters:
-
cNode
- the ClassNode of interest
- Returns:
- true if the given node is a (non-static) inner class, else false
public static boolean isValidAccessorName(String accessorName)
Detect whether the given accessor name starts with "get", "set" or "is" followed by at least one character.
- Parameters:
-
accessorName
- the accessor name of interest, e.g. getAge
- Returns:
- true if a valid prefix is found
public static boolean samePackageName(ClassNode first, ClassNode second)
Determine if the given ClassNode values have the same package name.
- throws:
- NullPointerException if either of the given nodes are null
- Parameters:
-
first
- a ClassNode -
second
- a ClassNode
- Returns:
- true if both given nodes have the same package name
© 2003-2020 The Apache Software Foundation
Licensed under the Apache license.
https://docs.groovy-lang.org/3.0.7/html/gapi/org/apache/groovy/ast/tools/ClassNodeUtils.html