Package io.protostuff

Interface Schema<T>

All Known Implementing Classes:
ArraySchema, ArraySchemas.Base, ArraySchemas.BigDecimalArray, ArraySchemas.BigIntegerArray, ArraySchemas.BoolArray, ArraySchemas.ByteArrayArray, ArraySchemas.ByteStringArray, ArraySchemas.CharArray, ArraySchemas.DateArray, ArraySchemas.DelegateArray, ArraySchemas.DoubleArray, ArraySchemas.EnumArray, ArraySchemas.FloatArray, ArraySchemas.Int32Array, ArraySchemas.Int64Array, ArraySchemas.PojoArray, ArraySchemas.ShortArray, ArraySchemas.StringArray, ClassSchema, CollectionSchema, CustomSchema, DerivativeSchema, GraphByteArrayInput, GraphCodedInput, MapSchema, MessageCollectionSchema, MessageMapSchema, NumberSchema, ObjectSchema, Pipe.Schema, PolymorphicCollectionSchema, PolymorphicEnumSchema, PolymorphicMapSchema, PolymorphicPojoCollectionSchema, PolymorphicPojoMapSchema, PolymorphicPojoSchema, PolymorphicSchema, PolymorphicThrowableSchema, RuntimePipeSchema, RuntimeSchema, RuntimeView.BaseSchema, RuntimeView.PostFilteredSchema, StringMapSchema

public interface Schema<T>
Handles the serialization and deserialization of a message/object tied to this.

Basically, any object can be serialized via protobuf. As long as its schema is provided, it does not need to implement Message. This was designed with "unobtrusive" in mind. The goal was to be able to serialize/deserialize any existing object without having to touch its source. This will enable you to customize the serialization of objects from 3rd party libraries.

  • Method Summary

    Modifier and Type
    Method
    Description
    getFieldName(int number)
    Gets the field name associated with the number.
    int
    Gets the field number associated with the name.
    boolean
    isInitialized(T message)
    Returns true if there is no required field or if all the required fields are set.
    void
    mergeFrom(Input input, T message)
    Deserializes a message/object from the input.
    Returns the full name of the message tied to this schema.
    Returns the simple name of the message tied to this schema.
    Creates the message/object tied to this schema.
    Class<? super T>
    Gets the class of the message.
    void
    writeTo(Output output, T message)
    Serializes a message/object to the output.
  • Method Details

    • getFieldName

      String getFieldName(int number)
      Gets the field name associated with the number. This is particularly useful when serializing to different formats (Eg. JSON). When using numeric field names:
       return String.valueOf(number);
       
    • getFieldNumber

      int getFieldNumber(String name)
      Gets the field number associated with the name. This is particularly useful when serializing to different formats (Eg. JSON). When using numeric field names:
       return Integer.parseInt(name);
       
    • isInitialized

      boolean isInitialized(T message)
      Returns true if there is no required field or if all the required fields are set.
    • newMessage

      T newMessage()
      Creates the message/object tied to this schema.
    • messageName

      String messageName()
      Returns the simple name of the message tied to this schema. Allows custom schemas to provide a custom name other than typeClass().getSimpleName();
    • messageFullName

      String messageFullName()
      Returns the full name of the message tied to this schema. Allows custom schemas to provide a custom name other than typeClass().getName();
    • typeClass

      Class<? super T> typeClass()
      Gets the class of the message.
    • mergeFrom

      void mergeFrom(Input input, T message) throws IOException
      Deserializes a message/object from the input.
      Throws:
      IOException
    • writeTo

      void writeTo(Output output, T message) throws IOException
      Serializes a message/object to the output.
      Throws:
      IOException