private static MediaType create( String type, String subtype, Map<String, String> parameters) { Objects.requireNonNull(type, "Parameter 'type' is null!"); Objects.requireNonNull(subtype, "Parameter 'subtype' is null!"); Objects.requireNonNull(parameters, "Parameter 'parameters' is null!"); String normalizedType = normalizeToken(type); String normalizedSubtype = normalizeToken(subtype); checkState( !WILDCARD.type.equals(normalizedType) || WILDCARD.type.equals(normalizedSubtype), "A wildcard type cannot be used with a non-wildcard subtype"); Map<String, String> builder = new HashMap<>(); for (Map.Entry<String, String> entry : parameters.entrySet()) { String attribute = normalizeToken(entry.getKey()); builder.put(attribute, normalizeParameterValue(attribute, entry.getValue())); } MediaType mediaType = MediaType.builder() .type(normalizedType) .subtype(normalizedSubtype) .parameters(builder) .build(); // Return one of the constants if the media type is a known type. //TODO or else get? return Optional.ofNullable(KNOWN_TYPES.get(mediaType)).orElse(mediaType); }