package ameba.message.error;
import ameba.core.Requests;
import org.glassfish.jersey.server.ContainerRequest;
import javax.ws.rs.core.MediaType;
import java.util.List;
/**
* <p>ExceptionMapperUtils class.</p>
*
* @author icode
*
*/
public class ExceptionMapperUtils {
private static final MediaType LOW_IE_DEFAULT_REQ_TYPE = new MediaType("application", "x-ms-application");
private ExceptionMapperUtils() {
}
/**
* <p>getResponseType.</p>
*
* @return a {@link javax.ws.rs.core.MediaType} object.
*/
public static MediaType getResponseType() {
return getResponseType(Requests.getRequest(), null);
}
/**
* <p>getResponseType.</p>
*
* @param status a {@link java.lang.Integer} object.
* @return a {@link javax.ws.rs.core.MediaType} object.
*/
public static MediaType getResponseType(Integer status) {
return getResponseType(Requests.getRequest(), status);
}
/**
* <p>getResponseType.</p>
*
* @param request a {@link org.glassfish.jersey.server.ContainerRequest} object.
* @return a {@link javax.ws.rs.core.MediaType} object.
*/
public static MediaType getResponseType(ContainerRequest request) {
return getResponseType(request, null);
}
/**
* <p>getResponseType.</p>
*
* @param request a {@link org.glassfish.jersey.server.ContainerRequest} object.
* @param status a {@link java.lang.Integer} object.
* @return a {@link javax.ws.rs.core.MediaType} object.
*/
public static MediaType getResponseType(ContainerRequest request, Integer status) {
if (status != null && status == 406) {
return MediaType.TEXT_HTML_TYPE;
}
List<MediaType> accepts = request.getAcceptableMediaTypes();
MediaType m;
if (accepts != null && accepts.size() > 0) {
m = accepts.get(0);
} else {
m = Requests.getMediaType();
}
if (m.isWildcardType() || m.equals(LOW_IE_DEFAULT_REQ_TYPE)) {
m = MediaType.TEXT_HTML_TYPE;
}
return m;
}
}