Class AbstractElementUtilsDecorator

    • Nested Class Summary

      • Nested classes/interfaces inherited from interface javax.lang.model.util.Elements

        javax.lang.model.util.Elements.Origin
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private javax.lang.model.util.Elements delegate  
      private javax.lang.model.element.Element moduleElement
      The module element when running with the module system, null otherwise.
    • Constructor Summary

      Constructors 
      Constructor Description
      AbstractElementUtilsDecorator​(javax.annotation.processing.ProcessingEnvironment processingEnv, javax.lang.model.element.TypeElement mapperElement)  
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      private void addEnclosedFieldsInHierarchy​(java.util.List<javax.lang.model.element.VariableElement> alreadyAdded, javax.lang.model.element.TypeElement element, javax.lang.model.element.TypeElement parentType)  
      private void addEnclosedMethodsInHierarchy​(java.util.List<javax.lang.model.element.ExecutableElement> alreadyAdded, java.util.Collection<java.lang.String> alreadyVisitedElements, javax.lang.model.element.TypeElement element, javax.lang.model.element.TypeElement parentType)  
      private static void addFields​(java.util.List<javax.lang.model.element.VariableElement> alreadyCollected, java.util.List<javax.lang.model.element.VariableElement> variablesToAdd)  
      private void addMethodNotYetOverridden​(java.util.List<javax.lang.model.element.ExecutableElement> alreadyCollected, java.util.List<javax.lang.model.element.ExecutableElement> methodsToAdd, javax.lang.model.element.TypeElement parentType)  
      private javax.lang.model.element.TypeElement asTypeElement​(javax.lang.model.type.TypeMirror mirror)  
      java.util.List<? extends javax.lang.model.element.AnnotationMirror> getAllAnnotationMirrors​(javax.lang.model.element.Element e)  
      java.util.List<javax.lang.model.element.ExecutableElement> getAllEnclosedExecutableElements​(javax.lang.model.element.TypeElement element)
      Finds all executable elements within the given type element, including executable elements defined in super classes and implemented interfaces.
      java.util.List<javax.lang.model.element.VariableElement> getAllEnclosedFields​(javax.lang.model.element.TypeElement element)
      Finds all variable elements within the given type element, including variable elements defined in super classes and implemented interfaces and including the fields in the .
      java.util.List<? extends javax.lang.model.element.Element> getAllMembers​(javax.lang.model.element.TypeElement type)  
      javax.lang.model.element.Name getBinaryName​(javax.lang.model.element.TypeElement type)  
      java.lang.String getConstantExpression​(java.lang.Object value)  
      java.lang.String getDocComment​(javax.lang.model.element.Element e)  
      java.util.Map<? extends javax.lang.model.element.ExecutableElement,​? extends javax.lang.model.element.AnnotationValue> getElementValuesWithDefaults​(javax.lang.model.element.AnnotationMirror a)  
      javax.lang.model.element.Name getName​(java.lang.CharSequence cs)  
      javax.lang.model.element.PackageElement getPackageElement​(java.lang.CharSequence name)  
      javax.lang.model.element.PackageElement getPackageOf​(javax.lang.model.element.Element type)  
      javax.lang.model.element.TypeElement getTypeElement​(java.lang.CharSequence name)  
      private boolean hasNonObjectSuperclass​(javax.lang.model.element.TypeElement element)  
      boolean hides​(javax.lang.model.element.Element hider, javax.lang.model.element.Element hidden)  
      boolean isDeprecated​(javax.lang.model.element.Element e)  
      boolean isFunctionalInterface​(javax.lang.model.element.TypeElement type)  
      private boolean isNotObjectEquals​(javax.lang.model.element.ExecutableElement executable)  
      private boolean isNotPrivate​(javax.lang.model.element.ExecutableElement executable)  
      private boolean methodWasNotYetOverridden​(java.util.List<javax.lang.model.element.ExecutableElement> alreadyCollected, javax.lang.model.element.ExecutableElement executable, javax.lang.model.element.TypeElement parentType)  
      boolean overrides​(javax.lang.model.element.ExecutableElement overrider, javax.lang.model.element.ExecutableElement overridden, javax.lang.model.element.TypeElement type)  
      void printElements​(java.io.Writer w, javax.lang.model.element.Element... elements)  
      protected abstract javax.lang.model.element.TypeElement replaceTypeElementIfNecessary​(javax.lang.model.element.TypeElement element)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface javax.lang.model.util.Elements

        getAllModuleElements, getAllPackageElements, getAllTypeElements, getModuleElement, getModuleOf, getOrigin, getOrigin, getOrigin, getPackageElement, getTypeElement, isBridge
    • Field Detail

      • delegate

        private final javax.lang.model.util.Elements delegate
      • moduleElement

        private final javax.lang.model.element.Element moduleElement
        The module element when running with the module system, null otherwise.
    • Constructor Detail

      • AbstractElementUtilsDecorator

        AbstractElementUtilsDecorator​(javax.annotation.processing.ProcessingEnvironment processingEnv,
                                      javax.lang.model.element.TypeElement mapperElement)
    • Method Detail

      • getPackageElement

        public javax.lang.model.element.PackageElement getPackageElement​(java.lang.CharSequence name)
        Specified by:
        getPackageElement in interface javax.lang.model.util.Elements
      • getTypeElement

        public javax.lang.model.element.TypeElement getTypeElement​(java.lang.CharSequence name)
        Specified by:
        getTypeElement in interface javax.lang.model.util.Elements
      • getElementValuesWithDefaults

        public java.util.Map<? extends javax.lang.model.element.ExecutableElement,​? extends javax.lang.model.element.AnnotationValue> getElementValuesWithDefaults​(javax.lang.model.element.AnnotationMirror a)
        Specified by:
        getElementValuesWithDefaults in interface javax.lang.model.util.Elements
      • getDocComment

        public java.lang.String getDocComment​(javax.lang.model.element.Element e)
        Specified by:
        getDocComment in interface javax.lang.model.util.Elements
      • isDeprecated

        public boolean isDeprecated​(javax.lang.model.element.Element e)
        Specified by:
        isDeprecated in interface javax.lang.model.util.Elements
      • getBinaryName

        public javax.lang.model.element.Name getBinaryName​(javax.lang.model.element.TypeElement type)
        Specified by:
        getBinaryName in interface javax.lang.model.util.Elements
      • getPackageOf

        public javax.lang.model.element.PackageElement getPackageOf​(javax.lang.model.element.Element type)
        Specified by:
        getPackageOf in interface javax.lang.model.util.Elements
      • getAllMembers

        public java.util.List<? extends javax.lang.model.element.Element> getAllMembers​(javax.lang.model.element.TypeElement type)
        Specified by:
        getAllMembers in interface javax.lang.model.util.Elements
      • getAllAnnotationMirrors

        public java.util.List<? extends javax.lang.model.element.AnnotationMirror> getAllAnnotationMirrors​(javax.lang.model.element.Element e)
        Specified by:
        getAllAnnotationMirrors in interface javax.lang.model.util.Elements
      • hides

        public boolean hides​(javax.lang.model.element.Element hider,
                             javax.lang.model.element.Element hidden)
        Specified by:
        hides in interface javax.lang.model.util.Elements
      • overrides

        public boolean overrides​(javax.lang.model.element.ExecutableElement overrider,
                                 javax.lang.model.element.ExecutableElement overridden,
                                 javax.lang.model.element.TypeElement type)
        Specified by:
        overrides in interface javax.lang.model.util.Elements
      • getConstantExpression

        public java.lang.String getConstantExpression​(java.lang.Object value)
        Specified by:
        getConstantExpression in interface javax.lang.model.util.Elements
      • printElements

        public void printElements​(java.io.Writer w,
                                  javax.lang.model.element.Element... elements)
        Specified by:
        printElements in interface javax.lang.model.util.Elements
      • getName

        public javax.lang.model.element.Name getName​(java.lang.CharSequence cs)
        Specified by:
        getName in interface javax.lang.model.util.Elements
      • isFunctionalInterface

        public boolean isFunctionalInterface​(javax.lang.model.element.TypeElement type)
        Specified by:
        isFunctionalInterface in interface javax.lang.model.util.Elements
      • getAllEnclosedExecutableElements

        public java.util.List<javax.lang.model.element.ExecutableElement> getAllEnclosedExecutableElements​(javax.lang.model.element.TypeElement element)
        Description copied from interface: ElementUtils
        Finds all executable elements within the given type element, including executable elements defined in super classes and implemented interfaces. Methods defined in Object, implementations of Object.equals(Object) and private methods are ignored
        Specified by:
        getAllEnclosedExecutableElements in interface ElementUtils
        Parameters:
        element - the element to inspect
        Returns:
        the executable elements usable in the type
      • getAllEnclosedFields

        public java.util.List<javax.lang.model.element.VariableElement> getAllEnclosedFields​(javax.lang.model.element.TypeElement element)
        Description copied from interface: ElementUtils
        Finds all variable elements within the given type element, including variable elements defined in super classes and implemented interfaces and including the fields in the .
        Specified by:
        getAllEnclosedFields in interface ElementUtils
        Parameters:
        element - the element to inspect
        Returns:
        the executable elements usable in the type
      • addEnclosedMethodsInHierarchy

        private void addEnclosedMethodsInHierarchy​(java.util.List<javax.lang.model.element.ExecutableElement> alreadyAdded,
                                                   java.util.Collection<java.lang.String> alreadyVisitedElements,
                                                   javax.lang.model.element.TypeElement element,
                                                   javax.lang.model.element.TypeElement parentType)
      • addMethodNotYetOverridden

        private void addMethodNotYetOverridden​(java.util.List<javax.lang.model.element.ExecutableElement> alreadyCollected,
                                               java.util.List<javax.lang.model.element.ExecutableElement> methodsToAdd,
                                               javax.lang.model.element.TypeElement parentType)
        Parameters:
        alreadyCollected - methods that have already been collected and to which the not-yet-overridden methods will be added
        methodsToAdd - methods to add to alreadyAdded, if they are not yet overridden by an element in the list
        parentType - the type for with elements are collected
      • isNotObjectEquals

        private boolean isNotObjectEquals​(javax.lang.model.element.ExecutableElement executable)
        Parameters:
        executable - the executable to check
        Returns:
        true, iff the executable does not represent Object.equals(Object) or an overridden version of it
      • methodWasNotYetOverridden

        private boolean methodWasNotYetOverridden​(java.util.List<javax.lang.model.element.ExecutableElement> alreadyCollected,
                                                  javax.lang.model.element.ExecutableElement executable,
                                                  javax.lang.model.element.TypeElement parentType)
        Parameters:
        alreadyCollected - the list of already collected methods of one type hierarchy (order is from sub-types to super-types)
        executable - the method to check
        parentType - the type for which elements are collected
        Returns:
        true, iff the given executable was not yet overridden by a method in the given list.
      • addEnclosedFieldsInHierarchy

        private void addEnclosedFieldsInHierarchy​(java.util.List<javax.lang.model.element.VariableElement> alreadyAdded,
                                                  javax.lang.model.element.TypeElement element,
                                                  javax.lang.model.element.TypeElement parentType)
      • addFields

        private static void addFields​(java.util.List<javax.lang.model.element.VariableElement> alreadyCollected,
                                      java.util.List<javax.lang.model.element.VariableElement> variablesToAdd)
      • hasNonObjectSuperclass

        private boolean hasNonObjectSuperclass​(javax.lang.model.element.TypeElement element)
        Parameters:
        element - the type element to check
        Returns:
        true, iff the type has a super-class that is not java.lang.Object
      • asTypeElement

        private javax.lang.model.element.TypeElement asTypeElement​(javax.lang.model.type.TypeMirror mirror)
        Parameters:
        mirror - the type positionHint
        Returns:
        the corresponding type element
      • isNotPrivate

        private boolean isNotPrivate​(javax.lang.model.element.ExecutableElement executable)
        Parameters:
        executable - the executable to check
        Returns:
        true, iff the executable does not have a private modifier
      • replaceTypeElementIfNecessary

        protected abstract javax.lang.model.element.TypeElement replaceTypeElementIfNecessary​(javax.lang.model.element.TypeElement element)