org.jboss.netty.handler.codec.http.multipart

## Class HttpPostRequestEncoder

- java.lang.Object
- - org.jboss.netty.handler.codec.http.multipart.HttpPostRequestEncoder

- All Implemented Interfaces:
    ChunkedInput

      public class HttpPostRequestEncoder
      extends Object
      implements ChunkedInput

  This encoder will help to encode Request for a FORM as POST.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `HttpPostRequestEncoder.ErrorDataEncoderException` Exception when an error occurs while encoding

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `HttpPostRequestEncoder(HttpDataFactory factory, HttpRequest request, boolean multipart)`
    `HttpPostRequestEncoder(HttpDataFactory factory, HttpRequest request, boolean multipart, Charset charset)`
    `HttpPostRequestEncoder(HttpRequest request, boolean multipart)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addBodyAttribute(String name, String value)` Add a simple attribute in the body as Name=Value
    `void` | `addBodyFileUpload(String name, File file, String contentType, boolean isText)` Add a file as a FileUpload
    `void` | `addBodyFileUploads(String name, File[] file, String[] contentType, boolean[] isText)` Add a series of Files associated with one File parameter (implied Mixed mode in Multipart)
    `void` | `addBodyHttpData(InterfaceHttpData data)` Add the InterfaceHttpData to the Body list
    `void` | `cleanFiles()` Clean all HttpDatas (on Disk) for the current request.
    `void` | `close()` Releases the resources associated with the stream.
    `HttpRequest` | `finalizeRequest()` Finalize the request by preparing the Header in the request and returns the request ready to be sent.
    `List<InterfaceHttpData>` | `getBodyListAttributes()` This method returns a List of all InterfaceHttpData from body part.
    `boolean` | `hasNextChunk()` Returns `true` if and only if there is any data left in the stream.
    `boolean` | `isChunked()`
    `boolean` | `isEndOfInput()` Return `true` if and only if there is no data left in the stream and the stream has reached at its end.
    `boolean` | `isMultipart()` True if this request is a Multipart request
    `HttpChunk` | `nextChunk()` Returns the next available HttpChunk.
    `void` | `setBodyHttpDatas(List<InterfaceHttpData> datas)` Set the Body HttpDatas list

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

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

- - ### Constructor Detail

    - #### HttpPostRequestEncoder

          public HttpPostRequestEncoder(HttpRequest request,
                                boolean multipart)
                                 throws HttpPostRequestEncoder.ErrorDataEncoderException

      Parameters:
        `request` - the request to encode
        `multipart` - True if the FORM is a ENCTYPE="multipart/form-data"
      Throws:
        `NullPointerException` - for request
        `HttpPostRequestEncoder.ErrorDataEncoderException` - if the request is not a POST

    - #### HttpPostRequestEncoder

          public HttpPostRequestEncoder(HttpDataFactory factory,
                                HttpRequest request,
                                boolean multipart)
                                 throws HttpPostRequestEncoder.ErrorDataEncoderException

      Parameters:
        `factory` - the factory used to create InterfaceHttpData
        `request` - the request to encode
        `multipart` - True if the FORM is a ENCTYPE="multipart/form-data"
      Throws:
        `NullPointerException` - for request and factory
        `HttpPostRequestEncoder.ErrorDataEncoderException` - if the request is not a POST

    - #### HttpPostRequestEncoder

          public HttpPostRequestEncoder(HttpDataFactory factory,
                                HttpRequest request,
                                boolean multipart,
                                Charset charset)
                                 throws HttpPostRequestEncoder.ErrorDataEncoderException

      Parameters:
        `factory` - the factory used to create InterfaceHttpData
        `request` - the request to encode
        `multipart` - True if the FORM is a ENCTYPE="multipart/form-data"
        `charset` - the charset to use as default
      Throws:
        `NullPointerException` - for request or charset or factory
        `HttpPostRequestEncoder.ErrorDataEncoderException` - if the request is not a POST

  - ### Method Detail

    - #### cleanFiles

          public void cleanFiles()

      Clean all HttpDatas (on Disk) for the current request.

    - #### isMultipart

          public boolean isMultipart()

      True if this request is a Multipart request
      Returns:
        True if this request is a Multipart request

    - #### getBodyListAttributes

          public List<InterfaceHttpData> getBodyListAttributes()

      This method returns a List of all InterfaceHttpData from body part.
      Returns:
        the list of InterfaceHttpData from Body part

    - #### setBodyHttpDatas

          public void setBodyHttpDatas(List<InterfaceHttpData> datas)
                                throws HttpPostRequestEncoder.ErrorDataEncoderException

      Set the Body HttpDatas list
      Parameters:
        `datas` -
      Throws:
        `NullPointerException` - for datas
        `HttpPostRequestEncoder.ErrorDataEncoderException` - if the encoding is in error or if the finalize were already done

    - #### addBodyAttribute

          public void addBodyAttribute(String name,
                              String value)
                                throws HttpPostRequestEncoder.ErrorDataEncoderException

      Add a simple attribute in the body as Name=Value
      Parameters:
        `name` - name of the parameter
        `value` - the value of the parameter
      Throws:
        `NullPointerException` - for name
        `HttpPostRequestEncoder.ErrorDataEncoderException` - if the encoding is in error or if the finalize were already done

    - #### addBodyFileUpload

          public void addBodyFileUpload(String name,
                               File file,
                               String contentType,
                               boolean isText)
                                 throws HttpPostRequestEncoder.ErrorDataEncoderException

      Add a file as a FileUpload
      Parameters:
        `name` - the name of the parameter
        `file` - the file to be uploaded (if not Multipart mode, only the filename will be included)
        `contentType` - the associated contentType for the File
        `isText` - True if this file should be transmitted in Text format (else binary)
      Throws:
        `NullPointerException` - for name and file
        `HttpPostRequestEncoder.ErrorDataEncoderException` - if the encoding is in error or if the finalize were already done

    - #### addBodyFileUploads

          public void addBodyFileUploads(String name,
                                File[] file,
                                String[] contentType,
                                boolean[] isText)
                                  throws HttpPostRequestEncoder.ErrorDataEncoderException

      Add a series of Files associated with one File parameter (implied Mixed mode in Multipart)
      Parameters:
        `name` - the name of the parameter
        `file` - the array of files
        `contentType` - the array of content Types associated with each file
        `isText` - the array of isText attribute (False meaning binary mode) for each file
      Throws:
        `NullPointerException` - also throws if array have different sizes
        `HttpPostRequestEncoder.ErrorDataEncoderException` - if the encoding is in error or if the finalize were already done

    - #### addBodyHttpData

          public void addBodyHttpData(InterfaceHttpData data)
                               throws HttpPostRequestEncoder.ErrorDataEncoderException

      Add the InterfaceHttpData to the Body list
      Parameters:
        `data` -
      Throws:
        `NullPointerException` - for data
        `HttpPostRequestEncoder.ErrorDataEncoderException` - if the encoding is in error or if the finalize were already done

    - #### finalizeRequest

          public HttpRequest finalizeRequest()
                                      throws HttpPostRequestEncoder.ErrorDataEncoderException

      Finalize the request by preparing the Header in the request and returns the request ready to be sent.
      Once finalized, no data must be added.
      If the request does not need chunk (isChunked() == false), this request is the only object to send to the remote server.
      Returns:
        the request object (chunked or not according to size of body)
      Throws:
        `HttpPostRequestEncoder.ErrorDataEncoderException` - if the encoding is in error or if the finalize were already done

    - #### isChunked

          public boolean isChunked()

      Returns:
        True if the request is by Chunk

    - #### close

          public void close()
                     throws Exception

      Description copied from interface: `ChunkedInput`
      Releases the resources associated with the stream.
      Specified by:
        `close` in interface `ChunkedInput`
      Throws:
        `Exception`

    - #### nextChunk

          public HttpChunk nextChunk()
                              throws HttpPostRequestEncoder.ErrorDataEncoderException

      Returns the next available HttpChunk. The caller is responsible to test if this chunk is the last one (isLast()), in order to stop calling this method.
      Specified by:
        `nextChunk` in interface `ChunkedInput`
      Returns:
        the next available HttpChunk
      Throws:
        `HttpPostRequestEncoder.ErrorDataEncoderException` - if the encoding is in error

    - #### isEndOfInput

          public boolean isEndOfInput()
                               throws Exception

      Description copied from interface: `ChunkedInput`
      Return `true` if and only if there is no data left in the stream and the stream has reached at its end.
      Specified by:
        `isEndOfInput` in interface `ChunkedInput`
      Throws:
        `Exception`

    - #### hasNextChunk

          public boolean hasNextChunk()
                               throws Exception

      Description copied from interface: `ChunkedInput`
      Returns `true` if and only if there is any data left in the stream. Please note that `false` does not necessarily mean that the stream has reached at its end. In a slow stream, the next chunk might be unavailable just momentarily.
      Specified by:
        `hasNextChunk` in interface `ChunkedInput`
      Throws:
        `Exception`

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