Guest User

PartItem

a guest
Jun 28th, 2013
749
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.89 KB | None | 0 0
  1. import java.io.File;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.OutputStream;
  5. import java.io.UnsupportedEncodingException;
  6. import java.util.Iterator;
  7.  
  8. import javax.servlet.http.Part;
  9.  
  10. import org.apache.commons.fileupload.FileItem;
  11. import org.apache.commons.fileupload.FileItemHeaders;
  12. import org.apache.commons.fileupload.util.FileItemHeadersImpl;
  13. import org.apache.commons.io.IOUtils;
  14. import org.slf4j.Logger;
  15. import org.slf4j.LoggerFactory;
  16.  
  17. public class PartItem implements FileItem {
  18.     // defaut uid
  19.     private static final long serialVersionUID = 1L;
  20.  
  21.     // get the logger
  22.     private static final Logger LOGGER = LoggerFactory
  23.             .getLogger(PartItem.class);
  24.  
  25.     /**
  26.      * The delegate part
  27.      */
  28.     private Part part;
  29.  
  30.     /**
  31.      * Storing the content of the part since the inputstream may be only read
  32.      * one.
  33.      */
  34.     private byte[] content;
  35.  
  36.     /**
  37.      * Is this part a form or a file field?
  38.      */
  39.     private boolean formField = false;
  40.  
  41.     /**
  42.      * Create a new partItem with the given part.
  43.      *
  44.      * @param part
  45.      *            The part to delegate.
  46.      */
  47.     public PartItem(Part part) {
  48.         this.part = part;
  49.     }
  50.  
  51.     /*
  52.      * (non-Javadoc)
  53.      *
  54.      * @see org.apache.commons.fileupload.FileItemHeadersSupport#getHeaders()
  55.      */
  56.     @Override
  57.     public FileItemHeaders getHeaders() {
  58.         Iterator<String> s = part.getHeaderNames().iterator();
  59.  
  60.         FileItemHeadersImpl f = new FileItemHeadersImpl();
  61.  
  62.         while (s.hasNext()) {
  63.             String key = s.next();
  64.             f.addHeader(key, part.getHeader(key));
  65.         }
  66.  
  67.         return f;
  68.     }
  69.  
  70.     /*
  71.      * (non-Javadoc)
  72.      *
  73.      * @see
  74.      * org.apache.commons.fileupload.FileItemHeadersSupport#setHeaders(org.apache
  75.      * .commons.fileupload.FileItemHeaders)
  76.      */
  77.     @Override
  78.     public void setHeaders(FileItemHeaders headers) {
  79.         // may be ignored. The headers of a part cannot be changed
  80.     }
  81.  
  82.     /*
  83.      * (non-Javadoc)
  84.      *
  85.      * @see org.apache.commons.fileupload.FileItem#getInputStream()
  86.      */
  87.     @Override
  88.     public InputStream getInputStream() throws IOException {
  89.         return part.getInputStream();
  90.     }
  91.  
  92.     /*
  93.      * (non-Javadoc)
  94.      *
  95.      * @see org.apache.commons.fileupload.FileItem#getContentType()
  96.      */
  97.     @Override
  98.     public String getContentType() {
  99.         return part.getContentType();
  100.     }
  101.  
  102.     /*
  103.      * (non-Javadoc)
  104.      *
  105.      * @see org.apache.commons.fileupload.FileItem#getName()
  106.      */
  107.     @Override
  108.     public String getName() {
  109.         return part.getSubmittedFileName();
  110.     }
  111.  
  112.     /*
  113.      * (non-Javadoc)
  114.      *
  115.      * @see org.apache.commons.fileupload.FileItem#isInMemory()
  116.      */
  117.     @Override
  118.     public boolean isInMemory() {
  119.         return true; // these parts should not be written to disk
  120.     }
  121.  
  122.     /*
  123.      * (non-Javadoc)
  124.      *
  125.      * @see org.apache.commons.fileupload.FileItem#getSize()
  126.      */
  127.     @Override
  128.     public long getSize() {
  129.         return part.getSize();
  130.     }
  131.  
  132.     /*
  133.      * (non-Javadoc)
  134.      *
  135.      * @see org.apache.commons.fileupload.FileItem#get()
  136.      */
  137.     @Override
  138.     public byte[] get() {
  139.  
  140.         if (content == null) {
  141.             try {
  142.                 content = IOUtils.toByteArray(getInputStream());
  143.             } catch (IOException e) {
  144.                 LOGGER.error("Failed to read content from the part", e);
  145.             }
  146.         }
  147.  
  148.         return content;
  149.     }
  150.  
  151.     /*
  152.      * (non-Javadoc)
  153.      *
  154.      * @see org.apache.commons.fileupload.FileItem#getString(java.lang.String)
  155.      */
  156.     @Override
  157.     public String getString(String encoding)
  158.             throws UnsupportedEncodingException {
  159.         return new String(get(), encoding);
  160.     }
  161.  
  162.     /*
  163.      * (non-Javadoc)
  164.      *
  165.      * @see org.apache.commons.fileupload.FileItem#getString()
  166.      */
  167.     @Override
  168.     public String getString() {
  169.         return new String(get());
  170.     }
  171.  
  172.     /*
  173.      * (non-Javadoc)
  174.      *
  175.      * @see org.apache.commons.fileupload.FileItem#write(java.io.File)
  176.      */
  177.     @Override
  178.     public void write(File file) throws Exception {
  179.         // file will stay in memory
  180.     }
  181.  
  182.     /*
  183.      * (non-Javadoc)
  184.      *
  185.      * @see org.apache.commons.fileupload.FileItem#delete()
  186.      */
  187.     @Override
  188.     public void delete() {
  189.         // file only exists in memory therefor delete() is not implemented
  190.     }
  191.  
  192.     /*
  193.      * (non-Javadoc)
  194.      *
  195.      * @see org.apache.commons.fileupload.FileItem#getFieldName()
  196.      */
  197.     @Override
  198.     public String getFieldName() {
  199.         return part.getName();
  200.     }
  201.  
  202.     /*
  203.      * (non-Javadoc)
  204.      *
  205.      * @see
  206.      * org.apache.commons.fileupload.FileItem#setFieldName(java.lang.String)
  207.      */
  208.     @Override
  209.     public void setFieldName(String name) {
  210.         LOGGER.info("setFieldName()");
  211.  
  212.     }
  213.  
  214.     /*
  215.      * (non-Javadoc)
  216.      *
  217.      * @see org.apache.commons.fileupload.FileItem#isFormField()
  218.      */
  219.     @Override
  220.     public boolean isFormField() {
  221.         return formField;
  222.     }
  223.  
  224.     /*
  225.      * (non-Javadoc)
  226.      *
  227.      * @see org.apache.commons.fileupload.FileItem#setFormField(boolean)
  228.      */
  229.     @Override
  230.     public void setFormField(boolean state) {
  231.         this.formField = state;
  232.  
  233.     }
  234.  
  235.     /*
  236.      * (non-Javadoc)
  237.      *
  238.      * @see org.apache.commons.fileupload.FileItem#getOutputStream()
  239.      */
  240.     @Override
  241.     public OutputStream getOutputStream() throws IOException {
  242.         // the part cannot be changed.
  243.         return null;
  244.     }
  245.  
  246. }
Advertisement
Add Comment
Please, Sign In to add comment