Class AbstractMapTypeDecoder
- All Implemented Interfaces:
MapTypeDecoder
,PrimitiveTypeDecoder<Map>
,StreamTypeDecoder<Map>
,TypeDecoder<Map>
- Direct Known Subclasses:
Map32TypeDecoder
,Map8TypeDecoder
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionreadValue
(InputStream stream, StreamDecoderState state) Reads the next type from the given buffer and returns it.readValue
(ProtonBuffer buffer, DecoderState state) Reads the next type from the given buffer and returns it.<KeyType> void
scanKeys
(InputStream stream, StreamDecoderState state, StreamScanningContext<KeyType> context, BiConsumer<KeyType, Object> matchConsumer) Scan the encodedMap
keys matching on predetermined key value encodings to quickly find mappings that are of interest and then only decoding the value portion of the matched key / value pair.<KeyType> void
scanKeys
(ProtonBuffer buffer, DecoderState state, ScanningContext<KeyType> context, BiConsumer<KeyType, Object> matchConsumer) Scan the encodedMap
keys matching on predetermined key value encodings to quickly find mappings that are of interest and then only decoding the value portion of the matched key / value pair.void
skipValue
(InputStream stream, StreamDecoderState state) Skips over the bytes that compose the type this descriptor decodes.void
skipValue
(ProtonBuffer buffer, DecoderState state) Skips over the bytes that compose the type this descriptor decodes.Methods inherited from class org.apache.qpid.protonj2.codec.decoders.AbstractPrimitiveTypeDecoder
isArrayType, isJavaPrimitive, isNull, readArrayElements, readArrayElements
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.apache.qpid.protonj2.codec.decoders.primitives.MapTypeDecoder
getTypeClass, readCount, readCount
Methods inherited from interface org.apache.qpid.protonj2.codec.decoders.PrimitiveTypeDecoder
getTypeCode, isJavaPrimitive, isPrimitive
Methods inherited from interface org.apache.qpid.protonj2.codec.StreamTypeDecoder
getTypeClass, isArrayType, isNull, readArrayElements, readSize
Methods inherited from interface org.apache.qpid.protonj2.codec.TypeDecoder
isArrayType, isNull, readArrayElements, readSize
-
Constructor Details
-
AbstractMapTypeDecoder
public AbstractMapTypeDecoder()
-
-
Method Details
-
readValue
Description copied from interface:TypeDecoder
Reads the next type from the given buffer and returns it.- Specified by:
readValue
in interfaceTypeDecoder<Map>
- 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.
-
skipValue
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 interfaceTypeDecoder<Map>
- Parameters:
buffer
- The buffer that contains the encoded type.state
- The decoder state.- Throws:
DecodeException
- if an error occurs while skipping the value.
-
scanKeys
public <KeyType> void scanKeys(ProtonBuffer buffer, DecoderState state, ScanningContext<KeyType> context, BiConsumer<KeyType, Object> matchConsumer) throws DecodeExceptionDescription copied from interface:MapTypeDecoder
Scan the encodedMap
keys matching on predetermined key value encodings to quickly find mappings that are of interest and then only decoding the value portion of the matched key / value pair. This allows for quick checks of incomingMap
types without the performance penalty of a full decode. After the method returns the contexts of the encoded Map in the provided buffer will have been consumed and the next type can be decoded.Each matching key / value mapping triggers a call to the provided
BiConsumer
with the key that triggered the match (generally a cached non-decoded value) and the decoded value mapped to that key. The caller should use the consumer to trigger actions based on the matches found in the mappings which avoid full decodings of large maps when only a limited set of values is desired.- Specified by:
scanKeys
in interfaceMapTypeDecoder
- Type Parameters:
KeyType
- The key type is used when calling the match consumer- Parameters:
buffer
- The buffer containing the encoded Map type.state
- TheDecoderState
used during this decode.context
- The previously created and configuredScanningContext
matchConsumer
- The consumer that will be notified when a matching key is found.- Throws:
DecodeException
- if an error occurs reading the value
-
readValue
public Map<Object,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 interfaceStreamTypeDecoder<Map>
- 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.
-
skipValue
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 interfaceStreamTypeDecoder<Map>
- Parameters:
stream
- The stream that contains the encoded type.state
- The decoder state.- Throws:
DecodeException
- if an error occurs while skipping the value.
-
scanKeys
public <KeyType> void scanKeys(InputStream stream, StreamDecoderState state, StreamScanningContext<KeyType> context, BiConsumer<KeyType, Object> matchConsumer) throws DecodeExceptionDescription copied from interface:MapTypeDecoder
Scan the encodedMap
keys matching on predetermined key value encodings to quickly find mappings that are of interest and then only decoding the value portion of the matched key / value pair. This allows for quick checks of incomingMap
types without the performance penalty of a full decode. After the method returns the contexts of the encoded Map in the provided stream will have been consumed and the next type can be decoded.Each matching key / value mapping triggers a call to the provided
BiConsumer
with the key that triggered the match (generally a cached non-decoded value) and the decoded value mapped to that key. The caller should use the consumer to trigger actions based on the matches found in the mappings which avoid full decodings of large maps when only a limited set of values is desired.- Specified by:
scanKeys
in interfaceMapTypeDecoder
- Type Parameters:
KeyType
- The key type is used when calling the match consumer- Parameters:
stream
- The InputStream containing the encoded Map type.state
- TheStreamDecoderState
used during this decode.context
- The previously created and configuredScanningContext
matchConsumer
- The consumer that will be notified when a matching key is found.- Throws:
DecodeException
- if an error occurs reading the value
-