Class BaseProtoSchemaGenerator

java.lang.Object
org.infinispan.protostream.annotations.impl.BaseProtoSchemaGenerator
Direct Known Subclasses:
CompileTimeProtoSchemaGenerator

public abstract class BaseProtoSchemaGenerator extends Object
Generates a protobuf schema (proto file) based on annotations and also generates marshallers for the types.

This class is not to be directly invoked by users.

Generators are not expected to be stateless, so reuse must be done taking this into account.

Since:
3.0
  • Field Details

    • log

      private static final Log log
    • generateSchemaDebugComments

      public static boolean generateSchemaDebugComments
      Set this flag to true to enable output of debug comments in the generated Protobuf schema.
    • generateMarshallerDebugComments

      public static boolean generateMarshallerDebugComments
      Set this flag to true to enable output of debug comments in the generated marshaller source code.
    • typeFactory

      protected final XTypeFactory typeFactory
    • serializationContext

      protected final SerializationContext serializationContext
    • fileName

      protected final String fileName
      Protobuf schema file name.
    • generator

      protected final String generator
    • packageName

      protected final String packageName
      Protobuf schema package name.
    • classes

      protected final Set<XClass> classes
      Initial set of classes.
    • autoImportClasses

      protected final boolean autoImportClasses
      Indicates if class dependencies are automatically added when discovered or will generate an error.
    • knownClasses

      private final Set<XClass> knownClasses
      Known classes: the user-added classes (classes) plus all their superclasses and superinterfaces. This is only used when auto-import is disabled.
    • imports

      private final Set<String> imports
      The imported schema files.
    • metadataByClass

      private final Map<XClass, ProtoTypeMetadata> metadataByClass
    • metadataByTypeName

      private final Map<String, ProtoTypeMetadata> metadataByTypeName
    • syntax

      private final ProtoSyntax syntax
    • allowNullFields

      private final boolean allowNullFields
  • Constructor Details

  • Method Details

    • allowNullFields

      public boolean allowNullFields()
    • syntax

      public ProtoSyntax syntax()
    • generateAndRegister

      public String generateAndRegister()
    • findOuterType

      private ProtoMessageTypeMetadata findOuterType(XClass c)
    • generateMarshallers

      private void generateMarshallers() throws Exception
      Throws:
      Exception
    • getMarshalledClasses

      public Set<XClass> getMarshalledClasses()
    • makeMarshallerCodeGenerator

      protected abstract AbstractMarshallerCodeGenerator makeMarshallerCodeGenerator()
      Creates a code generator for marshallers.
    • scanAnnotations

      protected ProtoTypeMetadata scanAnnotations(XClass javaType)
    • importProtoTypeMetadata

      protected abstract ProtoTypeMetadata importProtoTypeMetadata(XClass javaType)
      Return an imported ProtoTypeMetadata implementation or null if it cannot be imported.
    • makeTypeMetadata

      protected ProtoTypeMetadata makeTypeMetadata(XClass javaType)
    • makeEnumTypeMetadata

      protected ProtoTypeMetadata makeEnumTypeMetadata(XClass javaType)
    • makeMessageTypeMetadata

      protected ProtoTypeMetadata makeMessageTypeMetadata(XClass javaType)
    • collectMetadata

      void collectMetadata(ProtoTypeMetadata protoTypeMetadata)
    • isUnknownClass

      protected boolean isUnknownClass(XClass c)
    • collectKnownClasses

      private void collectKnownClasses(XClass c)
      Collect all superclasses and superinterfaces.
    • getAdapterFor

      protected XClass getAdapterFor(XClass annotatedClass)
    • getTargetClass

      protected XClass getTargetClass(XClass annotatedClass)
      Get the marshalled class or enum. The marshalled class and the annotated class are not always the same, depending on the presence of the ProtoAdapter annotation which may establish a new target.