Class AbstractMixedHttpData<D extends HttpData>

java.lang.Object
io.netty.util.AbstractReferenceCounted
io.netty.handler.codec.http.multipart.AbstractMixedHttpData<D>
All Implemented Interfaces:
ByteBufHolder, HttpData, InterfaceHttpData, ReferenceCounted, java.lang.Comparable<InterfaceHttpData>
Direct Known Subclasses:
MixedAttribute, MixedFileUpload

abstract class AbstractMixedHttpData<D extends HttpData> extends AbstractReferenceCounted implements HttpData
  • Nested Class Summary

    Nested classes/interfaces inherited from interface InterfaceHttpData

    InterfaceHttpData.HttpDataType
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    (package private) final java.lang.String
     
    (package private) final boolean
     
    private final long
     
    (package private) D
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    AbstractMixedHttpData(long limitSize, java.lang.String baseDir, boolean deleteOnExit, D initial)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addContent(ByteBuf buffer, boolean last)
    Add the content from the ChannelBuffer
    void
    checkSize(long newSize)
    Check if the new size is not reaching the max limit allowed.
    int
     
    Return the data which is held by this ByteBufHolder.
    Creates a deep copy of this ByteBufHolder.
    protected void
    Called once AbstractReferenceCounted.refCnt() is equals 0.
    long
    Returns the defined length of the HttpData.
    void
    Deletes the underlying storage for a file item, including deleting any associated temporary disk file.
    Duplicates this ByteBufHolder.
    boolean
    equals(java.lang.Object obj)
     
    byte[]
    get()
    Returns the contents of the file item as an array of bytes.
    Note: this method will allocate a lot of memory, if the data is currently stored on the file system.
    Returns the content of the file item as a ByteBuf.
    Note: this method will allocate a lot of memory, if the data is currently stored on the file system.
    java.nio.charset.Charset
    Returns the Charset passed by the browser or null if not defined.
    getChunk(int length)
    Returns a ChannelBuffer for the content from the current position with at most length read bytes, increasing the current position of the Bytes read.
    java.io.File
     
     
    long
    Returns the maxSize for this HttpData.
    java.lang.String
    Returns the name of this InterfaceHttpData.
    java.lang.String
    Returns the contents of the file item as a String, using the default character encoding.
    java.lang.String
    getString(java.nio.charset.Charset encoding)
    Returns the contents of the file item as a String, using the specified charset.
    int
     
    boolean
     
    boolean
    Provides a hint as to whether or not the file contents will be read from memory.
    long
    Returns the size in byte of the InterfaceHttpData
    (package private) abstract D
     
    boolean
    renameTo(java.io.File dest)
    A convenience getMethod to write an uploaded item to disk.
    replace(ByteBuf content)
    Returns a new ByteBufHolder which contains the specified content.
    Increases the reference count by 1.
    retain(int increment)
    Increases the reference count by the specified increment.
    Duplicates this ByteBufHolder.
    void
    setCharset(java.nio.charset.Charset charset)
    Set the Charset passed by the browser if defined
    void
    Set the content from the ChannelBuffer (erase any previous data)
    void
    setContent(java.io.File file)
    Set the content from the file (erase any previous data)
    void
    setContent(java.io.InputStream inputStream)
    Set the content from the inputStream (erase any previous data)
    void
    setMaxSize(long maxSize)
    Set the maxSize for this HttpData.
    java.lang.String
     
    Records the current access location of this object for debugging purposes.
    touch(java.lang.Object hint)
    Records the current access location of this object with an additional arbitrary information for debugging purposes.

    Methods inherited from class AbstractReferenceCounted

    refCnt, release, release, setRefCnt

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait

    Methods inherited from interface ReferenceCounted

    refCnt, release, release
  • Field Details

    • baseDir

      final java.lang.String baseDir
    • deleteOnExit

      final boolean deleteOnExit
    • wrapped

      D extends HttpData wrapped
    • limitSize

      private final long limitSize
  • Constructor Details

    • AbstractMixedHttpData

      AbstractMixedHttpData(long limitSize, java.lang.String baseDir, boolean deleteOnExit, D initial)
  • Method Details

    • makeDiskData

      abstract D makeDiskData()
    • getMaxSize

      public long getMaxSize()
      Description copied from interface: HttpData
      Returns the maxSize for this HttpData.
      Specified by:
      getMaxSize in interface HttpData
    • setMaxSize

      public void setMaxSize(long maxSize)
      Description copied from interface: HttpData
      Set the maxSize for this HttpData. When limit will be reached, an exception will be raised. Setting it to (-1) means no limitation. By default, to be set from the HttpDataFactory.
      Specified by:
      setMaxSize in interface HttpData
    • content

      public ByteBuf content()
      Description copied from interface: ByteBufHolder
      Return the data which is held by this ByteBufHolder.
      Specified by:
      content in interface ByteBufHolder
    • checkSize

      public void checkSize(long newSize) throws java.io.IOException
      Description copied from interface: HttpData
      Check if the new size is not reaching the max limit allowed. The limit is always computed in terms of bytes.
      Specified by:
      checkSize in interface HttpData
      Throws:
      java.io.IOException
    • definedLength

      public long definedLength()
      Description copied from interface: HttpData
      Returns the defined length of the HttpData. If no Content-Length is provided in the request, the defined length is always 0 (whatever during decoding or in final state). If Content-Length is provided in the request, this is this given defined length. This value does not change, whatever during decoding or in the final state. This method could be used for instance to know the amount of bytes transmitted for one particular HttpData, for example one FileUpload or any known big Attribute.
      Specified by:
      definedLength in interface HttpData
      Returns:
      the defined length of the HttpData
    • getCharset

      public java.nio.charset.Charset getCharset()
      Description copied from interface: HttpData
      Returns the Charset passed by the browser or null if not defined.
      Specified by:
      getCharset in interface HttpData
      Returns:
      the Charset passed by the browser or null if not defined.
    • getName

      public java.lang.String getName()
      Description copied from interface: InterfaceHttpData
      Returns the name of this InterfaceHttpData.
      Specified by:
      getName in interface InterfaceHttpData
    • addContent

      public void addContent(ByteBuf buffer, boolean last) throws java.io.IOException
      Description copied from interface: HttpData
      Add the content from the ChannelBuffer

      ReferenceCounted.release() ownership of buffer is transferred to this HttpData.

      Specified by:
      addContent in interface HttpData
      Parameters:
      buffer - must be not null except if last is set to False
      last - True of the buffer is the last one
      Throws:
      java.io.IOException
    • deallocate

      protected void deallocate()
      Description copied from class: AbstractReferenceCounted
      Called once AbstractReferenceCounted.refCnt() is equals 0.
      Specified by:
      deallocate in class AbstractReferenceCounted
    • delete

      public void delete()
      Description copied from interface: HttpData
      Deletes the underlying storage for a file item, including deleting any associated temporary disk file.
      Specified by:
      delete in interface HttpData
    • get

      public byte[] get() throws java.io.IOException
      Description copied from interface: HttpData
      Returns the contents of the file item as an array of bytes.
      Note: this method will allocate a lot of memory, if the data is currently stored on the file system.
      Specified by:
      get in interface HttpData
      Returns:
      the contents of the file item as an array of bytes.
      Throws:
      java.io.IOException
    • getByteBuf

      public ByteBuf getByteBuf() throws java.io.IOException
      Description copied from interface: HttpData
      Returns the content of the file item as a ByteBuf.
      Note: this method will allocate a lot of memory, if the data is currently stored on the file system.
      Specified by:
      getByteBuf in interface HttpData
      Returns:
      the content of the file item as a ByteBuf
      Throws:
      java.io.IOException
    • getString

      public java.lang.String getString() throws java.io.IOException
      Description copied from interface: HttpData
      Returns the contents of the file item as a String, using the default character encoding.
      Specified by:
      getString in interface HttpData
      Returns:
      the contents of the file item as a String, using the default character encoding.
      Throws:
      java.io.IOException
    • getString

      public java.lang.String getString(java.nio.charset.Charset encoding) throws java.io.IOException
      Description copied from interface: HttpData
      Returns the contents of the file item as a String, using the specified charset.
      Specified by:
      getString in interface HttpData
      Parameters:
      encoding - the charset to use
      Returns:
      the contents of the file item as a String, using the specified charset.
      Throws:
      java.io.IOException
    • isInMemory

      public boolean isInMemory()
      Description copied from interface: HttpData
      Provides a hint as to whether or not the file contents will be read from memory.
      Specified by:
      isInMemory in interface HttpData
      Returns:
      True if the file contents is in memory.
    • length

      public long length()
      Description copied from interface: HttpData
      Returns the size in byte of the InterfaceHttpData
      Specified by:
      length in interface HttpData
      Returns:
      the size of the InterfaceHttpData
    • renameTo

      public boolean renameTo(java.io.File dest) throws java.io.IOException
      Description copied from interface: HttpData
      A convenience getMethod to write an uploaded item to disk. If a previous one exists, it will be deleted. Once this getMethod is called, if successful, the new file will be out of the cleaner of the factory that creates the original InterfaceHttpData object.
      Specified by:
      renameTo in interface HttpData
      Parameters:
      dest - destination file - must be not null
      Returns:
      True if the write is successful
      Throws:
      java.io.IOException
    • setCharset

      public void setCharset(java.nio.charset.Charset charset)
      Description copied from interface: HttpData
      Set the Charset passed by the browser if defined
      Specified by:
      setCharset in interface HttpData
      Parameters:
      charset - Charset to set - must be not null
    • setContent

      public void setContent(ByteBuf buffer) throws java.io.IOException
      Description copied from interface: HttpData
      Set the content from the ChannelBuffer (erase any previous data)

      ReferenceCounted.release() ownership of buffer is transferred to this HttpData.

      Specified by:
      setContent in interface HttpData
      Parameters:
      buffer - must be not null
      Throws:
      java.io.IOException
    • setContent

      public void setContent(java.io.File file) throws java.io.IOException
      Description copied from interface: HttpData
      Set the content from the file (erase any previous data)
      Specified by:
      setContent in interface HttpData
      Parameters:
      file - must be not null
      Throws:
      java.io.IOException
    • setContent

      public void setContent(java.io.InputStream inputStream) throws java.io.IOException
      Description copied from interface: HttpData
      Set the content from the inputStream (erase any previous data)
      Specified by:
      setContent in interface HttpData
      Parameters:
      inputStream - must be not null
      Throws:
      java.io.IOException
    • isCompleted

      public boolean isCompleted()
      Specified by:
      isCompleted in interface HttpData
      Returns:
      True if the InterfaceHttpData is completed (all data are stored)
    • getHttpDataType

      public InterfaceHttpData.HttpDataType getHttpDataType()
      Specified by:
      getHttpDataType in interface InterfaceHttpData
      Returns:
      The HttpDataType
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class java.lang.Object
    • equals

      public boolean equals(java.lang.Object obj)
      Overrides:
      equals in class java.lang.Object
    • compareTo

      public int compareTo(InterfaceHttpData o)
      Specified by:
      compareTo in interface java.lang.Comparable<D extends HttpData>
    • toString

      public java.lang.String toString()
      Overrides:
      toString in class java.lang.Object
    • getChunk

      public ByteBuf getChunk(int length) throws java.io.IOException
      Description copied from interface: HttpData
      Returns a ChannelBuffer for the content from the current position with at most length read bytes, increasing the current position of the Bytes read. Once it arrives at the end, it returns an EMPTY_BUFFER and it resets the current position to 0.
      Specified by:
      getChunk in interface HttpData
      Returns:
      a ChannelBuffer for the content from the current position or an EMPTY_BUFFER if there is no more data to return
      Throws:
      java.io.IOException
    • getFile

      public java.io.File getFile() throws java.io.IOException
      Specified by:
      getFile in interface HttpData
      Returns:
      the associated File if this data is represented in a file
      Throws:
      java.io.IOException - if this data is not represented by a file
    • copy

      public D copy()
      Description copied from interface: ByteBufHolder
      Creates a deep copy of this ByteBufHolder.
      Specified by:
      copy in interface ByteBufHolder
      Specified by:
      copy in interface HttpData
    • duplicate

      public D duplicate()
      Description copied from interface: ByteBufHolder
      Duplicates this ByteBufHolder. Be aware that this will not automatically call ByteBufHolder.retain().
      Specified by:
      duplicate in interface ByteBufHolder
      Specified by:
      duplicate in interface HttpData
    • retainedDuplicate

      public D retainedDuplicate()
      Description copied from interface: ByteBufHolder
      Duplicates this ByteBufHolder. This method returns a retained duplicate unlike ByteBufHolder.duplicate().
      Specified by:
      retainedDuplicate in interface ByteBufHolder
      Specified by:
      retainedDuplicate in interface HttpData
      See Also:
    • replace

      public D replace(ByteBuf content)
      Description copied from interface: ByteBufHolder
      Returns a new ByteBufHolder which contains the specified content.
      Specified by:
      replace in interface ByteBufHolder
      Specified by:
      replace in interface HttpData
    • touch

      public D touch()
      Description copied from interface: ReferenceCounted
      Records the current access location of this object for debugging purposes. If this object is determined to be leaked, the information recorded by this operation will be provided to you via ResourceLeakDetector. This method is a shortcut to touch(null).
      Specified by:
      touch in interface ByteBufHolder
      Specified by:
      touch in interface HttpData
      Specified by:
      touch in interface InterfaceHttpData
      Specified by:
      touch in interface ReferenceCounted
      Overrides:
      touch in class AbstractReferenceCounted
    • touch

      public D touch(java.lang.Object hint)
      Description copied from interface: ReferenceCounted
      Records the current access location of this object with an additional arbitrary information for debugging purposes. If this object is determined to be leaked, the information recorded by this operation will be provided to you via ResourceLeakDetector.
      Specified by:
      touch in interface ByteBufHolder
      Specified by:
      touch in interface HttpData
      Specified by:
      touch in interface InterfaceHttpData
      Specified by:
      touch in interface ReferenceCounted
    • retain

      public D retain()
      Description copied from interface: ReferenceCounted
      Increases the reference count by 1.
      Specified by:
      retain in interface ByteBufHolder
      Specified by:
      retain in interface HttpData
      Specified by:
      retain in interface InterfaceHttpData
      Specified by:
      retain in interface ReferenceCounted
      Overrides:
      retain in class AbstractReferenceCounted
    • retain

      public D retain(int increment)
      Description copied from interface: ReferenceCounted
      Increases the reference count by the specified increment.
      Specified by:
      retain in interface ByteBufHolder
      Specified by:
      retain in interface HttpData
      Specified by:
      retain in interface InterfaceHttpData
      Specified by:
      retain in interface ReferenceCounted
      Overrides:
      retain in class AbstractReferenceCounted