1 /******************************************************************************* 2 * Copyright (c) 2016 Raymond Augé and others. 3 * 4 * This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License 2.0 6 * which accompanies this distribution, and is available at 7 * https://www.eclipse.org/legal/epl-2.0/ 8 * 9 * SPDX-License-Identifier: EPL-2.0 10 * 11 * Contributors: 12 * Raymond Augé <raymond.auge@liferay.com> - Bug 497271 13 *******************************************************************************/ 14 package org.eclipse.equinox.http.servlet.internal.multipart; 15 16 import java.io.*; 17 import java.util.*; 18 import javax.servlet.http.Part; 19 import org.apache.commons.fileupload.FileItemHeaders; 20 import org.apache.commons.fileupload.disk.DiskFileItem; 21 22 public class MultipartSupportPart implements Part { 23 MultipartSupportPart(DiskFileItem item)24 public MultipartSupportPart(DiskFileItem item) { 25 this.item = item; 26 this.headers = item.getHeaders(); 27 } 28 29 @Override getInputStream()30 public InputStream getInputStream() throws IOException { 31 return item.getInputStream(); 32 } 33 34 @Override getContentType()35 public String getContentType() { 36 return item.getContentType(); 37 } 38 39 @Override getName()40 public String getName() { 41 return item.getFieldName(); 42 } 43 44 @Override getSubmittedFileName()45 public String getSubmittedFileName() { 46 return item.getName(); 47 } 48 49 @Override getSize()50 public long getSize() { 51 return item.getSize(); 52 } 53 54 @Override write(String fileName)55 public void write(String fileName) throws IOException { 56 try { 57 item.write(new File(item.getStoreLocation(), fileName)); 58 } 59 catch (Exception e) { 60 throw new IOException(e); 61 } 62 } 63 64 @Override delete()65 public void delete() { 66 item.delete(); 67 } 68 69 @Override getHeader(String name)70 public String getHeader(String name) { 71 if (headers == null) { 72 return null; 73 } 74 return headers.getHeader(name); 75 } 76 77 @Override getHeaders(String name)78 public Collection<String> getHeaders(String name) { 79 if (headers == null) { 80 return Collections.emptyList(); 81 } 82 return new IteratorCollection(headers.getHeaders(name)); 83 } 84 85 @Override getHeaderNames()86 public Collection<String> getHeaderNames() { 87 if (headers == null) { 88 return Collections.emptyList(); 89 } 90 return new IteratorCollection(headers.getHeaderNames()); 91 } 92 93 private final DiskFileItem item; 94 private final FileItemHeaders headers; 95 96 private class IteratorCollection extends AbstractList<String> { 97 IteratorCollection(Iterator<String> iterator)98 public IteratorCollection(Iterator<String> iterator) { 99 this.collection = new ArrayList<String>(); 100 while (iterator.hasNext()) { 101 collection.add(iterator.next()); 102 } 103 } 104 105 @Override get(int index)106 public String get(int index) { 107 return collection.get(index); 108 } 109 110 @Override size()111 public int size() { 112 return collection.size(); 113 } 114 115 private List<String> collection; 116 117 } 118 119 } 120