Package: org.apache.groovy.contracts.util

## [Java] Class AnnotationUtils

- org.apache.groovy.contracts.util.AnnotationUtils

-     public class AnnotationUtils
      extends Object

  Helper methods for reading/getting AnnotationNode instances.

- - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public static List<AnnotationNode>` | `getAnnotationNodeInHierarchyWithMetaAnnotation(ClassNode type, ClassNode anno)` Gets the next AnnotationNode instance in the inheritance line which is annotated with the given Annotation class `anno`.
    `` | `public static List<AnnotationNode>` | `getAnnotationNodeInHierarchyWithMetaAnnotation(ClassNode type, MethodNode originMethodNode, ClassNode metaAnnotationClassNode)`
    `` | `public static boolean` | `hasAnnotationOfType(AnnotatedNode annotatedNode, String typeOrPackageName)` Checks whether the given ClassNode is annotated with an annotations of the given package or full annotatedNode name.
    `` | `public static List<AnnotationNode>` | `hasMetaAnnotations(AnnotatedNode annotatedNode, String metaAnnotationClassName)` Loads all annotation nodes of the given AnnotatedNode instance which are marked with the annotation `metaAnnotationClassName`.

  - ### 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 List<AnnotationNode> getAnnotationNodeInHierarchyWithMetaAnnotation(ClassNode type, ClassNode anno)

      Gets the next AnnotationNode instance in the inheritance line which is annotated with the given Annotation class `anno`.

      Parameters:
        `type` - the ClassNode to check for the annotation
        `anno` - the annotation to watch out for
      Returns:
        the next AnnotationNode in the inheritance line, or `null`

    - #### public static List<AnnotationNode> getAnnotationNodeInHierarchyWithMetaAnnotation(ClassNode type, MethodNode originMethodNode, ClassNode metaAnnotationClassNode)

      Checks whether there exists a MethodNode up the inheritance tree where exists an annotation which is annotated with `metaAnnotationClassNode`.

      Parameters:
        `type` - the origin ClassNode
        `originMethodNode` - the origin MethodNode
        `metaAnnotationClassNode` - the ClassNode of the meta-annotation
      Returns:
        a list of AnnotationNode all annotated with `metaAnnotationClassNode`

    - #### public static boolean hasAnnotationOfType(AnnotatedNode annotatedNode, String typeOrPackageName)

      Checks whether the given ClassNode is annotated with an annotations of the given package or full annotatedNode name.

      Parameters:
        `annotatedNode` - the AnnotatedNode to search for the given annotation
        `typeOrPackageName` - can either be a part of the package or the complete annotation class name
      Returns:
        `true` if an annotation was found, `false` otherwise

    - #### public static List<AnnotationNode> hasMetaAnnotations(AnnotatedNode annotatedNode, String metaAnnotationClassName)

      Loads all annotation nodes of the given AnnotatedNode instance which are marked with the annotation `metaAnnotationClassName`.

      Parameters:
        `annotatedNode` - an AnnotatedNode from which the annotations are checked
        `metaAnnotationClassName` - the name of the meta annotation
      Returns:
        a list of AnnotationNode instances which implement the given `metaAnnotationClass`