package org.jboss.resteasy.plugins.providers.multipart;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import java.io.IOException;
import java.lang.reflect.Type;
/**
* Represents one part of a multipart message.
*
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public interface InputPart {
/**
* If no content-type header is sent in a multipart message part
* "text/plain; charset=ISO-8859-1" is assumed.
* <p>
* This can be overwritten by setting a different String value in
* {@link org.jboss.resteasy.spi.HttpRequest#setAttribute(String, Object)}
* with this ("resteasy.provider.multipart.inputpart.defaultContentType")
* String as key. It should be done in a
* {@link org.jboss.resteasy.spi.interception.PreProcessInterceptor}.
* </p>
*/
static final String DEFAULT_CONTENT_TYPE_PROPERTY = "resteasy.provider.multipart.inputpart.defaultContentType";
/**
* If there is a content-type header without a charset parameter, charset=US-ASCII
* is assumed.
* <p>
* This can be overwritten by setting a different String value in
* {@link org.jboss.resteasy.spi.HttpRequest#setAttribute(String, Object)}
* with this ("resteasy.provider.multipart.inputpart.defaultCharset")
* String as key. It should be done in a
* {@link org.jboss.resteasy.spi.interception.PreProcessInterceptor}.
* </p>
*/
static final String DEFAULT_CHARSET_PROPERTY = "resteasy.provider.multipart.inputpart.defaultCharset";
/**
* @return headers of this part
*/
MultivaluedMap<String, String> getHeaders();
String getBodyAsString() throws IOException;
<T> T getBody(Class<T> type, Type genericType) throws IOException;
<T> T getBody(GenericType<T> type) throws IOException;
/**
* @return "Content-Type" of this part
*/
MediaType getMediaType();
/**
* @return true if the Content-Type was resolved from the message, false if
* it was resolved from the server default
*/
boolean isContentTypeFromMessage();
/**
* Change the media type of the body part before you extract it. Useful for specifying a charset.
*
* @param mediaType
*/
void setMediaType(MediaType mediaType);
}