Package org.mapstruct.ap.internal.util
Class AbstractElementUtilsDecorator
- java.lang.Object
-
- org.mapstruct.ap.internal.util.AbstractElementUtilsDecorator
-
- All Implemented Interfaces:
javax.lang.model.util.Elements,ElementUtils
- Direct Known Subclasses:
EclipseElementUtilsDecorator,JavacElementUtilsDecorator
public abstract class AbstractElementUtilsDecorator extends java.lang.Object implements ElementUtils
-
-
Field Summary
Fields Modifier and Type Field Description private javax.lang.model.util.Elementsdelegateprivate javax.lang.model.element.ElementmoduleElementThe module element when running with the module system,nullotherwise.
-
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 voidaddEnclosedFieldsInHierarchy(java.util.List<javax.lang.model.element.VariableElement> alreadyAdded, javax.lang.model.element.TypeElement element, javax.lang.model.element.TypeElement parentType)private voidaddEnclosedMethodsInHierarchy(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 voidaddFields(java.util.List<javax.lang.model.element.VariableElement> alreadyCollected, java.util.List<javax.lang.model.element.VariableElement> variablesToAdd)private voidaddMethodNotYetOverridden(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.TypeElementasTypeElement(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.NamegetBinaryName(javax.lang.model.element.TypeElement type)java.lang.StringgetConstantExpression(java.lang.Object value)java.lang.StringgetDocComment(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.NamegetName(java.lang.CharSequence cs)javax.lang.model.element.PackageElementgetPackageElement(java.lang.CharSequence name)javax.lang.model.element.PackageElementgetPackageOf(javax.lang.model.element.Element type)javax.lang.model.element.TypeElementgetTypeElement(java.lang.CharSequence name)private booleanhasNonObjectSuperclass(javax.lang.model.element.TypeElement element)booleanhides(javax.lang.model.element.Element hider, javax.lang.model.element.Element hidden)booleanisDeprecated(javax.lang.model.element.Element e)booleanisFunctionalInterface(javax.lang.model.element.TypeElement type)private booleanisNotObjectEquals(javax.lang.model.element.ExecutableElement executable)private booleanisNotPrivate(javax.lang.model.element.ExecutableElement executable)private booleanmethodWasNotYetOverridden(java.util.List<javax.lang.model.element.ExecutableElement> alreadyCollected, javax.lang.model.element.ExecutableElement executable, javax.lang.model.element.TypeElement parentType)booleanoverrides(javax.lang.model.element.ExecutableElement overrider, javax.lang.model.element.ExecutableElement overridden, javax.lang.model.element.TypeElement type)voidprintElements(java.io.Writer w, javax.lang.model.element.Element... elements)protected abstract javax.lang.model.element.TypeElementreplaceTypeElementIfNecessary(javax.lang.model.element.TypeElement element)
-
-
-
Method Detail
-
getPackageElement
public javax.lang.model.element.PackageElement getPackageElement(java.lang.CharSequence name)
- Specified by:
getPackageElementin interfacejavax.lang.model.util.Elements
-
getTypeElement
public javax.lang.model.element.TypeElement getTypeElement(java.lang.CharSequence name)
- Specified by:
getTypeElementin interfacejavax.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:
getElementValuesWithDefaultsin interfacejavax.lang.model.util.Elements
-
getDocComment
public java.lang.String getDocComment(javax.lang.model.element.Element e)
- Specified by:
getDocCommentin interfacejavax.lang.model.util.Elements
-
isDeprecated
public boolean isDeprecated(javax.lang.model.element.Element e)
- Specified by:
isDeprecatedin interfacejavax.lang.model.util.Elements
-
getBinaryName
public javax.lang.model.element.Name getBinaryName(javax.lang.model.element.TypeElement type)
- Specified by:
getBinaryNamein interfacejavax.lang.model.util.Elements
-
getPackageOf
public javax.lang.model.element.PackageElement getPackageOf(javax.lang.model.element.Element type)
- Specified by:
getPackageOfin interfacejavax.lang.model.util.Elements
-
getAllMembers
public java.util.List<? extends javax.lang.model.element.Element> getAllMembers(javax.lang.model.element.TypeElement type)
- Specified by:
getAllMembersin interfacejavax.lang.model.util.Elements
-
getAllAnnotationMirrors
public java.util.List<? extends javax.lang.model.element.AnnotationMirror> getAllAnnotationMirrors(javax.lang.model.element.Element e)
- Specified by:
getAllAnnotationMirrorsin interfacejavax.lang.model.util.Elements
-
hides
public boolean hides(javax.lang.model.element.Element hider, javax.lang.model.element.Element hidden)- Specified by:
hidesin interfacejavax.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:
overridesin interfacejavax.lang.model.util.Elements
-
getConstantExpression
public java.lang.String getConstantExpression(java.lang.Object value)
- Specified by:
getConstantExpressionin interfacejavax.lang.model.util.Elements
-
printElements
public void printElements(java.io.Writer w, javax.lang.model.element.Element... elements)- Specified by:
printElementsin interfacejavax.lang.model.util.Elements
-
getName
public javax.lang.model.element.Name getName(java.lang.CharSequence cs)
- Specified by:
getNamein interfacejavax.lang.model.util.Elements
-
isFunctionalInterface
public boolean isFunctionalInterface(javax.lang.model.element.TypeElement type)
- Specified by:
isFunctionalInterfacein interfacejavax.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:ElementUtilsFinds all executable elements within the given type element, including executable elements defined in super classes and implemented interfaces. Methods defined inObject, implementations ofObject.equals(Object)and private methods are ignored- Specified by:
getAllEnclosedExecutableElementsin interfaceElementUtils- 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:ElementUtilsFinds 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:
getAllEnclosedFieldsin interfaceElementUtils- 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 addedmethodsToAdd- methods to add to alreadyAdded, if they are not yet overridden by an element in the listparentType- 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 representObject.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 checkparentType- 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)
-
-