Class JsonObjectDecoder
- java.lang.Object
-
- io.netty5.channel.ChannelHandlerAdapter
-
- io.netty5.handler.codec.ByteToMessageDecoder
-
- io.netty.contrib.handler.codec.json.JsonObjectDecoder
-
- All Implemented Interfaces:
io.netty5.channel.ChannelHandler
public class JsonObjectDecoder extends io.netty5.handler.codec.ByteToMessageDecoderSplits a byte stream of JSON objects and arrays into individual objects/arrays and passes them up theChannelPipeline.The byte stream is expected to be in UTF-8 character encoding or ASCII. The current implementation uses direct
bytetocharcast and then compares thatcharto a few low range ASCII characters like'{','['or'"'. UTF-8 is not using low range [0..0x7F] byte values for multibyte codepoint representations therefore fully supported by this implementation.This class does not do any real parsing or validation. A sequence of bytes is considered a JSON object/array if it contains a matching number of opening and closing braces/brackets. It's up to a subsequent
ChannelHandlerto parse the JSON text into a more usable form i.e. a POJO.
-
-
Constructor Summary
Constructors Constructor Description JsonObjectDecoder()JsonObjectDecoder(boolean streamArrayElements)JsonObjectDecoder(int maxObjectLength)JsonObjectDecoder(int maxObjectLength, boolean streamArrayElements)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voiddecode(io.netty5.channel.ChannelHandlerContext ctx, io.netty5.buffer.Buffer in)protected io.netty5.buffer.BufferextractObject(io.netty5.channel.ChannelHandlerContext ctx, io.netty5.buffer.Buffer buffer, int index, int length)Override this method if you want to filter the json objects/arrays that get passed through the pipeline.-
Methods inherited from class io.netty5.handler.codec.ByteToMessageDecoder
actualReadableBytes, channelInactive, channelRead, channelReadComplete, channelShutdown, decodeLast, discardSomeReadBytes, handlerAdded, handlerAdded0, handlerRemoved, handlerRemoved0, internalBuffer, isSharable, isSingleDecode, setSingleDecode
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.netty5.channel.ChannelHandler
bind, channelActive, channelExceptionCaught, channelInboundEvent, channelRegistered, channelUnregistered, channelWritabilityChanged, close, connect, deregister, disconnect, flush, pendingOutboundBytes, read, register, sendOutboundEvent, shutdown, write
-
-
-
-
Constructor Detail
-
JsonObjectDecoder
public JsonObjectDecoder()
-
JsonObjectDecoder
public JsonObjectDecoder(int maxObjectLength)
-
JsonObjectDecoder
public JsonObjectDecoder(boolean streamArrayElements)
-
JsonObjectDecoder
public JsonObjectDecoder(int maxObjectLength, boolean streamArrayElements)- Parameters:
maxObjectLength- maximum number of bytes a JSON object/array may use (including braces and all). Objects exceeding this length are dropped and anTooLongFrameExceptionis thrown.streamArrayElements- if set to true and the "top level" JSON object is an array, each of its entries is passed through the pipeline individually and immediately after it was fully received, allowing for arrays with "infinitely" many elements.
-
-
Method Detail
-
decode
protected void decode(io.netty5.channel.ChannelHandlerContext ctx, io.netty5.buffer.Buffer in)- Specified by:
decodein classio.netty5.handler.codec.ByteToMessageDecoder
-
extractObject
protected io.netty5.buffer.Buffer extractObject(io.netty5.channel.ChannelHandlerContext ctx, io.netty5.buffer.Buffer buffer, int index, int length)Override this method if you want to filter the json objects/arrays that get passed through the pipeline.
-
-