Class HTMLContext.Attachment

  • All Implemented Interfaces:
    Closeable, AutoCloseable
    Enclosing interface:
    HTMLContext

    public static class HTMLContext.Attachment
    extends Object
    implements Closeable
    An Attachment represents either binary data or a (text) file uploaded to the HTTP-service. This data or the uploaded files may be provided as mulitpart-POST-data generated by appropriate HTML set via the HTMLContext. Attachments provide a high-level interface for a body part of the multipart by providing the size, the content-type, the data, the filename, as well as all additional header data of the body part.
    Since attachments need not necessarily be files, the filename may be null. However all other information is guaranteed to be non-null. Note that the header data is not parsed but just provided as-is from the body part.

    The data of this attachment may be read several times if required. However, it will only be able to be used once if the first request is non-rereadable.

    • Constructor Detail

      • Attachment

        public Attachment​(String contentType,
                          InputStream data,
                          long size,
                          String fileName,
                          Map<String,​String> headerData)
                   throws IOException
        Creates a new Attachment with the designated attributes. The header data is stored as unmodifiable map. Do not modify it after calling this constructor to prevent unwanted side-effects since it is not copied.

        If the designated size is is invalid (negative) a BufferedRereadableContent will be created to determine the size. This allows to reread the designated data. Also if the first data retrieval is for rereading, a BufferedRereadableContent will be used.

        Parameters:
        contentType - The value of the RFC 822 "Content-Type" header field of the body part, which indicates how to interpret the data of this attachment. This must neither be null nor the empty string.
        data - The data of this attachment which is the content of the corresponding body part. This must not be null.
        size - The size in bytes of the data/content of the body part.
        fileName - The name of the file in case the body part contains a file, null otherwise.
        headerData - The map containing the complete and unparsed headers of the corresponding body part. This must not be null.
        Throws:
        IOException - If a BufferedRereadableContent is required to determine the size, creating it may throw an IOException.
    • Method Detail

      • getContentType

        public String getContentType()
        Gets the content type of the data, that is the value of the RFC 822 "Content-Type" header field of the body part.
        Returns:
        The content type of the data, e.g. text/html.
      • getSize

        public long getSize()
        Gets the size of the attachment as number of bytes.
        Returns:
        The size of the attachment (number of bytes).
      • getData

        public InputStream getData()
        Gets the actual data as input stream; this is the content of the corresponding body part of the multipart.
        Returns:
        The actual data of this attachment as provided as content of the body part.
      • getDataRereadable

        public InputStream getDataRereadable()
                                      throws IOException
        Gets the actual data as input stream. This method can be called several times returning the same input for every call.
        Users should InputStream.close() the returned stream.
        Returns:
        The actual data of this attachment as provided as content of the body part.
        Throws:
        IOException - If there are problems creating the BufferedRereadableContent allowing for regetting the InputStream or the data has already been retrieved non-rereadably, an IOException will be thrown.
      • getFileName

        public String getFileName()
        Gets the name of the file (without path information), in case the attachment was a file upload, null otherwise (for non-file binary data).
        Returns:
        The file name in case of a file upload, null otherwise (for non-file binary data).
      • getHeaderData

        public Map<String,​String> getHeaderData()
        Gets all header data which is sent with the body part of the multipart this attachment stems from. The values of the header data may be arbitrary strings even containing key-value-pairs again. However, they are just provided as from the body part.
        Returns:
        All header data (mapping from header name to value) which is sent with the body part of the multipart this attachment stems from.
        See Also:
        Header