Class Traits
- java.lang.Object
- 
- org.codehaus.groovy.transform.trait.Traits
 
- 
 public abstract class Traits extends Object A collection of utility methods used to deal with traits.- Since:
- 2.3.0
 
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description static interfaceTraits.ImplementedInternal annotation used to indicate which methods in a trait interface have a default implementation.static interfaceTraits.TraitBridgeInternal annotation used to indicate that a method is a bridge method to a trait default implementation.
 - 
Field SummaryFields Modifier and Type Field Description static ClassNodeGENERATED_PROXY_CLASSNODEstatic ClassNodeIMPLEMENTED_CLASSNODEstatic ClassNodeSELFTYPE_CLASSNODEstatic StringSTATIC_THIS_OBJECTstatic StringTHIS_OBJECTstatic Class<Trait>TRAIT_CLASSstatic ClassNodeTRAIT_CLASSNODEstatic ClassNodeTRAITBRIDGE_CLASSNODE
 - 
Constructor SummaryConstructors Constructor Description Traits()
 - 
Method SummaryAll Methods Static Methods Concrete Methods Modifier and Type Method Description static LinkedHashSet<ClassNode>collectAllInterfacesReverseOrder(ClassNode cNode, LinkedHashSet<ClassNode> interfaces)Collects all interfaces of a class node, but reverses the order of the declaration of direct interfaces of this class node.static LinkedHashSet<ClassNode>collectSelfTypes(ClassNode receiver, LinkedHashSet<ClassNode> selfTypes)Collects all the self types that a type should extend or implement, given the traits is implements.static LinkedHashSet<ClassNode>collectSelfTypes(ClassNode receiver, LinkedHashSet<ClassNode> selfTypes, boolean checkInterfaces, boolean checkSuperClass)Collects all the self types that a type should extend or implement, given the traits is implements.static String[]decomposeSuperCallName(String origName)Returns the name of a method without the super trait specific prefix.static ClassNodefindFieldHelper(ClassNode trait)static ClassNodefindHelper(ClassNode trait)static ClassNodefindStaticFieldHelper(ClassNode trait)static List<ClassNode>findTraits(ClassNode cNode)Find all traits associated with the given type.static <T> TgetAsType(Object self, Class<T> clazz)Converts a class implementing some trait into a target class.static MethodgetBridgeMethodTarget(Method someMethod)Reflection API to find the method corresponding to the default implementation of a trait, given a bridge method.static booleanhasDefaultImplementation(Method method)Indicates whether a method in a trait interface has a default implementation.static booleanhasDefaultImplementation(MethodNode method)Indicates whether a method in a trait interface has a default implementation.static booleanisAnnotatedWithTrait(ClassNode cNode)Returns true if the specified class node is annotated with theTraitinterface.static booleanisBridgeMethod(Method someMethod)Reflection API to indicate whether some method is a bridge method to the default implementation of a trait.static booleanisTrait(Class<?> clazz)Returns true if the specified class is a trait.static booleanisTrait(ClassNode cNode)Returns true if the specified class node is a trait.
 
- 
- 
- 
Field Detail- 
IMPLEMENTED_CLASSNODEpublic static final ClassNode IMPLEMENTED_CLASSNODE 
 - 
TRAITBRIDGE_CLASSNODEpublic static final ClassNode TRAITBRIDGE_CLASSNODE 
 - 
TRAIT_CLASSNODEpublic static final ClassNode TRAIT_CLASSNODE 
 - 
GENERATED_PROXY_CLASSNODEpublic static final ClassNode GENERATED_PROXY_CLASSNODE 
 - 
SELFTYPE_CLASSNODEpublic static final ClassNode SELFTYPE_CLASSNODE 
 - 
THIS_OBJECTpublic static final String THIS_OBJECT - See Also:
- Constant Field Values
 
 - 
STATIC_THIS_OBJECTpublic static final String STATIC_THIS_OBJECT - See Also:
- Constant Field Values
 
 
- 
 - 
Method Detail- 
isTraitpublic static boolean isTrait(ClassNode cNode) Returns true if the specified class node is a trait.- Parameters:
- cNode- a class node to test
- Returns:
- true if the classnode represents a trait
 
 - 
isTraitpublic static boolean isTrait(Class<?> clazz) Returns true if the specified class is a trait.- Parameters:
- clazz- a class to test
- Returns:
- true if the classnode represents a trait
 
 - 
isAnnotatedWithTraitpublic static boolean isAnnotatedWithTrait(ClassNode cNode) Returns true if the specified class node is annotated with theTraitinterface.- Parameters:
- cNode- a class node
- Returns:
- true if the specified class node is annotated with the Traitinterface.
 
 - 
hasDefaultImplementationpublic static boolean hasDefaultImplementation(MethodNode method) Indicates whether a method in a trait interface has a default implementation.- Parameters:
- method- a method node
- Returns:
- true if the method has a default implementation in the trait
 
 - 
hasDefaultImplementationpublic static boolean hasDefaultImplementation(Method method) Indicates whether a method in a trait interface has a default implementation.- Parameters:
- method- a method node
- Returns:
- true if the method has a default implementation in the trait
 
 - 
isBridgeMethodpublic static boolean isBridgeMethod(Method someMethod) Reflection API to indicate whether some method is a bridge method to the default implementation of a trait.- Parameters:
- someMethod- a method node
- Returns:
- null if it is not a method implemented in a trait. If it is, returns the method from the trait class.
 
 - 
getBridgeMethodTargetpublic static Method getBridgeMethodTarget(Method someMethod) Reflection API to find the method corresponding to the default implementation of a trait, given a bridge method.- Parameters:
- someMethod- a method node
- Returns:
- null if it is not a method implemented in a trait. If it is, returns the method from the trait class.
 
 - 
getAsTypepublic static <T> T getAsType(Object self, Class<T> clazz) Converts a class implementing some trait into a target class. If the trait is a dynamic proxy and that the target class is assignable to the target object of the proxy, then the target object is returned. Otherwise, falls back toDefaultGroovyMethods.asType(java.lang.Object, Class)- Parameters:
- self- an object to be coerced to some class
- clazz- the class to be coerced to
- Returns:
- the object coerced to the target class, or the proxy instance if it is compatible with the target class.
 
 - 
decomposeSuperCallNamepublic static String[] decomposeSuperCallName(String origName) Returns the name of a method without the super trait specific prefix. If the method name doesn't correspond to a super trait method call, the result will be null.- Parameters:
- origName- the name of a method
- Returns:
- null if the name doesn't start with the super trait prefix, otherwise the name without the prefix
 
 - 
collectAllInterfacesReverseOrderpublic static LinkedHashSet<ClassNode> collectAllInterfacesReverseOrder(ClassNode cNode, LinkedHashSet<ClassNode> interfaces) Collects all interfaces of a class node, but reverses the order of the declaration of direct interfaces of this class node. This is used to make sure a trait implementing A,B where both A and B have the same method will take the method from B (latest), aligning the behavior with categories.- Parameters:
- cNode- a class node
- interfaces- ordered set of interfaces
 
 - 
collectSelfTypespublic static LinkedHashSet<ClassNode> collectSelfTypes(ClassNode receiver, LinkedHashSet<ClassNode> selfTypes) Collects all the self types that a type should extend or implement, given the traits is implements. Collects from interfaces and superclasses too.- Parameters:
- receiver- a class node that may implement a trait
- selfTypes- a set where the self types will be put
- Returns:
- the selfTypescollection
- Since:
- 2.4.0
 
 - 
collectSelfTypespublic static LinkedHashSet<ClassNode> collectSelfTypes(ClassNode receiver, LinkedHashSet<ClassNode> selfTypes, boolean checkInterfaces, boolean checkSuperClass) Collects all the self types that a type should extend or implement, given the traits is implements.- Parameters:
- receiver- a class node that may implement a trait
- selfTypes- a set where the self types will be put
- checkInterfaces- should the interfaces that the node implements be collected too
- checkSuperClass- should we collect from the superclass too
- Returns:
- the selfTypescollection
- Since:
- 2.4.0
 
 
- 
 
-