Class ElementHelper


  • public final class ElementHelper
    extends java.lang.Object
    An utility class to work with element.
    Author:
    Kevin Pollet - SERLI - (kevin.pollet@serli.com), James R. Perkins
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.util.Collection<javax.lang.model.element.AnnotationMirror> getAnnotations​(javax.lang.model.element.Element element, java.lang.Class<? extends java.lang.annotation.Annotation> groupedAnnotation, java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
      Returns annotations that are associated with the element that match the annotation parameter type.
      static javax.lang.model.element.TypeElement getClassAnnotationValue​(javax.lang.model.element.Element element, java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
      Retrieves the first attribute value from the annotation and assumes it's a class type.
      static javax.lang.model.element.TypeElement getClassAnnotationValue​(javax.lang.model.element.Element element, java.lang.Class<? extends java.lang.annotation.Annotation> annotation, java.lang.String attributeName)
      Retrieves the attribute value from the annotation and assumes it's a class type.
      static java.util.List<javax.lang.model.type.TypeMirror> getClassArrayAnnotationValue​(javax.lang.model.element.Element element, java.lang.Class<? extends java.lang.annotation.Annotation> annotation, java.lang.String attributeName)
      Retrieves the attribute value from the annotation and assumes it's an array classes.
      static java.util.List<? extends javax.lang.model.type.TypeMirror> getTypeArguments​(javax.lang.model.element.Element element)
      Returns the type arguments for the element.
      static java.util.List<? extends javax.lang.model.type.TypeMirror> getTypeArguments​(javax.lang.model.type.TypeMirror type)
      Returns the type arguments for the type.
      static boolean hasConstructor​(javax.lang.model.util.Types types, javax.lang.model.element.Element element, java.util.List<javax.lang.model.type.TypeMirror> args)
      Checks whether or not a constructor matching the parameters exists.
      static boolean isAnnotatedWith​(javax.lang.model.AnnotatedConstruct annotatedConstruct, java.lang.Class<? extends java.lang.annotation.Annotation> clazz)
      Check if an element is annotated with the given annotation.
      static javax.lang.model.type.TypeMirror toType​(javax.annotation.processing.ProcessingEnvironment processingEnv, java.lang.Class<?> type)
      Returns the type as a TypeMirror.
      static javax.lang.model.type.TypeMirror toType​(javax.lang.model.util.Elements elements, java.lang.Class<?> type)
      Returns the type as a TypeMirror.
      static javax.lang.model.element.TypeElement toTypeElement​(javax.annotation.processing.ProcessingEnvironment processingEnv, java.lang.Class<?> type)
      Returns the type as a TypeMirror.
      static javax.lang.model.element.TypeElement toTypeElement​(javax.lang.model.util.Elements elements, java.lang.Class<?> type)
      Returns the type as a TypeMirror.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • getTypeArguments

        public static java.util.List<? extends javax.lang.model.type.TypeMirror> getTypeArguments​(javax.lang.model.element.Element element)
        Returns the type arguments for the element. If the elements type is not a DeclaredType or the element does not have any type arguments an empty list is returned.
        Parameters:
        element - the element to get the type arguments for
        Returns:
        the type arguments or an empty list
      • getTypeArguments

        public static java.util.List<? extends javax.lang.model.type.TypeMirror> getTypeArguments​(javax.lang.model.type.TypeMirror type)
        Returns the type arguments for the type. If the type is not a DeclaredType or the type does not have any type arguments an empty list is returned.
        Parameters:
        type - the type to get the type arguments for
        Returns:
        the type arguments or an empty list
      • isAnnotatedWith

        public static boolean isAnnotatedWith​(javax.lang.model.AnnotatedConstruct annotatedConstruct,
                                              java.lang.Class<? extends java.lang.annotation.Annotation> clazz)
        Check if an element is annotated with the given annotation.
        Parameters:
        annotatedConstruct - the object to look for the annotation on.
        clazz - the annotation class
        Returns:
        true if the element is annotated, otherwise false
        Throws:
        java.lang.IllegalArgumentException - if element parameter is null
      • getClassAnnotationValue

        public static javax.lang.model.element.TypeElement getClassAnnotationValue​(javax.lang.model.element.Element element,
                                                                                   java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
        Retrieves the first attribute value from the annotation and assumes it's a class type.
        Parameters:
        element - the element the annotation is on
        annotation - the annotation to get the value from
        Returns:
        a TypeElement representing the value for the first annotation attribute or null if no attributes were found
      • getClassAnnotationValue

        public static javax.lang.model.element.TypeElement getClassAnnotationValue​(javax.lang.model.element.Element element,
                                                                                   java.lang.Class<? extends java.lang.annotation.Annotation> annotation,
                                                                                   java.lang.String attributeName)
        Retrieves the attribute value from the annotation and assumes it's a class type.
        Parameters:
        element - the element the annotation is on
        annotation - the annotation to get the value from
        attributeName - the name of the attribute to retrieve the class value for
        Returns:
        a TypeElement representing the value for the annotation attribute or null if the attribute was not found
      • getClassArrayAnnotationValue

        public static java.util.List<javax.lang.model.type.TypeMirror> getClassArrayAnnotationValue​(javax.lang.model.element.Element element,
                                                                                                    java.lang.Class<? extends java.lang.annotation.Annotation> annotation,
                                                                                                    java.lang.String attributeName)
        Retrieves the attribute value from the annotation and assumes it's an array classes.
        Parameters:
        element - the element the annotation is on
        annotation - the annotation to get the value from
        attributeName - the name of the attribute to retrieve the class value array for
        Returns:
        a list of TypeMirror representing the value for the annotation attribute or an empty list
      • getAnnotations

        public static java.util.Collection<javax.lang.model.element.AnnotationMirror> getAnnotations​(javax.lang.model.element.Element element,
                                                                                                     java.lang.Class<? extends java.lang.annotation.Annotation> groupedAnnotation,
                                                                                                     java.lang.Class<? extends java.lang.annotation.Annotation> annotation)
        Returns annotations that are associated with the element that match the annotation parameter type. If the groupedAnnotation is not null then any repeated annotations that math the annotation parameter type are also returned.

        The groupedAnnotation must have a value attribute that includes an array of annotations that math the annotation parameter type.

        Parameters:
        element - the element to search for annotations
        groupedAnnotation - the grouped annotation, e.g. collector for repeatable annotations, or null if not a repeatable annotation
        annotation - the annotation to search for
        Returns:
        a collection matched annotations
      • hasConstructor

        public static boolean hasConstructor​(javax.lang.model.util.Types types,
                                             javax.lang.model.element.Element element,
                                             java.util.List<javax.lang.model.type.TypeMirror> args)
        Checks whether or not a constructor matching the parameters exists.
        Parameters:
        types - the type utility used to compare the type arguments
        element - the element that contains the constructors
        args - the arguments the constructor should match
        Returns:
        true if a matching constructor was found otherwise false
      • toTypeElement

        public static javax.lang.model.element.TypeElement toTypeElement​(javax.annotation.processing.ProcessingEnvironment processingEnv,
                                                                         java.lang.Class<?> type)
        Returns the type as a TypeMirror.
        Parameters:
        processingEnv - the processing environment to get the elements utility
        type - the type to create the TypeMirror for
        Returns:
        the type
      • toTypeElement

        public static javax.lang.model.element.TypeElement toTypeElement​(javax.lang.model.util.Elements elements,
                                                                         java.lang.Class<?> type)
        Returns the type as a TypeMirror.
        Parameters:
        elements - the element utility used to generate the tye type
        type - the type to create the TypeMirror for
        Returns:
        the type
      • toType

        public static javax.lang.model.type.TypeMirror toType​(javax.annotation.processing.ProcessingEnvironment processingEnv,
                                                              java.lang.Class<?> type)
        Returns the type as a TypeMirror.
        Parameters:
        processingEnv - the processing environment to get the elements utility
        type - the type to create the TypeMirror for
        Returns:
        the type
      • toType

        public static javax.lang.model.type.TypeMirror toType​(javax.lang.model.util.Elements elements,
                                                              java.lang.Class<?> type)
        Returns the type as a TypeMirror.
        Parameters:
        elements - the element utility used to generate the tye type
        type - the type to create the TypeMirror for
        Returns:
        the type