Package org.apache.groovy.ast.tools
Class ClassNodeUtils
java.lang.Object
org.apache.groovy.ast.tools.ClassNodeUtils
Utility class for working with ClassNodes
- 
Method SummaryModifier and TypeMethodDescriptionstatic voidaddDeclaredMethodsFromAllInterfaces(ClassNode cNode, Map<String, MethodNode> methodsMap) Adds methods from interfaces and parent interfaces.static voidaddDeclaredMethodsFromInterfaces(ClassNode cNode, Map<String, MethodNode> methodsMap) Adds methods from all interfaces.static ConstructorNodeaddGeneratedConstructor(ClassNode classNode, int modifiers, Parameter[] parameters, ClassNode[] exceptions, Statement code) Adds a method that is marked as@Generated.static voidaddGeneratedConstructor(ClassNode classNode, ConstructorNode ctorNode) Adds a method that is marked as@Generated.static voidaddGeneratedInnerClass(ClassNode cNode, ClassNode inner) Adds an inner class that is marked as@Generated.static MethodNodeaddGeneratedMethod(ClassNode cNode, String name, int modifiers, ClassNode returnType, Parameter[] parameters, ClassNode[] exceptions, Statement code) Returns an existing method if one exists or else create a new method and mark it as@Generated.static voidaddGeneratedMethod(ClassNode cNode, MethodNode mNode) Adds a method and mark it as@Generated.static voidaddGeneratedMethod(ClassNode cNode, MethodNode mNode, boolean skipChecks) Adds a method and mark it as@Generated.static StringformatTypeName(ClassNode cNode) Formats a type name into a human-readable version.static Map<String,MethodNode> Gets methods from all interfaces.static Map<String,MethodNode> Gets methods from the super class.static FieldNodeSearches the class for a field that matches specified name.static FieldNodeSearches the class for a field that matches specified name and test.static MethodNodegetMethod(ClassNode classNode, String methodName, Predicate<? super MethodNode> acceptability) Searches the class for a method that matches specified name and test.static ClassNodegetNestHost(ClassNode cNode) Returns the nest host of the given class, which may be the class itself.static StringgetPropNameForAccessor(String accessorName) Returns the property name, e.g.static PropertyNodegetStaticProperty(ClassNode cNode, String propName) Finds static property within the class or super class.static booleanhasExplicitConstructor(AbstractASTTransformation xform, ClassNode cNode) Determines if the given ClassNode declares an explicit (non-generated) constructor.static booleanhasNoArgConstructor(ClassNode cNode) Determines if the given ClassNode declares a zero argument constructor.static booleanhasPossibleStaticMethod(ClassNode cNode, String name, Expression arguments, boolean trySpread) Determines if the given method has a possibly matching static method with the given name and arguments.static booleanhasPossibleStaticProperty(ClassNode cNode, String methodName) Determines if the given class has the named static property.static booleanhasStaticProperty(ClassNode cNode, String propName) Determines if the given class has the named static property.static booleanisCompatibleWith(ClassNode source, ClassNode target) Determines if the source ClassNode is compatible with the target ClassNode.static booleanisInnerClass(ClassNode cNode) Determines if the given ClassNode is a non-static inner class.static booleanisNonSealed(ClassNode cn) Determines if the type is declarednon-sealed.static booleanDetermines if given class is, extends or implements a class or interface.static booleanisValidAccessorName(String accessorName) Determines if the given accessor name starts with "get", "set" or "is" followed by at least one character.static booleansamePackageName(ClassNode first, ClassNode second) Determines if the given ClassNode values have the same package name.
- 
Method Details- 
formatTypeNameFormats 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)
- Since:
- 2.5.0
 
- 
addGeneratedMethodpublic static MethodNode addGeneratedMethod(ClassNode cNode, String name, int modifiers, ClassNode returnType, Parameter[] parameters, ClassNode[] exceptions, Statement code) Returns an existing method if one exists or else create a new method and mark it as@Generated.- Since:
- 2.5.3
- See Also:
 
- 
addGeneratedMethodAdds a method and mark it as@Generated.- Since:
- 2.5.3
- See Also:
 
- 
addGeneratedMethodAdds a method and mark it as@Generated.- Since:
- 3.0.8
- See Also:
 
- 
addGeneratedInnerClassAdds an inner class that is marked as@Generated.- Since:
- 2.5.7
- See Also:
 
- 
addGeneratedConstructorpublic static ConstructorNode addGeneratedConstructor(ClassNode classNode, int modifiers, Parameter[] parameters, ClassNode[] exceptions, Statement code) Adds a method that is marked as@Generated.- Since:
- 2.5.3
- See Also:
 
- 
addGeneratedConstructorAdds a method that is marked as@Generated.- Since:
- 2.5.3
- See Also:
 
- 
getDeclaredMethodsFromSuperGets methods from the super class.- Since:
- 2.5.0
 
- 
addDeclaredMethodsFromInterfacespublic 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
- Since:
- 2.5.0
 
- 
getDeclaredMethodsFromInterfacesGets methods from all interfaces. Methods from interfaces visited early take precedence over later ones.- Parameters:
- cNode- The ClassNode
- Returns:
- A map of methods
- Since:
- 2.5.0
 
- 
addDeclaredMethodsFromAllInterfacespublic 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
- Since:
- 2.5.0
 
- 
hasPossibleStaticMethodpublic static boolean hasPossibleStaticMethod(ClassNode cNode, String name, Expression arguments, boolean trySpread) Determines 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:
- trueif a matching method was found.
- Since:
- 2.5.0
 
- 
hasPossibleStaticPropertyDetermines if the given class has the named static property.- Since:
- 2.5.0
 
- 
getPropNameForAccessorReturns 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
- Since:
- 2.5.0
 
- 
isValidAccessorNameDetermines if 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
- Since:
- 2.5.0
 
- 
isNonSealedDetermines if the type is declarednon-sealed.- Since:
- 5.0.0
 
- 
hasStaticPropertyDetermines if the given class has the named static property.- Since:
- 2.5.0
 
- 
getStaticPropertyFinds static property within the class or super class.- Parameters:
- cNode- the ClassNode of interest
- propName- the property name
- Returns:
- the static property if found or else null
- Since:
- 2.5.0
 
- 
getNestHostReturns the nest host of the given class, which may be the class itself.- Since:
- 5.0.0
 
- 
isInnerClassDetermines if the given ClassNode is a non-static inner class.- Parameters:
- cNode- the ClassNode of interest
- Returns:
- true if the given node is a (non-static) inner class, else false
- Since:
- 2.5.0
 
- 
isCompatibleWithDetermines if the source ClassNode is compatible with the target ClassNode.- Since:
- 4.0.0
 
- 
hasNoArgConstructorDetermines if the given ClassNode declares a zero argument constructor.- Since:
- 2.5.0
 
- 
hasExplicitConstructorDetermines if the given ClassNode declares an explicit (non-generated) constructor.- 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
- Since:
- 2.5.0
 
- 
samePackageNameDetermines if the given ClassNode values have the same package name.- Parameters:
- first- a ClassNode
- second- a ClassNode
- Returns:
- true if both given nodes have the same package name
- Since:
- 2.5.0
 
- 
getFieldSearches the class for a field that matches specified name.- Since:
- 3.0.0
 
- 
getFieldpublic static FieldNode getField(ClassNode classNode, String fieldName, Predicate<? super FieldNode> acceptability) Searches the class for a field that matches specified name and test.- Since:
- 4.0.0
 
- 
getMethodpublic static MethodNode getMethod(ClassNode classNode, String methodName, Predicate<? super MethodNode> acceptability) Searches the class for a method that matches specified name and test.- Since:
- 5.0.0
 
- 
isSubtypeDetermines if given class is, extends or implements a class or interface.- Since:
- 4.0.16
 
 
-