MediaType { public static MediaType of(String mediaType) { if (isNull(mediaType) || mediaType.isEmpty()) { return WILDCARD; } Map<String, String> params = new HashMap<>(); if (mediaType.contains(";")) { List<String> mediaTypes = split(mediaType, ";"); mediaType = mediaTypes.get(0); params = mediaTypes.stream() .skip(1) .filter(param -> param.contains("=")) .map(MediaType::paramToNameValue) .collect(toMap(NameValueEntity::getName, NameValueEntity::getValue)); } List<String> typeSplit = split(mediaType, "/"); if (typeSplit.size() != 2) { throw internalServerErrorSupplier( String.format("Invalid MediaType [%s]", mediaType)).get(); } MediaType processingType = null; if (typeSplit.get(1).contains("+")) { List<String> processingSplit = split(typeSplit.get(1), "+"); if (processingSplit.size() == 2) { processingType = BASIC_MEDIA_TYPE.get(processingSplit.get(1)); } } return new MediaType(typeSplit.get(0), typeSplit.get(1), processingType, params); } private  MediaType(String type, String subType); private  MediaType(String type, String subType, MediaType processingType); private  MediaType(String type, String subType, MediaType processingType, Map<String, String> params); static List<MediaType> list(String mediaTypes); static MediaType of(String mediaType); String get(); String getType(); String getSubType(); Optional<MediaType> getProcessingType(); Map<String, String> getParams(); Optional<String> getParam(String name); @Override int hashCode(); @Override boolean equals(Object obj); @Override String toString(); static final MediaType FORM_URLENCODED; static final MediaType JSON; static final MediaType OCTET_STREAM; static final MediaType MULTIPART_FORM_DATA; static final MediaType HTML; static final MediaType PLAIN_TEXT; static final MediaType WILDCARD; static final MediaType TEXT_XML; static final MediaType XML; static final MediaType ATOM_XML; static final MediaType XHTML_XML; static final MediaType SERIALIZATION_JAVA; static final MediaType SERIALIZATION_HESSIAN; }
@Test public void media_type_null_and_empty() { MediaType mediaType = MediaType.of(null); assertEquals(MediaType.WILDCARD, mediaType); MediaType mediaType2 = MediaType.of(""); assertEquals(MediaType.WILDCARD, mediaType2); }
@Test(expected = RestException.class) public void media_type_wrong_one_part() { MediaType.of("application"); }
@Test(expected = RestException.class) public void media_type_wrong_three_parts() { MediaType.of("application/json/xml"); }