Class HttpContentDecoder
java.lang.Object
org.jboss.netty.channel.SimpleChannelUpstreamHandler
org.jboss.netty.handler.codec.http.HttpContentDecoder
- All Implemented Interfaces:
ChannelHandler
,ChannelUpstreamHandler
,LifeCycleAwareChannelHandler
- Direct Known Subclasses:
HttpContentDecompressor
public abstract class HttpContentDecoder
extends SimpleChannelUpstreamHandler
implements LifeCycleAwareChannelHandler
Decodes the content of the received
HttpRequest
and HttpChunk
.
The original content is replaced with the new content decoded by the
DecoderEmbedder
, which is created by newContentDecoder(String)
.
Once decoding is finished, the value of the 'Content-Encoding'
header is set to the target content encoding, as returned by getTargetContentEncoding(String)
.
Also, the 'Content-Length' header is updated to the length of the
decoded content. If the content encoding of the original is not supported
by the decoder, newContentDecoder(String)
should return null
so that no decoding occurs (i.e. pass-through).
Please note that this is an abstract class. You have to extend this class
and implement newContentDecoder(String)
properly to make this class
functional. For example, refer to the source code of HttpContentDecompressor
.
This handler must be placed after HttpMessageDecoder
in the pipeline
so that this handler can intercept HTTP requests after HttpMessageDecoder
converts ChannelBuffer
s into HTTP requests.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.jboss.netty.channel.ChannelHandler
ChannelHandler.Sharable
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
void
void
void
void
Invoked when aChannel
was closed and all its related resources were released.private ChannelBuffer
decode
(ChannelBuffer buf) private ChannelBuffer
protected String
getTargetContentEncoding
(String contentEncoding) Returns the expected content encoding of the decoded content.void
Invoked when a message object (e.g:ChannelBuffer
) was received from a remote peer.protected abstract DecoderEmbedder
<ChannelBuffer> newContentDecoder
(String contentEncoding) Returns a newDecoderEmbedder
that decodes the HTTP message content encoded in the specified contentEncoding.Methods inherited from class org.jboss.netty.channel.SimpleChannelUpstreamHandler
channelBound, channelConnected, channelDisconnected, channelInterestChanged, channelOpen, channelUnbound, childChannelClosed, childChannelOpen, exceptionCaught, handleUpstream, writeComplete
-
Field Details
-
decoder
-
-
Constructor Details
-
HttpContentDecoder
protected HttpContentDecoder()Creates a new instance.
-
-
Method Details
-
messageReceived
Description copied from class:SimpleChannelUpstreamHandler
Invoked when a message object (e.g:ChannelBuffer
) was received from a remote peer.- Overrides:
messageReceived
in classSimpleChannelUpstreamHandler
- Throws:
Exception
-
channelClosed
Description copied from class:SimpleChannelUpstreamHandler
Invoked when aChannel
was closed and all its related resources were released.- Overrides:
channelClosed
in classSimpleChannelUpstreamHandler
- Throws:
Exception
-
newContentDecoder
protected abstract DecoderEmbedder<ChannelBuffer> newContentDecoder(String contentEncoding) throws Exception Returns a newDecoderEmbedder
that decodes the HTTP message content encoded in the specified contentEncoding.- Parameters:
contentEncoding
- the value of the"Content-Encoding"
header- Returns:
- a new
DecoderEmbedder
if the specified encoding is supported.null
otherwise (alternatively, you can throw an exception to block unknown encoding). - Throws:
Exception
-
getTargetContentEncoding
Returns the expected content encoding of the decoded content. This method returns"identity"
by default, which is the case for most decoders.- Parameters:
contentEncoding
- the value of the"Content-Encoding"
header- Returns:
- the expected content encoding of the new content
- Throws:
Exception
-
decode
-
finishDecode
-
beforeAdd
- Specified by:
beforeAdd
in interfaceLifeCycleAwareChannelHandler
- Throws:
Exception
-
afterAdd
- Specified by:
afterAdd
in interfaceLifeCycleAwareChannelHandler
- Throws:
Exception
-
beforeRemove
- Specified by:
beforeRemove
in interfaceLifeCycleAwareChannelHandler
- Throws:
Exception
-
afterRemove
- Specified by:
afterRemove
in interfaceLifeCycleAwareChannelHandler
- Throws:
Exception
-