[Java] Class ClassNodeUtils

  • org.apache.groovy.ast.tools.ClassNodeUtils

Utility class for working with ClassNodes

Methods Summary

Methods
Type Params Return Type Name and description
static void addDeclaredMethodsFromAllInterfaces(ClassNode cNode, Map<String, MethodNode> methodsMap)
Adds methods from interfaces and parent interfaces.
static void addDeclaredMethodsFromInterfaces(ClassNode cNode, Map<String, MethodNode> methodsMap)
Adds methods from all interfaces.
static ConstructorNode addGeneratedConstructor(ClassNode classNode, int modifiers, Parameter[] parameters, ClassNode[] exceptions, Statement code)
Add a method that is marked as @Generated.
static void addGeneratedConstructor(ClassNode classNode, ConstructorNode consNode)
Add a method that is marked as @Generated.
static void addGeneratedInnerClass(ClassNode cNode, ClassNode inner)
Add an inner class that is marked as @Generated.
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.
static void addGeneratedMethod(ClassNode cNode, MethodNode mNode)
Add a method and mark it as @Generated.
static String formatTypeName(ClassNode cNode)
Formats a type name into a human readable version.
static Map<String, MethodNode> getDeclaredMethodsFromInterfaces(ClassNode cNode)
Gets methods from all interfaces.
static Map<String, MethodNode> getDeclaredMethodsFromSuper(ClassNode cNode)
Add methods from the super class.
static FieldNode getField(ClassNode classNode, String fieldName)
Return the (potentially inherited) field of the classnode.
static String getPropNameForAccessor(String accessorName)
Returns the property name, e.g. age, given an accessor name, e.g. getAge.
static PropertyNode getStaticProperty(ClassNode cNode, String propName)
Detect whether a static property with the given name is within the class or a super class.
static boolean hasExplicitConstructor(AbstractASTTransformation xform, ClassNode cNode)
Determine if an explicit (non-generated) constructor is in the class.
static boolean hasNoArgConstructor(ClassNode cNode)
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.
static boolean hasPossibleStaticProperty(ClassNode cNode, String methodName)
Return true if we have a static accessor
static boolean hasStaticProperty(ClassNode cNode, String propName)
static boolean isInnerClass(ClassNode cNode)
Detect whether a given ClassNode is a inner class (non-static).
static boolean isValidAccessorName(String accessorName)
Detect whether the given accessor name starts with "get", "set" or "is" followed by at least one character.
static boolean samePackageName(ClassNode first, ClassNode second)
Determine if the given ClassNode values have the same package name.

Inherited Methods Summary

Inherited Methods
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/2.5.14/html/gapi/org/apache/groovy/ast/tools/ClassNodeUtils.html