Class Protobuf


  • @ExperimentalApi
    final class Protobuf
    extends java.lang.Object
    Main runtime interface for protobuf. Applications should interact with this interface (rather than directly accessing internal APIs) in order to perform operations on protobuf messages.
    • Field Detail

      • INSTANCE

        private static final Protobuf INSTANCE
      • schemaCache

        private final java.util.concurrent.ConcurrentMap<java.lang.Class<?>,​Schema<?>> schemaCache
    • Constructor Detail

      • Protobuf

        private Protobuf()
    • Method Detail

      • getInstance

        public static Protobuf getInstance()
        Gets the singleton instance of the Protobuf runtime.
      • writeTo

        public <T> void writeTo​(T message,
                                Writer writer)
                         throws java.io.IOException
        Writes the given message to the target Writer.
        Throws:
        java.io.IOException
      • mergeFrom

        public <T> void mergeFrom​(T message,
                                  Reader reader)
                           throws java.io.IOException
        Reads fields from the given Reader and merges them into the message.
        Throws:
        java.io.IOException
      • mergeFrom

        public <T> void mergeFrom​(T message,
                                  Reader reader,
                                  ExtensionRegistryLite extensionRegistry)
                           throws java.io.IOException
        Reads fields from the given Reader and merges them into the message.
        Throws:
        java.io.IOException
      • makeImmutable

        public <T> void makeImmutable​(T message)
        Marks repeated/map/extension/unknown fields as immutable.
      • isInitialized

        <T> boolean isInitialized​(T message)
        Checks if all required fields are set.
      • schemaFor

        public <T> Schema<T> schemaFor​(java.lang.Class<T> messageType)
        Gets the schema for the given message type.
      • schemaFor

        public <T> Schema<T> schemaFor​(T message)
        Gets the schema for the given message.
      • registerSchema

        public Schema<?> registerSchema​(java.lang.Class<?> messageType,
                                        Schema<?> schema)
        Registers the given schema for the message type only if a schema was not already registered.
        Parameters:
        messageType - the type of message on which the schema operates.
        schema - the schema for the message type.
        Returns:
        the previously registered schema, or null if the given schema was successfully registered.
      • registerSchemaOverride

        public Schema<?> registerSchemaOverride​(java.lang.Class<?> messageType,
                                                Schema<?> schema)
        Visible for testing only. Registers the given schema for the message type. If a schema was previously registered, it will be replaced by the provided schema.
        Parameters:
        messageType - the type of message on which the schema operates.
        schema - the schema for the message type.
        Returns:
        the previously registered schema, or null if no schema was registered previously.
      • getTotalSchemaSize

        int getTotalSchemaSize()