Class AbstractArrayTypeDecoder

java.lang.Object
org.apache.qpid.protonj2.codec.decoders.AbstractPrimitiveTypeDecoder<Object>
org.apache.qpid.protonj2.codec.decoders.primitives.AbstractArrayTypeDecoder
All Implemented Interfaces:
PrimitiveArrayTypeDecoder, PrimitiveTypeDecoder<Object>, StreamTypeDecoder<Object>, TypeDecoder<Object>
Direct Known Subclasses:
Array32TypeDecoder, Array8TypeDecoder

public abstract class AbstractArrayTypeDecoder extends AbstractPrimitiveTypeDecoder<Object> implements PrimitiveArrayTypeDecoder
Base for the decoders of AMQP Array types that defaults to returning opaque Object values to match what the other decoders do. External decoding tools will need to use the TypeDecoder.isArrayType() checks to determine how they want to read and return array types.
  • Constructor Details

    • AbstractArrayTypeDecoder

      public AbstractArrayTypeDecoder()
  • Method Details

    • getTypeClass

      public Class<Object> getTypeClass()
      Description copied from interface: TypeDecoder
      Returns the Class that this decoder handles.
      Specified by:
      getTypeClass in interface StreamTypeDecoder<Object>
      Specified by:
      getTypeClass in interface TypeDecoder<Object>
      Returns:
      the Class that this decoder handles
    • isArrayType

      public boolean isArrayType()
      Description copied from interface: TypeDecoder
      Returns true if the underlying type that is going to be decoded is an array type.
      Specified by:
      isArrayType in interface StreamTypeDecoder<Object>
      Specified by:
      isArrayType in interface TypeDecoder<Object>
      Overrides:
      isArrayType in class AbstractPrimitiveTypeDecoder<Object>
      Returns:
      true if the underlying type that is going to be decoded is an array type
    • readValue

      public Object readValue(ProtonBuffer buffer, DecoderState state) throws DecodeException
      Description copied from interface: TypeDecoder
      Reads the next type from the given buffer and returns it.
      Specified by:
      readValue in interface TypeDecoder<Object>
      Parameters:
      buffer - the source of encoded data.
      state - the current state of the decoder.
      Returns:
      the next instance in the stream that this decoder handles.
      Throws:
      DecodeException - if an error is encountered while reading the next value.
    • readValue

      public Object readValue(ProtonBuffer buffer, DecoderState state, Class<?> ofType) throws DecodeException
      Description copied from interface: PrimitiveArrayTypeDecoder
      Reads the given array from the bytes in the buffer but only if the type encoding of the given array matches the given Class filter. This allows the caller to effectively limit if the given array is decoded at all if the type encoding is not a match and also can act to limit an array to only a single level as the type encoding of nested arrays will not be the value type until the bottom of the array is reached. To allow all types and any array nesting the caller should pass the Object class.
      Specified by:
      readValue in interface PrimitiveArrayTypeDecoder
      Parameters:
      buffer - the source of encoded data.
      state - the current state of the decoder.
      ofType - the type encoding of the desired array.
      Returns:
      the next instance in the byte stream that this decoder handles.
      Throws:
      DecodeException - if an error is encountered while reading the next value.
    • readValue

      public Object readValue(InputStream stream, StreamDecoderState state) throws DecodeException
      Description copied from interface: StreamTypeDecoder
      Reads the next type from the given buffer and returns it.
      Specified by:
      readValue in interface StreamTypeDecoder<Object>
      Parameters:
      stream - the source of encoded data.
      state - the current state of the decoder.
      Returns:
      the next instance in the stream that this decoder handles.
      Throws:
      DecodeException - if an error is encountered while reading the next value.
    • readValue

      public Object readValue(InputStream stream, StreamDecoderState state, Class<?> ofType) throws DecodeException
      Description copied from interface: PrimitiveArrayTypeDecoder
      Reads the given array from the bytes in the buffer but only if the type encoding of the given array matches the given Class filter. This allows the caller to effectively limit if the given array is decoded at all if the type encoding is not a match and also can act to limit an array to only a single level as the type encoding of nested arrays will not be the value type until the bottom of the array is reached. To allow all types and any array nesting the caller should pass the Object class.
      Specified by:
      readValue in interface PrimitiveArrayTypeDecoder
      Parameters:
      stream - the source of encoded data.
      state - the current state of the decoder.
      ofType - the type encoding of the desired array.
      Returns:
      the next instance in the stream that this decoder handles.
      Throws:
      DecodeException - if an error is encountered while reading the next value.
    • skipValue

      public void skipValue(ProtonBuffer buffer, DecoderState state) throws DecodeException
      Description copied from interface: TypeDecoder
      Skips over the bytes that compose the type this descriptor decodes.

      Skipping values can be used when the type is not used or processed by the application doing the decoding. An example might be an AMQP message decoder that only needs to decode certain parts of the message and not others.

      Specified by:
      skipValue in interface TypeDecoder<Object>
      Parameters:
      buffer - The buffer that contains the encoded type.
      state - The decoder state.
      Throws:
      DecodeException - if an error occurs while skipping the value.
    • skipValue

      public void skipValue(InputStream stream, StreamDecoderState state) throws DecodeException
      Description copied from interface: StreamTypeDecoder
      Skips over the bytes that compose the type this descriptor decodes.

      Skipping values can be used when the type is not used or processed by the application doing the decoding. An example might be an AMQP message decoder that only needs to decode certain parts of the message and not others.

      Specified by:
      skipValue in interface StreamTypeDecoder<Object>
      Parameters:
      stream - The stream that contains the encoded type.
      state - The decoder state.
      Throws:
      DecodeException - if an error occurs while skipping the value.