Class ModelUtils
- java.lang.Object
-
- org.inferred.freebuilder.processor.model.ModelUtils
-
public class ModelUtils extends java.lang.ObjectUtility methods for the javax.lang.model package.
-
-
Field Summary
Fields Modifier and Type Field Description private static javax.lang.model.util.SimpleTypeVisitor8<java.util.Optional<javax.lang.model.type.DeclaredType>,?>DECLARED_TYPE_VISITORprivate static javax.lang.model.util.SimpleElementVisitor8<java.util.Optional<javax.lang.model.element.TypeElement>,?>TYPE_ELEMENT_VISITORprivate static javax.lang.model.util.SimpleTypeVisitor8<java.util.Optional<javax.lang.model.type.TypeVariable>,?>TYPE_VARIABLE_VISITOR
-
Constructor Summary
Constructors Constructor Description ModelUtils()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static javax.lang.model.element.TypeElementasElement(javax.lang.model.type.DeclaredType type)Returns theTypeElementcorresponding totype.static booleanerasesToAnyOf(javax.lang.model.type.DeclaredType type, java.lang.Class<?>... possibilities)Returns true iftypeerases to any ofpossibilities.static booleanerasesToAnyOf(javax.lang.model.type.DeclaredType type, QualifiedName... possibilities)Returns true iftypeerases to any ofpossibilities.static java.util.Optional<javax.lang.model.element.AnnotationMirror>findAnnotationMirror(javax.lang.model.element.Element element, java.lang.Class<? extends java.lang.annotation.Annotation> annotationClass)Returns anAnnotationMirrorfor the annotation of typeannotationClassonelement, orOptional.empty()if no such annotation exists.static java.util.Optional<javax.lang.model.element.AnnotationMirror>findAnnotationMirror(javax.lang.model.element.Element element, java.lang.String annotationClassName)Returns anAnnotationMirrorfor the annotation of typeannotationClassNameonelement, orOptional.empty()if no such annotation exists.static java.util.Optional<javax.lang.model.element.AnnotationMirror>findAnnotationMirror(javax.lang.model.element.Element element, QualifiedName annotationClass)Returns anAnnotationMirrorfor the annotation of typeannotationClassonelement, orOptional.empty()if no such annotation exists.static java.util.Optional<javax.lang.model.element.AnnotationValue>findProperty(javax.lang.model.element.AnnotationMirror annotation, java.lang.String propertyName)static javax.lang.model.type.TypeMirrorgetReturnType(javax.lang.model.element.TypeElement type, javax.lang.model.element.ExecutableElement method, javax.lang.model.util.Types types)Determines the return type ofmethod, if called on an instance of typetype.static javax.lang.model.type.TypeMirrorgetReturnType(javax.lang.model.type.DeclaredType type, javax.lang.model.element.ExecutableElement method, javax.lang.model.util.Types types)Determines the return type ofmethod, if called on an instance of typetype.private static booleanisPlainWildcard(javax.lang.model.type.TypeMirror type)static java.util.Optional<javax.lang.model.element.TypeElement>maybeAsTypeElement(javax.lang.model.type.TypeMirror type)Returns theTypeElementcorresponding totype, if there is one.static java.util.Optional<javax.lang.model.type.DeclaredType>maybeDeclared(javax.lang.model.type.TypeMirror type)Returnstypeas aDeclaredType, if it is one.static java.util.Optional<javax.lang.model.element.TypeElement>maybeType(javax.lang.model.element.Element element)Returnselementas aTypeElement, if it is one.static java.util.Optional<javax.lang.model.type.TypeMirror>maybeUnbox(javax.lang.model.type.TypeMirror mirror, javax.lang.model.util.Types types)Applies unboxing conversion tomirror, if it can be unboxed.static java.util.Optional<javax.lang.model.type.TypeVariable>maybeVariable(javax.lang.model.type.TypeMirror type)static booleanneedsSafeVarargs(javax.lang.model.type.TypeMirror elementType)Returns true if a method with a variable number ofelementTypearguments needs a@SafeVarargsannotation to avoid compiler warnings in Java 7+.static java.util.Set<javax.lang.model.element.ExecutableElement>only(javax.lang.model.element.Modifier modifier, java.util.Set<javax.lang.model.element.ExecutableElement> methods)static java.util.Optional<javax.lang.model.element.ExecutableElement>override(javax.lang.model.element.TypeElement type, javax.lang.model.util.Types types, java.lang.String methodName, javax.lang.model.type.TypeMirror... params)Returns the method ontypethat overrides methodmethodName(params).static java.util.Optional<javax.lang.model.element.ExecutableElement>override(javax.lang.model.type.DeclaredType type, javax.lang.model.util.Types types, java.lang.String methodName, javax.lang.model.type.TypeMirror... params)Returns the method ontypethat overrides methodmethodName(params).static booleanoverrides(javax.lang.model.element.TypeElement type, javax.lang.model.util.Types types, java.lang.String methodName, javax.lang.model.type.TypeMirror... params)Returns whethertypeoverrides methodmethodName(params).static booleanoverrides(javax.lang.model.type.DeclaredType type, javax.lang.model.util.Types types, java.lang.String methodName, javax.lang.model.type.TypeMirror... params)Returns whethertypeoverrides methodmethodName(params).private static booleansignatureMatches(javax.lang.model.element.ExecutableElement method, javax.lang.model.util.Types types, java.lang.String name, javax.lang.model.type.TypeMirror... params)static javax.lang.model.type.TypeMirrorupperBound(javax.lang.model.util.Elements elements, javax.lang.model.type.TypeMirror type)Returns the upper bound oftype. T -> T ? -> Object ? extends T -> T ? super T -> Object
-
-
-
Field Detail
-
TYPE_ELEMENT_VISITOR
private static final javax.lang.model.util.SimpleElementVisitor8<java.util.Optional<javax.lang.model.element.TypeElement>,?> TYPE_ELEMENT_VISITOR
-
DECLARED_TYPE_VISITOR
private static final javax.lang.model.util.SimpleTypeVisitor8<java.util.Optional<javax.lang.model.type.DeclaredType>,?> DECLARED_TYPE_VISITOR
-
TYPE_VARIABLE_VISITOR
private static final javax.lang.model.util.SimpleTypeVisitor8<java.util.Optional<javax.lang.model.type.TypeVariable>,?> TYPE_VARIABLE_VISITOR
-
-
Method Detail
-
findAnnotationMirror
public static java.util.Optional<javax.lang.model.element.AnnotationMirror> findAnnotationMirror(javax.lang.model.element.Element element, java.lang.Class<? extends java.lang.annotation.Annotation> annotationClass)Returns anAnnotationMirrorfor the annotation of typeannotationClassonelement, orOptional.empty()if no such annotation exists.
-
findAnnotationMirror
public static java.util.Optional<javax.lang.model.element.AnnotationMirror> findAnnotationMirror(javax.lang.model.element.Element element, QualifiedName annotationClass)Returns anAnnotationMirrorfor the annotation of typeannotationClassonelement, orOptional.empty()if no such annotation exists.
-
findAnnotationMirror
public static java.util.Optional<javax.lang.model.element.AnnotationMirror> findAnnotationMirror(javax.lang.model.element.Element element, java.lang.String annotationClassName)Returns anAnnotationMirrorfor the annotation of typeannotationClassNameonelement, orOptional.empty()if no such annotation exists.
-
findProperty
public static java.util.Optional<javax.lang.model.element.AnnotationValue> findProperty(javax.lang.model.element.AnnotationMirror annotation, java.lang.String propertyName)
-
maybeType
public static java.util.Optional<javax.lang.model.element.TypeElement> maybeType(javax.lang.model.element.Element element)
Returnselementas aTypeElement, if it is one.
-
maybeDeclared
public static java.util.Optional<javax.lang.model.type.DeclaredType> maybeDeclared(javax.lang.model.type.TypeMirror type)
Returnstypeas aDeclaredType, if it is one.
-
maybeVariable
public static java.util.Optional<javax.lang.model.type.TypeVariable> maybeVariable(javax.lang.model.type.TypeMirror type)
-
maybeAsTypeElement
public static java.util.Optional<javax.lang.model.element.TypeElement> maybeAsTypeElement(javax.lang.model.type.TypeMirror type)
Returns theTypeElementcorresponding totype, if there is one.
-
asElement
public static javax.lang.model.element.TypeElement asElement(javax.lang.model.type.DeclaredType type)
Returns theTypeElementcorresponding totype.
-
maybeUnbox
public static java.util.Optional<javax.lang.model.type.TypeMirror> maybeUnbox(javax.lang.model.type.TypeMirror mirror, javax.lang.model.util.Types types)Applies unboxing conversion tomirror, if it can be unboxed.
-
override
public static java.util.Optional<javax.lang.model.element.ExecutableElement> override(javax.lang.model.element.TypeElement type, javax.lang.model.util.Types types, java.lang.String methodName, javax.lang.model.type.TypeMirror... params)Returns the method ontypethat overrides methodmethodName(params).
-
override
public static java.util.Optional<javax.lang.model.element.ExecutableElement> override(javax.lang.model.type.DeclaredType type, javax.lang.model.util.Types types, java.lang.String methodName, javax.lang.model.type.TypeMirror... params)Returns the method ontypethat overrides methodmethodName(params).
-
overrides
public static boolean overrides(javax.lang.model.element.TypeElement type, javax.lang.model.util.Types types, java.lang.String methodName, javax.lang.model.type.TypeMirror... params)Returns whethertypeoverrides methodmethodName(params).
-
overrides
public static boolean overrides(javax.lang.model.type.DeclaredType type, javax.lang.model.util.Types types, java.lang.String methodName, javax.lang.model.type.TypeMirror... params)Returns whethertypeoverrides methodmethodName(params).
-
needsSafeVarargs
public static boolean needsSafeVarargs(javax.lang.model.type.TypeMirror elementType)
Returns true if a method with a variable number ofelementTypearguments needs a@SafeVarargsannotation to avoid compiler warnings in Java 7+.
-
only
public static java.util.Set<javax.lang.model.element.ExecutableElement> only(javax.lang.model.element.Modifier modifier, java.util.Set<javax.lang.model.element.ExecutableElement> methods)
-
isPlainWildcard
private static boolean isPlainWildcard(javax.lang.model.type.TypeMirror type)
-
signatureMatches
private static boolean signatureMatches(javax.lang.model.element.ExecutableElement method, javax.lang.model.util.Types types, java.lang.String name, javax.lang.model.type.TypeMirror... params)
-
getReturnType
public static javax.lang.model.type.TypeMirror getReturnType(javax.lang.model.element.TypeElement type, javax.lang.model.element.ExecutableElement method, javax.lang.model.util.Types types)Determines the return type ofmethod, if called on an instance of typetype.For instance, in this example, myY.getProperty() returns List<T>, not T:
interface X<T> { T getProperty(); } @FreeBuilder interface Y<T> extends X<List<T>> { }(Unfortunately, a bug in Eclipse prevents us handling these cases correctly at the moment. javac works fine.)
-
getReturnType
public static javax.lang.model.type.TypeMirror getReturnType(javax.lang.model.type.DeclaredType type, javax.lang.model.element.ExecutableElement method, javax.lang.model.util.Types types)Determines the return type ofmethod, if called on an instance of typetype.For instance, in this example, myY.getProperty() returns List<T>, not T:
interface X<T> { T getProperty(); } @FreeBuilder interface Y<T> extends X<List<T>> { }(Unfortunately, a bug in Eclipse prevents us handling these cases correctly at the moment. javac works fine.)
-
upperBound
public static javax.lang.model.type.TypeMirror upperBound(javax.lang.model.util.Elements elements, javax.lang.model.type.TypeMirror type)Returns the upper bound oftype.- T -> T
- ? -> Object
- ? extends T -> T
- ? super T -> Object
-
erasesToAnyOf
public static boolean erasesToAnyOf(javax.lang.model.type.DeclaredType type, QualifiedName... possibilities)Returns true iftypeerases to any ofpossibilities.
-
erasesToAnyOf
public static boolean erasesToAnyOf(javax.lang.model.type.DeclaredType type, java.lang.Class<?>... possibilities)Returns true iftypeerases to any ofpossibilities.
-
-