Class BuildableType

  • Direct Known Subclasses:
    BuildableType_Builder.Rebuildable

    public abstract class BuildableType
    extends java.lang.Object
    Metadata 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.
    • 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
    • Constructor Detail

      • BuildableType

        public BuildableType()
    • 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 of type().
      • suppressUnchecked

        public abstract Excerpt suppressUnchecked()
      • 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)