blob: a0b3c2624609a6812ada381156d62b5d3e6c4f9e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016 Raymond Augé and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Raymond Augé <raymond.auge@liferay.com> - Bug 497271
*******************************************************************************/
package org.eclipse.equinox.http.servlet.internal.multipart;
import java.io.*;
import java.util.*;
import javax.servlet.http.Part;
import org.apache.commons.fileupload.FileItemHeaders;
import org.apache.commons.fileupload.disk.DiskFileItem;
public class MultipartSupportPart implements Part {
public MultipartSupportPart(DiskFileItem item) {
this.item = item;
this.headers = item.getHeaders();
}
@Override
public InputStream getInputStream() throws IOException {
return item.getInputStream();
}
@Override
public String getContentType() {
return item.getContentType();
}
@Override
public String getName() {
return item.getFieldName();
}
@Override
public String getSubmittedFileName() {
return item.getName();
}
@Override
public long getSize() {
return item.getSize();
}
@Override
public void write(String fileName) throws IOException {
try {
item.write(new File(item.getStoreLocation(), fileName));
}
catch (Exception e) {
throw new IOException(e);
}
}
@Override
public void delete() {
item.delete();
}
@Override
public String getHeader(String name) {
if (headers == null) {
return null;
}
return headers.getHeader(name);
}
@Override
public Collection<String> getHeaders(String name) {
if (headers == null) {
return Collections.emptyList();
}
return new IteratorCollection(headers.getHeaders(name));
}
@Override
public Collection<String> getHeaderNames() {
if (headers == null) {
return Collections.emptyList();
}
return new IteratorCollection(headers.getHeaderNames());
}
private final DiskFileItem item;
private final FileItemHeaders headers;
private class IteratorCollection extends AbstractList<String> {
public IteratorCollection(Iterator<String> iterator) {
this.collection = new ArrayList<String>();
while (iterator.hasNext()) {
collection.add(iterator.next());
}
}
@Override
public String get(int index) {
return collection.get(index);
}
@Override
public int size() {
return collection.size();
}
private List<String> collection;
}
}