Package io.protostuff

Class JsonInput

  • All Implemented Interfaces:
    Input

    public final class JsonInput
    extends java.lang.Object
    implements Input
    An input used for reading data with json format.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.lang.String lastName  
      private int lastNumber  
      private boolean lastRepeated  
      boolean numeric
      If true, the field number will be used on json keys.
      com.fasterxml.jackson.core.JsonParser parser
      The wrapped json parser.
    • Constructor Summary

      Constructors 
      Constructor Description
      JsonInput​(com.fasterxml.jackson.core.JsonParser parser)  
      JsonInput​(com.fasterxml.jackson.core.JsonParser parser, boolean numeric)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int getLastNumber()
      Gets the last field number read.
      <T> void handleUnknownField​(int fieldNumber, Schema<T> schema)
      The underlying implementation should handle the unknown field.
      boolean isLastRepeated()
      Returns true if the last read field was a repeated field.
      boolean isNumeric()
      Returns whether the incoming messages' field names are numeric.
      <T> T mergeObject​(T value, Schema<T> schema)
      Merges an object(with schema) field value.
      boolean readBool()
      Reads a boolean field value.
      byte[] readByteArray()
      Reads a byte array field value.
      java.nio.ByteBuffer readByteBuffer()
      Reads a byte array/ByteBuffer value.
      ByteString readBytes()
      Reads a ByteString field value.
      void readBytes​(java.nio.ByteBuffer bb)
      Reads a field value into a ByteBuffer.
      double readDouble()
      Reads a double field value.
      int readEnum()
      Reads an enum(its number) field value.
      <T> int readFieldNumber​(Schema<T> schema)
      Reads the field number of a message/object tied to the given schema.
      private <T> int readFieldNumber​(Schema<T> schema, com.fasterxml.jackson.core.JsonParser parser)  
      int readFixed32()
      Reads a fixed int(4 bytes) field value.
      long readFixed64()
      Reads a fixed long(8 bytes) field value.
      float readFloat()
      Reads a float field value.
      int readInt32()
      Reads a variable int field value.
      long readInt64()
      Reads a variable long field value.
      int readSFixed32()
      Reads a signed+fixed int(4 bytes) field value.
      long readSFixed64()
      Reads a signed+fixed long(8 bytes) field value.
      int readSInt32()
      Reads a signed int field value.
      long readSInt64()
      Reads a signed long field value.
      java.lang.String readString()
      Reads a String field value.
      int readUInt32()
      Reads an unsigned int field value.
      long readUInt64()
      Reads an unsigned long field value.
      JsonInput reset()
      Resets this input.
      private void skipField​(com.fasterxml.jackson.core.JsonParser parser)
      Skip through the entire object/array field and all nested objects/arrays inside it
      void transferByteRangeTo​(Output output, boolean utf8String, int fieldNumber, boolean repeated)
      Transfer the byte range to the output.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • parser

        public final com.fasterxml.jackson.core.JsonParser parser
        The wrapped json parser.
      • numeric

        public final boolean numeric
        If true, the field number will be used on json keys.
      • lastRepeated

        private boolean lastRepeated
      • lastName

        private java.lang.String lastName
      • lastNumber

        private int lastNumber
    • Constructor Detail

      • JsonInput

        public JsonInput​(com.fasterxml.jackson.core.JsonParser parser)
      • JsonInput

        public JsonInput​(com.fasterxml.jackson.core.JsonParser parser,
                         boolean numeric)
    • Method Detail

      • isNumeric

        public boolean isNumeric()
        Returns whether the incoming messages' field names are numeric.
      • getLastNumber

        public int getLastNumber()
        Gets the last field number read.
      • isLastRepeated

        public boolean isLastRepeated()
        Returns true if the last read field was a repeated field.
      • reset

        public JsonInput reset()
        Resets this input.
      • handleUnknownField

        public <T> void handleUnknownField​(int fieldNumber,
                                           Schema<T> schema)
                                    throws java.io.IOException
        Description copied from interface: Input
        The underlying implementation should handle the unknown field.
        Specified by:
        handleUnknownField in interface Input
        Throws:
        java.io.IOException
      • readFieldNumber

        public <T> int readFieldNumber​(Schema<T> schema)
                                throws java.io.IOException
        Description copied from interface: Input
        Reads the field number of a message/object tied to the given schema.
        Specified by:
        readFieldNumber in interface Input
        Throws:
        java.io.IOException
      • readFieldNumber

        private <T> int readFieldNumber​(Schema<T> schema,
                                        com.fasterxml.jackson.core.JsonParser parser)
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • readBool

        public boolean readBool()
                         throws java.io.IOException
        Description copied from interface: Input
        Reads a boolean field value.
        Specified by:
        readBool in interface Input
        Throws:
        java.io.IOException
      • readByteArray

        public byte[] readByteArray()
                             throws java.io.IOException
        Description copied from interface: Input
        Reads a byte array field value.
        Specified by:
        readByteArray in interface Input
        Throws:
        java.io.IOException
      • readBytes

        public ByteString readBytes()
                             throws java.io.IOException
        Description copied from interface: Input
        Reads a ByteString field value.
        Specified by:
        readBytes in interface Input
        Throws:
        java.io.IOException
      • readBytes

        public void readBytes​(java.nio.ByteBuffer bb)
                       throws java.io.IOException
        Description copied from interface: Input
        Reads a field value into a ByteBuffer.
        Specified by:
        readBytes in interface Input
        Throws:
        java.io.IOException
      • readDouble

        public double readDouble()
                          throws java.io.IOException
        Description copied from interface: Input
        Reads a double field value.
        Specified by:
        readDouble in interface Input
        Throws:
        java.io.IOException
      • readEnum

        public int readEnum()
                     throws java.io.IOException
        Description copied from interface: Input
        Reads an enum(its number) field value.
        Specified by:
        readEnum in interface Input
        Throws:
        java.io.IOException
      • readFixed32

        public int readFixed32()
                        throws java.io.IOException
        Description copied from interface: Input
        Reads a fixed int(4 bytes) field value.
        Specified by:
        readFixed32 in interface Input
        Throws:
        java.io.IOException
      • readFixed64

        public long readFixed64()
                         throws java.io.IOException
        Description copied from interface: Input
        Reads a fixed long(8 bytes) field value.
        Specified by:
        readFixed64 in interface Input
        Throws:
        java.io.IOException
      • readFloat

        public float readFloat()
                        throws java.io.IOException
        Description copied from interface: Input
        Reads a float field value.
        Specified by:
        readFloat in interface Input
        Throws:
        java.io.IOException
      • readInt32

        public int readInt32()
                      throws java.io.IOException
        Description copied from interface: Input
        Reads a variable int field value.
        Specified by:
        readInt32 in interface Input
        Throws:
        java.io.IOException
      • readInt64

        public long readInt64()
                       throws java.io.IOException
        Description copied from interface: Input
        Reads a variable long field value.
        Specified by:
        readInt64 in interface Input
        Throws:
        java.io.IOException
      • readSFixed32

        public int readSFixed32()
                         throws java.io.IOException
        Description copied from interface: Input
        Reads a signed+fixed int(4 bytes) field value.
        Specified by:
        readSFixed32 in interface Input
        Throws:
        java.io.IOException
      • readSFixed64

        public long readSFixed64()
                          throws java.io.IOException
        Description copied from interface: Input
        Reads a signed+fixed long(8 bytes) field value.
        Specified by:
        readSFixed64 in interface Input
        Throws:
        java.io.IOException
      • readSInt32

        public int readSInt32()
                       throws java.io.IOException
        Description copied from interface: Input
        Reads a signed int field value.
        Specified by:
        readSInt32 in interface Input
        Throws:
        java.io.IOException
      • readSInt64

        public long readSInt64()
                        throws java.io.IOException
        Description copied from interface: Input
        Reads a signed long field value.
        Specified by:
        readSInt64 in interface Input
        Throws:
        java.io.IOException
      • readString

        public java.lang.String readString()
                                    throws java.io.IOException
        Description copied from interface: Input
        Reads a String field value.
        Specified by:
        readString in interface Input
        Throws:
        java.io.IOException
      • readUInt32

        public int readUInt32()
                       throws java.io.IOException
        Description copied from interface: Input
        Reads an unsigned int field value.
        Specified by:
        readUInt32 in interface Input
        Throws:
        java.io.IOException
      • readUInt64

        public long readUInt64()
                        throws java.io.IOException
        Description copied from interface: Input
        Reads an unsigned long field value.
        Specified by:
        readUInt64 in interface Input
        Throws:
        java.io.IOException
      • mergeObject

        public <T> T mergeObject​(T value,
                                 Schema<T> schema)
                          throws java.io.IOException
        Description copied from interface: Input
        Merges an object(with schema) field value. The provided schema handles the deserialization for the object.
        Specified by:
        mergeObject in interface Input
        Throws:
        java.io.IOException
      • transferByteRangeTo

        public void transferByteRangeTo​(Output output,
                                        boolean utf8String,
                                        int fieldNumber,
                                        boolean repeated)
                                 throws java.io.IOException
        Description copied from interface: Input
        Transfer the byte range to the output. Capable of zero-copy transfer depending on the type of input.
        Specified by:
        transferByteRangeTo in interface Input
        Throws:
        java.io.IOException
      • readByteBuffer

        public java.nio.ByteBuffer readByteBuffer()
                                           throws java.io.IOException
        Reads a byte array/ByteBuffer value.
        Specified by:
        readByteBuffer in interface Input
        Throws:
        java.io.IOException
      • skipField

        private void skipField​(com.fasterxml.jackson.core.JsonParser parser)
                        throws java.io.IOException
        Skip through the entire object/array field and all nested objects/arrays inside it
        Throws:
        java.io.IOException