Refine search
/** * Get the character set from a media type. * <p> * The character set is obtained from the media type parameter "charset". * If the parameter is not present the {@link #UTF8} charset is utilized. * * @param m the media type. * @return the character set. */ public static Charset getCharset(MediaType m) { String name = (m == null) ? null : m.getParameters().get(MediaType.CHARSET_PARAMETER); return (name == null) ? UTF8 : Charset.forName(name); }
private static MediaType unquoteMediaTypeParameters(final MediaType mediaType, final String... parameters) { if (parameters == null || parameters.length == 0) { return mediaType; } final Map<String, String> unquotedParams = new HashMap<>(mediaType.getParameters()); for (final String parameter : parameters) { String value = mediaType.getParameters().get(parameter); if (value != null && value.startsWith("\"")) { value = value.substring(1, value.length() - 1); unquotedParams.put(parameter, value); } } return new MediaType(mediaType.getType(), mediaType.getSubtype(), unquotedParams); } }
@Override public String toString(MediaType header) { throwIllegalArgumentExceptionIfNull(header, MEDIA_TYPE_IS_NULL); StringBuilder b = new StringBuilder(); b.append(header.getType()).append('/').append(header.getSubtype()); for (Map.Entry<String, String> e : header.getParameters().entrySet()) { b.append(";").append(e.getKey()).append('='); StringBuilderUtils.appendQuotedIfNonToken(b, e.getValue()); } return b.toString(); }
if (mediaType.isWildcardSubtype() && !mediaType2.isWildcardSubtype()) return -1; if (!mediaType.isWildcardSubtype() && mediaType2.isWildcardSubtype()) return 1; if (isComposite(mediaType.getSubtype()) && !isComposite(mediaType2.getSubtype())) return -1; if (!isComposite(mediaType.getSubtype()) && isComposite(mediaType2.getSubtype())) return 1; if (isCompositeWildcardSubtype(mediaType.getSubtype()) && !isCompositeWildcardSubtype(mediaType2.getSubtype())) if (mediaType.getParameters() != null) numNonQ = mediaType.getParameters().size(); if (wasQ) numNonQ--; if (mediaType2.getParameters() != null) numNonQ2 = mediaType2.getParameters().size(); if (wasQ2) numNonQ2--;
/** * Get the character set from a media type. * <p> * The character set is obtained from the media type parameter "charset". * If the parameter is not present the {@link #UTF8} charset is utilized. * * @param m the media type. * @return the character set. */ public static Charset getCharset(MediaType m) { String name = (m == null) ? null : m.getParameters().get(MediaType.CHARSET_PARAMETER); return (name == null) ? UTF8 : Charset.forName(name); }
/** * Set the {@link HttpHeaders#CONTENT_TYPE} header to the {@code httpHeaders} based on {@code mediaType} and * {@link #getEncoding() default encoding} defined in this processor. If {@code mediaType} defines encoding * then this encoding will be used otherwise the default processor encoding is used. The chosen encoding * is returned from the method. * * @param mediaType Media type of the entity. * @param httpHeaders Http headers. * @return Selected encoding. */ protected Charset setContentType(final MediaType mediaType, final MultivaluedMap<String, Object> httpHeaders) { final Charset encoding; final String charset = mediaType.getParameters().get(MediaType.CHARSET_PARAMETER); final MediaType finalMediaType; if (charset == null) { encoding = getEncoding(); final HashMap<String, String> params = new HashMap<>(mediaType.getParameters()); params.put(MediaType.CHARSET_PARAMETER, encoding.name()); finalMediaType = new MediaType(mediaType.getType(), mediaType.getSubtype(), params); } else { encoding = Charset.forName(charset); finalMediaType = mediaType; } final ArrayList<Object> typeList = new ArrayList<>(1); typeList.add(finalMediaType.toString()); httpHeaders.put(HttpHeaders.CONTENT_TYPE, typeList); return encoding; }
@Override public String toString(MediaType header) { throwIllegalArgumentExceptionIfNull(header, MEDIA_TYPE_IS_NULL); StringBuilder b = new StringBuilder(); b.append(header.getType()).append('/').append(header.getSubtype()); for (Map.Entry<String, String> e : header.getParameters().entrySet()) { b.append(";").append(e.getKey()).append('='); StringBuilderUtils.appendQuotedIfNonToken(b, e.getValue()); } return b.toString(); }
/** * As content is cached, we expect both ends use UTF-8 always. If no content charset encoding is explicitly * defined, UTF-8 is assumed as a default. * As legacy clients may use ISO 8859-1 we accept it as well, although result may be unspecified if * characters out of ASCII 0-127 range are used. */ private static boolean isSupportedCharset(MediaType mediaType) { Map<String, String> parameters = mediaType.getParameters(); if (parameters == null || parameters.isEmpty()) { return true; } String charset = parameters.get("charset"); return charset == null || "UTF-8".equalsIgnoreCase(charset) || "ISO-8859-1".equalsIgnoreCase(charset); }
/** * Create new acceptable media type instance from the supplied * {@link javax.ws.rs.core.MediaType media type}. * * @param mediaType general-purpose media type. * @return new acceptable media type instance. * * @throws ParseException in case the quality parameter parsing failed. */ public static AcceptableMediaType valueOf(MediaType mediaType) throws ParseException { if (mediaType instanceof AcceptableMediaType) { return (AcceptableMediaType) mediaType; } final Map<String, String> parameters = mediaType.getParameters(); int quality = Quality.DEFAULT; if (parameters != null) { final String v = parameters.get(Quality.QUALITY_PARAMETER_NAME); if (v != null) { quality = HttpHeaderReader.readQualityFactor(v); } } // use private constructor to skip quality value validation step return new AcceptableMediaType(mediaType.getType(), mediaType.getSubtype(), parameters, quality); }
public static MediaType mediaTypeWithCharsetUtf8( MediaType mediaType ) { Map<String,String> parameters = mediaType.getParameters(); if ( parameters.isEmpty() ) { return new MediaType( mediaType.getType(), mediaType.getSubtype(), CHARSET ); } if ( parameters.containsKey( "charset" ) ) { return mediaType; } Map<String,String> paramsWithCharset = new HashMap<>( parameters ); paramsWithCharset.putAll( CHARSET ); return new MediaType( mediaType.getType(), mediaType.getSubtype(), paramsWithCharset ); }
private static int getQs(MediaType mt) throws IllegalArgumentException { try { return getQs(mt.getParameters().get(Quality.QUALITY_SOURCE_PARAMETER_NAME)); } catch (ParseException ex) { throw new IllegalArgumentException(ex); } }
/** * Create new acceptable media type instance from the supplied * {@link javax.ws.rs.core.MediaType media type}. * * @param mediaType general-purpose media type. * @return new acceptable media type instance. * * @throws ParseException in case the quality parameter parsing failed. */ public static AcceptableMediaType valueOf(MediaType mediaType) throws ParseException { if (mediaType instanceof AcceptableMediaType) { return (AcceptableMediaType) mediaType; } final Map<String, String> parameters = mediaType.getParameters(); int quality = Quality.DEFAULT; if (parameters != null) { final String v = parameters.get(Quality.QUALITY_PARAMETER_NAME); if (v != null) { quality = HttpHeaderReader.readQualityFactor(v); } } // use private constructor to skip quality value validation step return new AcceptableMediaType(mediaType.getType(), mediaType.getSubtype(), parameters, quality); }
/** * Strips any quality parameters, i.e. q and qs from given media type. * * @param mediaType type to strip quality parameters from * @return media type instance corresponding to the given one with quality parameters stripped off * or the original instance if no such parameters are present */ public static MediaType stripQualityParams(MediaType mediaType) { final Map<String, String> oldParameters = mediaType.getParameters(); if (oldParameters.isEmpty() || (!oldParameters.containsKey(Quality.QUALITY_SOURCE_PARAMETER_NAME) && !oldParameters.containsKey(Quality.QUALITY_PARAMETER_NAME))) { return mediaType; } return new MediaType(mediaType.getType(), mediaType.getSubtype(), oldParameters.entrySet() .stream() .filter(entry -> QUALITY_PARAM_FILTERING_PREDICATE.test(entry.getKey())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))); }
/** * Reads quality factor from given media type. * * @param mt media type to read quality parameter from * @return quality factor of input media type */ public static int getQuality(MediaType mt) { final String qParam = mt.getParameters().get(Quality.QUALITY_PARAMETER_NAME); return readQualityFactor(qParam); }
final MediaType lookupType = mediaType == null || mediaType.getParameters().isEmpty() ? mediaType : new MediaType(mediaType.getType(), mediaType.getSubtype()); List<ReaderModel> readers = mbrLookupCache.get(lookupKey); if (readers == null) { readers = new ArrayList<>();
/** * Strips any quality parameters, i.e. q and qs from given media type. * * @param mediaType type to strip quality parameters from * @return media type instance corresponding to the given one with quality parameters stripped off * or the original instance if no such parameters are present */ public static MediaType stripQualityParams(MediaType mediaType) { final Map<String, String> oldParameters = mediaType.getParameters(); if (oldParameters.isEmpty() || (!oldParameters.containsKey(Quality.QUALITY_SOURCE_PARAMETER_NAME) && !oldParameters.containsKey(Quality.QUALITY_PARAMETER_NAME))) { return mediaType; } return new MediaType(mediaType.getType(), mediaType.getSubtype(), oldParameters.entrySet() .stream() .filter(entry -> QUALITY_PARAM_FILTERING_PREDICATE.test(entry.getKey())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))); }
@Override public String getDimension(final VariantHolder v) { final MediaType m = v.v.getMediaType(); return (m != null) ? m.getParameters().get("charset") : null; }
final MediaType lookupType = mediaType == null || mediaType.getParameters().isEmpty() ? mediaType : new MediaType(mediaType.getType(), mediaType.getSubtype()); List<WriterModel> writers = mbwLookupCache.get(lookupKey); if (writers == null) {
/** * Transforms a media type and add a boundary parameter with a unique value * if one is not already present. * * @param mediaType if {@code null} then a media type of "multipart/mixed" with a boundary parameter will be returned. * @return the media type with a boundary parameter. */ public static MediaType addBoundary(MediaType mediaType) { if (mediaType == null) { return MultiPartMediaTypes.createMixed(); } if (!mediaType.getParameters().containsKey(BOUNDARY_PARAMETER)) { final Map<String, String> parameters = new HashMap<String, String>( mediaType.getParameters()); parameters.put(BOUNDARY_PARAMETER, createBoundary()); return new MediaType(mediaType.getType(), mediaType.getSubtype(), parameters); } return mediaType; }
/** * Reads quality factor from given media type. * * @param mt media type to read quality parameter from * @return quality factor of input media type */ public static int getQuality(MediaType mt) { final String qParam = mt.getParameters().get(Quality.QUALITY_PARAMETER_NAME); return readQualityFactor(qParam); }