/** * Makes sure the specified {@link MediaType} or its compatible one is registered already. */ private static void checkMediaType(Multimap<MediaType, SerializationFormat> simplifiedMediaTypeToFormats, MediaType mediaType) { final MediaType simplifiedMediaType = mediaType.withoutParameters(); for (SerializationFormat format : simplifiedMediaTypeToFormats.get(simplifiedMediaType)) { for (MediaType registeredMediaType : format.mediaTypes()) { checkState(!registeredMediaType.is(mediaType) && !mediaType.is(registeredMediaType), "media type registered already: ", mediaType); } } }
private static SerializationFormat register( BiMap<String, SerializationFormat> uriTextToFormats, Multimap<MediaType, SerializationFormat> simplifiedMediaTypeToFormats, SerializationFormatProvider.Entry entry) { checkState(!uriTextToFormats.containsKey(entry.uriText), "serialization format registered already: ", entry.uriText); final SerializationFormat value = new SerializationFormat( entry.uriText, entry.primaryMediaType, entry.mediaTypes); for (MediaType type : entry.mediaTypes) { checkMediaType(simplifiedMediaTypeToFormats, type); } uriTextToFormats.put(entry.uriText, value); for (MediaType type : entry.mediaTypes) { simplifiedMediaTypeToFormats.put(type.withoutParameters(), value); } return value; }