Class AbstractDiskHttpData

All Implemented Interfaces:
ByteBufHolder, HttpData, InterfaceHttpData, ReferenceCounted, Comparable<InterfaceHttpData>
Direct Known Subclasses:
DiskAttribute, DiskFileUpload

public abstract class AbstractDiskHttpData extends AbstractHttpData
Abstract Disk HttpData implementation
  • Field Details

    • logger

      private static final InternalLogger logger
    • file

      private File file
    • isRenamed

      private boolean isRenamed
    • fileChannel

      private FileChannel fileChannel
  • Constructor Details

    • AbstractDiskHttpData

      protected AbstractDiskHttpData(String name, Charset charset, long size)
  • Method Details

    • getDiskFilename

      protected abstract String getDiskFilename()
      Returns:
      the real DiskFilename (basename)
    • getPrefix

      protected abstract String getPrefix()
      Returns:
      the default prefix
    • getBaseDirectory

      protected abstract String getBaseDirectory()
      Returns:
      the default base Directory
    • getPostfix

      protected abstract String getPostfix()
      Returns:
      the default postfix
    • deleteOnExit

      protected abstract boolean deleteOnExit()
      Returns:
      True if the file should be deleted on Exit by default
    • tempFile

      private File tempFile() throws IOException
      Returns:
      a new Temp File from getDiskFilename(), default prefix, postfix and baseDirectory
      Throws:
      IOException
    • setContent

      public void setContent(ByteBuf buffer) throws 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.

      Parameters:
      buffer - must be not null
      Throws:
      IOException
    • addContent

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

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

      Parameters:
      buffer - must be not null except if last is set to False
      last - True of the buffer is the last one
      Throws:
      IOException
    • setContent

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

      public void setContent(InputStream inputStream) throws IOException
      Description copied from interface: HttpData
      Set the content from the inputStream (erase any previous data)
      Parameters:
      inputStream - must be not null
      Throws:
      IOException
    • delete

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

      public byte[] get() throws 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.
      Returns:
      the contents of the file item as an array of bytes.
      Throws:
      IOException
    • getByteBuf

      public ByteBuf getByteBuf() throws 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.
      Returns:
      the content of the file item as a ByteBuf
      Throws:
      IOException
    • getChunk

      public ByteBuf getChunk(int length) throws 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.
      Returns:
      a ChannelBuffer for the content from the current position or an EMPTY_BUFFER if there is no more data to return
      Throws:
      IOException
    • getString

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

      public String getString(Charset encoding) throws IOException
      Description copied from interface: HttpData
      Returns the contents of the file item as a String, using the specified charset.
      Parameters:
      encoding - the charset to use
      Returns:
      the contents of the file item as a String, using the specified charset.
      Throws:
      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.
      Returns:
      True if the file contents is in memory.
    • renameTo

      public boolean renameTo(File dest) throws 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.
      Parameters:
      dest - destination file - must be not null
      Returns:
      True if the write is successful
      Throws:
      IOException
    • readFrom

      private static byte[] readFrom(File src) throws IOException
      Utility function
      Returns:
      the array of bytes
      Throws:
      IOException
    • getFile

      public File getFile() throws IOException
      Returns:
      the associated File if this data is represented in a file
      Throws:
      IOException - if this data is not represented by a file
    • touch

      public HttpData 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
      Specified by:
      touch in class AbstractHttpData
    • touch

      public HttpData touch(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
      Specified by:
      touch in class AbstractHttpData