package org.jboss.resteasy.plugins.providers.multipart;
import org.jboss.resteasy.plugins.providers.multipart.i18n.Messages;
import org.jboss.resteasy.specimpl.MultivaluedMapImpl;
import javax.ws.rs.core.MultivaluedMap;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Map;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class AbstractMultipartFormDataWriter extends AbstractMultipartWriter {
@Override
protected void writeParts(MultipartOutput multipartOutput,
OutputStream entityStream, byte[] boundaryBytes) throws IOException {
if (!(multipartOutput instanceof MultipartFormDataOutput))
throw new IllegalArgumentException(Messages.MESSAGES.hadToWriteMultipartOutput(multipartOutput, this, MultipartFormDataOutput.class));
MultipartFormDataOutput form = (MultipartFormDataOutput) multipartOutput;
for (Map.Entry<String, OutputPart> entry : form.getFormData()
.entrySet()) {
if (entry.getValue().getEntity() == null)
continue;
MultivaluedMap<String, Object> headers = new MultivaluedMapImpl<String, Object>();
headers.putSingle("Content-Disposition", "form-data; name=\""
+ entry.getKey() + "\""
+ getFilename(entry.getValue()));
writePart(entityStream, boundaryBytes, entry.getValue(), headers);
}
}
private String getFilename(OutputPart part) {
String filename = part.getFilename();
if (filename == null) {
return "";
} else {
return "; filename=\"" + filename + "\"";
}
}
}