Class BuildableType
- java.lang.Object
-
- org.inferred.freebuilder.processor.BuildableType
-
- Direct Known Subclasses:
BuildableType_Builder.Rebuildable
public abstract class BuildableType extends java.lang.ObjectMetadata about a buildable user type.A buildable type is one with a Builder class providing a similar API to proto or @FreeBuilder:
- a public constructor, or static builder()/newBuilder() method;
- build(), buildPartial() and clear() methods; and
- a mergeFrom(Value) method.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classBuildableType.Builderprivate static classBuildableType.IsBuildMethodprivate static classBuildableType.IsMergeFromMethodprivate static classBuildableType.IsToBuilderMethodstatic classBuildableType.MergeBuilderMethodHow to merge the values from one Builder into another.static classBuildableType.PartialToBuilderMethodHow to convert a partial value into a Builder.
-
Field Summary
Fields Modifier and Type Field Description private static java.util.function.Function<javax.lang.model.element.Element,java.util.stream.Stream<javax.lang.model.element.ExecutableElement>>METHODSprivate static java.util.function.Function<javax.lang.model.element.Element,java.util.stream.Stream<javax.lang.model.element.TypeElement>>TYPES
-
Constructor Summary
Constructors Constructor Description BuildableType()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract BuilderFactorybuilderFactory()abstract TypebuilderType()Returns the builder type that will build instances oftype().static BuildableTypecreate(javax.lang.model.type.DeclaredType datatype, javax.lang.model.type.DeclaredType builder, javax.lang.model.util.Elements elements, javax.lang.model.util.Types types)private static BuildableType.MergeBuilderMethoddetectMergeFromBuilderMethod(javax.lang.model.type.DeclaredType builder, javax.lang.model.util.Elements elements, javax.lang.model.util.Types types, javax.lang.model.element.TypeElement datatypeElement)private static BuildableType.PartialToBuilderMethoddetectPartialToBuilderMethod(javax.lang.model.type.DeclaredType datatype, javax.lang.model.type.DeclaredType builder, javax.lang.model.util.Elements elements, javax.lang.model.util.Types types)private static booleanisBuilderType(javax.lang.model.element.TypeElement element)private static booleanisCallableMethod(javax.lang.model.element.ExecutableElement element)private static booleanisClearMethod(javax.lang.model.element.ExecutableElement element)static java.util.Optional<javax.lang.model.type.DeclaredType>maybeBuilder(javax.lang.model.type.DeclaredType type, javax.lang.model.util.Elements elements, javax.lang.model.util.Types types)abstract BuildableType.MergeBuilderMethodmergeBuilder()private static booleanmethodIsObscured(javax.lang.model.type.DeclaredType targetType, javax.lang.model.util.Elements elements, javax.lang.model.util.Types types, javax.lang.model.type.DeclaredType returnType, java.lang.String methodName, javax.lang.model.type.DeclaredType... parameterTypes)ExcerptnewBuilder(BuilderFactory.TypeInference typeInference)Returns an excerpt calling the Builder factory method.abstract BuildableType.PartialToBuilderMethodpartialToBuilder()abstract ExcerptsuppressUnchecked()private static ExcerptsuppressUncheckedExcerptFor(javax.lang.model.type.DeclaredType datatype)abstract Typetype()Returns the parameterized buildable type.
-
-
-
Field Detail
-
TYPES
private static final java.util.function.Function<javax.lang.model.element.Element,java.util.stream.Stream<javax.lang.model.element.TypeElement>> TYPES
-
METHODS
private static final java.util.function.Function<javax.lang.model.element.Element,java.util.stream.Stream<javax.lang.model.element.ExecutableElement>> METHODS
-
-
Method Detail
-
type
public abstract Type type()
Returns the parameterized buildable type.This may be parameterized with any compatible types, including concrete types, wildcards, type variables, or generic types containing any combination of the above.
-
builderType
public abstract Type builderType()
Returns the builder type that will build instances oftype().
-
mergeBuilder
public abstract BuildableType.MergeBuilderMethod mergeBuilder()
-
partialToBuilder
public abstract BuildableType.PartialToBuilderMethod partialToBuilder()
-
builderFactory
public abstract BuilderFactory builderFactory()
-
suppressUnchecked
public abstract Excerpt suppressUnchecked()
-
newBuilder
public Excerpt newBuilder(BuilderFactory.TypeInference typeInference)
Returns an excerpt calling the Builder factory method.
-
maybeBuilder
public static java.util.Optional<javax.lang.model.type.DeclaredType> maybeBuilder(javax.lang.model.type.DeclaredType type, javax.lang.model.util.Elements elements, javax.lang.model.util.Types types)
-
methodIsObscured
private static boolean methodIsObscured(javax.lang.model.type.DeclaredType targetType, javax.lang.model.util.Elements elements, javax.lang.model.util.Types types, javax.lang.model.type.DeclaredType returnType, java.lang.String methodName, javax.lang.model.type.DeclaredType... parameterTypes)
-
create
public static BuildableType create(javax.lang.model.type.DeclaredType datatype, javax.lang.model.type.DeclaredType builder, javax.lang.model.util.Elements elements, javax.lang.model.util.Types types)
-
detectMergeFromBuilderMethod
private static BuildableType.MergeBuilderMethod detectMergeFromBuilderMethod(javax.lang.model.type.DeclaredType builder, javax.lang.model.util.Elements elements, javax.lang.model.util.Types types, javax.lang.model.element.TypeElement datatypeElement)
-
detectPartialToBuilderMethod
private static BuildableType.PartialToBuilderMethod detectPartialToBuilderMethod(javax.lang.model.type.DeclaredType datatype, javax.lang.model.type.DeclaredType builder, javax.lang.model.util.Elements elements, javax.lang.model.util.Types types)
-
suppressUncheckedExcerptFor
private static Excerpt suppressUncheckedExcerptFor(javax.lang.model.type.DeclaredType datatype)
-
isCallableMethod
private static boolean isCallableMethod(javax.lang.model.element.ExecutableElement element)
-
isBuilderType
private static boolean isBuilderType(javax.lang.model.element.TypeElement element)
-
isClearMethod
private static boolean isClearMethod(javax.lang.model.element.ExecutableElement element)
-
-