org.jboss.netty.handler.codec.http

## Class HttpContentEncoder

- java.lang.Object
- - org.jboss.netty.channel.SimpleChannelHandler
  - - org.jboss.netty.handler.codec.http.HttpContentEncoder

- All Implemented Interfaces:
    ChannelDownstreamHandler, ChannelHandler, ChannelUpstreamHandler, LifeCycleAwareChannelHandler
  Direct Known Subclasses:
    HttpContentCompressor

      public abstract class HttpContentEncoder
      extends SimpleChannelHandler
      implements LifeCycleAwareChannelHandler

  Encodes the content of the outbound `HttpResponse` and `HttpChunk`. The original content is replaced with the new content encoded by the `EncoderEmbedder`, which is created by `newContentEncoder(HttpMessage, String)`. Once encoding 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 encoded content. If there is no supported encoding in the corresponding `HttpRequest`'s `"Accept-Encoding"` header, `newContentEncoder(HttpMessage, String)` should return `null` so that no encoding occurs (i.e. pass-through).

  Please note that this is an abstract class. You have to extend this class and implement `newContentEncoder(HttpMessage, String)` and `getTargetContentEncoding(String)` properly to make this class functional. For example, refer to the source code of `HttpContentCompressor`.

  This handler must be placed after `HttpMessageEncoder` in the pipeline so that this handler can intercept HTTP responses before `HttpMessageEncoder` converts them into `ChannelBuffer`s.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.jboss.netty.channel.ChannelHandler

      `ChannelHandler.Sharable`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `HttpContentEncoder()` Creates a new instance.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterAdd(ChannelHandlerContext ctx)`
    `void` | `afterRemove(ChannelHandlerContext ctx)`
    `void` | `beforeAdd(ChannelHandlerContext ctx)`
    `void` | `beforeRemove(ChannelHandlerContext ctx)`
    `void` | `channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e)` Invoked when a `Channel` was closed and all its related resources were released.
    `protected abstract String` | `getTargetContentEncoding(String acceptEncoding)` Returns the expected content encoding of the encoded content.
    `void` | `messageReceived(ChannelHandlerContext ctx, MessageEvent e)` Invoked when a message object (e.g: `ChannelBuffer`) was received from a remote peer.
    `protected abstract EncoderEmbedder<ChannelBuffer>` | `newContentEncoder(HttpMessage msg, String acceptEncoding)` Returns a new `EncoderEmbedder` that encodes the HTTP message content.
    `void` | `writeRequested(ChannelHandlerContext ctx, MessageEvent e)` Invoked when `Channel.write(Object)` is called.

    - ### Methods inherited from class org.jboss.netty.channel.SimpleChannelHandler

      `bindRequested, channelBound, channelConnected, channelDisconnected, channelInterestChanged, channelOpen, channelUnbound, childChannelClosed, childChannelOpen, closeRequested, connectRequested, disconnectRequested, exceptionCaught, handleDownstream, handleUpstream, setInterestOpsRequested, unbindRequested, writeComplete`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### HttpContentEncoder

          protected HttpContentEncoder()

      Creates a new instance.

  - ### Method Detail

    - #### messageReceived

          public void messageReceived(ChannelHandlerContext ctx,
                             MessageEvent e)
                               throws Exception

      Description copied from class: `SimpleChannelHandler`
      Invoked when a message object (e.g: `ChannelBuffer`) was received from a remote peer.
      Overrides:
        `messageReceived` in class `SimpleChannelHandler`
      Throws:
        `Exception`

    - #### writeRequested

          public void writeRequested(ChannelHandlerContext ctx,
                            MessageEvent e)
                              throws Exception

      Description copied from class: `SimpleChannelHandler`
      Invoked when `Channel.write(Object)` is called.
      Overrides:
        `writeRequested` in class `SimpleChannelHandler`
      Throws:
        `Exception`

    - #### channelClosed

          public void channelClosed(ChannelHandlerContext ctx,
                           ChannelStateEvent e)
                             throws Exception

      Description copied from class: `SimpleChannelHandler`
      Invoked when a `Channel` was closed and all its related resources were released.
      Overrides:
        `channelClosed` in class `SimpleChannelHandler`
      Throws:
        `Exception`

    - #### newContentEncoder

          protected abstract EncoderEmbedder<ChannelBuffer> newContentEncoder(HttpMessage msg,
                                                         String acceptEncoding)
                                                                       throws Exception

      Returns a new `EncoderEmbedder` that encodes the HTTP message content.
      Parameters:
        `acceptEncoding` - the value of the `"Accept-Encoding"` header
      Returns:
        a new `EncoderEmbedder` if there is a supported encoding in `acceptEncoding`. `null` otherwise.
      Throws:
        `Exception`

    - #### getTargetContentEncoding

          protected abstract String getTargetContentEncoding(String acceptEncoding)
                                                      throws Exception

      Returns the expected content encoding of the encoded content.
      Parameters:
        `acceptEncoding` - the value of the `"Accept-Encoding"` header
      Returns:
        the expected content encoding of the new content
      Throws:
        `Exception`

    - #### beforeAdd

          public void beforeAdd(ChannelHandlerContext ctx)
                         throws Exception

      Specified by:
        `beforeAdd` in interface `LifeCycleAwareChannelHandler`
      Throws:
        `Exception`

    - #### afterAdd

          public void afterAdd(ChannelHandlerContext ctx)
                        throws Exception

      Specified by:
        `afterAdd` in interface `LifeCycleAwareChannelHandler`
      Throws:
        `Exception`

    - #### beforeRemove

          public void beforeRemove(ChannelHandlerContext ctx)
                            throws Exception

      Specified by:
        `beforeRemove` in interface `LifeCycleAwareChannelHandler`
      Throws:
        `Exception`

    - #### afterRemove

          public void afterRemove(ChannelHandlerContext ctx)
                           throws Exception

      Specified by:
        `afterRemove` in interface `LifeCycleAwareChannelHandler`
      Throws:
        `Exception`

Copyright © 2008-2012 The Netty Project. All Rights Reserved.