Class AnnotationUtil


  • public final class AnnotationUtil
    extends java.lang.Object
    Contains utility methods designed to work with annotations.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.lang.String FQ_OVERRIDE
      Fully-qualified Override annotation name.
      private static java.lang.String OVERRIDE
      Override annotation name.
      private static java.util.Set<java.lang.String> OVERRIDE_ANNOTATIONS
      Simple and fully-qualified Override annotation names.
      private static java.lang.String THE_AST_IS_NULL
      Common message.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private AnnotationUtil()
      Private utility constructor.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static boolean containsAnnotation​(DetailAST ast)
      Checks if the AST is annotated with any annotation.
      static boolean containsAnnotation​(DetailAST ast, java.lang.String annotation)
      Checks if the AST is annotated with the passed in annotation.
      static boolean containsAnnotation​(DetailAST ast, java.util.Set<java.lang.String> annotations)
      Checks if the given AST element is annotated with any of the specified annotations.
      private static DetailAST findFirstAnnotation​(DetailAST ast, java.util.function.Predicate<DetailAST> predicate)
      Checks if the given AST is annotated with at least one annotation that matches the given predicate and returns the AST representing the first matching annotation.
      static DetailAST getAnnotation​(DetailAST ast, java.lang.String annotation)
      Checks if the AST is annotated with the passed in annotation and returns the AST representing that annotation.
      private static java.lang.String getAnnotationFullIdent​(DetailAST annotationNode)
      Gets the full ident text of the annotation AST.
      static DetailAST getAnnotationHolder​(DetailAST ast)
      Gets the AST that holds a series of annotations for the potentially annotated AST.
      static boolean hasOverrideAnnotation​(DetailAST ast)
      Checks if the AST is annotated with Override or java.lang.Override annotation.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • AnnotationUtil

        private AnnotationUtil()
        Private utility constructor.
        Throws:
        java.lang.UnsupportedOperationException - if called
    • Method Detail

      • containsAnnotation

        public static boolean containsAnnotation​(DetailAST ast,
                                                 java.lang.String annotation)
        Checks if the AST is annotated with the passed in annotation.

        This method will not look for imports or package statements to detect the passed in annotation.

        To check if an AST contains a passed in annotation taking into account fully-qualified names (ex: java.lang.Override, Override) this method will need to be called twice. Once for each name given.

        Parameters:
        ast - the current node
        annotation - the annotation name to check for
        Returns:
        true if contains the annotation
      • containsAnnotation

        public static boolean containsAnnotation​(DetailAST ast)
        Checks if the AST is annotated with any annotation.
        Parameters:
        ast - the current node
        Returns:
        true if the AST contains at least one annotation
        Throws:
        java.lang.IllegalArgumentException - when ast is null
      • containsAnnotation

        public static boolean containsAnnotation​(DetailAST ast,
                                                 java.util.Set<java.lang.String> annotations)
        Checks if the given AST element is annotated with any of the specified annotations.

        This method accepts both simple and fully-qualified names, e.g. "Override" will match both java.lang.Override and Override.

        Parameters:
        ast - The type or method definition.
        annotations - A collection of annotations to look for.
        Returns:
        true if the given AST element is annotated with at least one of the specified annotations; false otherwise.
        Throws:
        java.lang.IllegalArgumentException - when ast or annotations are null
      • getAnnotationFullIdent

        private static java.lang.String getAnnotationFullIdent​(DetailAST annotationNode)
        Gets the full ident text of the annotation AST.
        Parameters:
        annotationNode - The annotation AST.
        Returns:
        The full ident text.
      • hasOverrideAnnotation

        public static boolean hasOverrideAnnotation​(DetailAST ast)
        Checks if the AST is annotated with Override or java.lang.Override annotation.
        Parameters:
        ast - the current node
        Returns:
        true if the AST contains Override annotation
        Throws:
        java.lang.IllegalArgumentException - when ast is null
      • getAnnotationHolder

        public static DetailAST getAnnotationHolder​(DetailAST ast)
        Gets the AST that holds a series of annotations for the potentially annotated AST. Returns null if the passed in AST does not have an Annotation Holder.
        Parameters:
        ast - the current node
        Returns:
        the Annotation Holder
        Throws:
        java.lang.IllegalArgumentException - when ast is null
      • getAnnotation

        public static DetailAST getAnnotation​(DetailAST ast,
                                              java.lang.String annotation)
        Checks if the AST is annotated with the passed in annotation and returns the AST representing that annotation.

        This method will not look for imports or package statements to detect the passed in annotation.

        To check if an AST contains a passed in annotation taking into account fully-qualified names (ex: java.lang.Override, Override) this method will need to be called twice. Once for each name given.

        Parameters:
        ast - the current node
        annotation - the annotation name to check for
        Returns:
        the AST representing that annotation
        Throws:
        java.lang.IllegalArgumentException - when ast or annotations are null; when annotation is blank
      • findFirstAnnotation

        private static DetailAST findFirstAnnotation​(DetailAST ast,
                                                     java.util.function.Predicate<DetailAST> predicate)
        Checks if the given AST is annotated with at least one annotation that matches the given predicate and returns the AST representing the first matching annotation.

        This method will not look for imports or package statements to detect the passed in annotation.

        Parameters:
        ast - the current node
        predicate - The predicate which decides if an annotation matches
        Returns:
        the AST representing that annotation