private static LinkedList<VariantHolder> getVariantHolderList(final List<Variant> variants) { final LinkedList<VariantHolder> l = new LinkedList<>(); for (final Variant v : variants) { final MediaType mt = v.getMediaType(); if (mt != null) { if (mt instanceof QualitySourceMediaType || mt.getParameters() .containsKey(Quality.QUALITY_SOURCE_PARAMETER_NAME)) { final int qs = QualitySourceMediaType.getQualitySource(mt); l.add(new VariantHolder(v, qs)); } else { l.add(new VariantHolder(v)); } } else { l.add(new VariantHolder(v)); } } return l; }
/** * Create new quality source media type instance from the supplied * {@link HttpHeaderReader HTTP header reader}. * * @param reader HTTP header reader. * @return new acceptable media type instance. * * @throws ParseException in case the input data parsing failed. */ public static QualitySourceMediaType valueOf(HttpHeaderReader reader) throws ParseException { // Skip any white space reader.hasNext(); // Get the type String type = reader.nextToken().toString(); reader.nextSeparator('/'); // Get the subtype String subType = reader.nextToken().toString(); int qs = Quality.DEFAULT; Map<String, String> parameters = null; if (reader.hasNext()) { parameters = HttpHeaderReader.readParameters(reader); if (parameters != null) { qs = getQs(parameters.get(Quality.QUALITY_SOURCE_PARAMETER_NAME)); } } // use private constructor to skip quality value validation step return new QualitySourceMediaType(type, subType, parameters, qs); }
/** * Extract quality source information from the supplied {@link MediaType} value. * * If no quality source parameter is present in the media type, {@link Quality#DEFAULT * default quality} is returned. * * @param mediaType media type. * @return quality source parameter value or {@link Quality#DEFAULT default quality}, * if no quality source parameter is present. * * @throws IllegalArgumentException in case the quality source parameter value could not be parsed. */ public static int getQualitySource(final MediaType mediaType) throws IllegalArgumentException { if (mediaType instanceof QualitySourceMediaType) { return ((QualitySourceMediaType) mediaType).getQuality(); } else { return getQs(mediaType); } }
@Override public QualitySourceMediaType create(HttpHeaderReader reader) throws ParseException { return QualitySourceMediaType.valueOf(reader); } };
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); } }
@Override public int compare(AcceptableMediaType o1, AcceptableMediaType o2) { // FIXME what is going on here? boolean q_o1_set = false; int q_o1 = 0; boolean q_o2_set = false; int q_o2 = 0; for (QualitySourceMediaType priorityType : priorityMediaTypes) { if (!q_o1_set && MediaTypes.typeEqual(o1, priorityType)) { q_o1 = o1.getQuality() * priorityType.getQuality(); q_o1_set = true; } else if (!q_o2_set && MediaTypes.typeEqual(o2, priorityType)) { q_o2 = o2.getQuality() * priorityType.getQuality(); q_o2_set = true; } } int i = q_o2 - q_o1; if (i != 0) { return i; } i = o2.getQuality() - o1.getQuality(); if (i != 0) { return i; } return MediaTypes.PARTIAL_ORDER_COMPARATOR.compare(o1, o2); } },
@Override public QualitySourceMediaType create(HttpHeaderReader reader) throws ParseException { return QualitySourceMediaType.valueOf(reader); } };
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); } }
@Override public int compare(AcceptableMediaType o1, AcceptableMediaType o2) { // FIXME what is going on here? boolean q_o1_set = false; int q_o1 = 0; boolean q_o2_set = false; int q_o2 = 0; for (QualitySourceMediaType priorityType : priorityMediaTypes) { if (!q_o1_set && MediaTypes.typeEqual(o1, priorityType)) { q_o1 = o1.getQuality() * priorityType.getQuality(); q_o1_set = true; } else if (!q_o2_set && MediaTypes.typeEqual(o2, priorityType)) { q_o2 = o2.getQuality() * priorityType.getQuality(); q_o2_set = true; } } int i = q_o2 - q_o1; if (i != 0) { return i; } i = o2.getQuality() - o1.getQuality(); if (i != 0) { return i; } return MediaTypes.PARTIAL_ORDER_COMPARATOR.compare(o1, o2); } },
private static LinkedList<VariantHolder> getVariantHolderList(final List<Variant> variants) { final LinkedList<VariantHolder> l = new LinkedList<>(); for (final Variant v : variants) { final MediaType mt = v.getMediaType(); if (mt != null) { if (mt instanceof QualitySourceMediaType || mt.getParameters() .containsKey(Quality.QUALITY_SOURCE_PARAMETER_NAME)) { final int qs = QualitySourceMediaType.getQualitySource(mt); l.add(new VariantHolder(v, qs)); } else { l.add(new VariantHolder(v)); } } else { l.add(new VariantHolder(v)); } } return l; }
/** * Extract quality source information from the supplied {@link MediaType} value. * * If no quality source parameter is present in the media type, {@link Quality#DEFAULT * default quality} is returned. * * @param mediaType media type. * @return quality source parameter value or {@link Quality#DEFAULT default quality}, * if no quality source parameter is present. * * @throws IllegalArgumentException in case the quality source parameter value could not be parsed. */ public static int getQualitySource(final MediaType mediaType) throws IllegalArgumentException { if (mediaType instanceof QualitySourceMediaType) { return ((QualitySourceMediaType) mediaType).getQuality(); } else { return getQs(mediaType); } }
/** * Create new quality source media type instance from the supplied * {@link HttpHeaderReader HTTP header reader}. * * @param reader HTTP header reader. * @return new acceptable media type instance. * * @throws ParseException in case the input data parsing failed. */ public static QualitySourceMediaType valueOf(HttpHeaderReader reader) throws ParseException { // Skip any white space reader.hasNext(); // Get the type String type = reader.nextToken().toString(); reader.nextSeparator('/'); // Get the subtype String subType = reader.nextToken().toString(); int qs = Quality.DEFAULT; Map<String, String> parameters = null; if (reader.hasNext()) { parameters = HttpHeaderReader.readParameters(reader); if (parameters != null) { qs = getQs(parameters.get(Quality.QUALITY_SOURCE_PARAMETER_NAME)); } } // use private constructor to skip quality value validation step return new QualitySourceMediaType(type, subType, parameters, qs); }
@Override public QualitySourceMediaType create(HttpHeaderReader reader) throws ParseException { return QualitySourceMediaType.valueOf(reader); } };
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); } }
@Override public int compare(AcceptableMediaType o1, AcceptableMediaType o2) { // FIXME what is going on here? boolean q_o1_set = false; int q_o1 = 0; boolean q_o2_set = false; int q_o2 = 0; for (QualitySourceMediaType priorityType : priorityMediaTypes) { if (!q_o1_set && MediaTypes.typeEqual(o1, priorityType)) { q_o1 = o1.getQuality() * priorityType.getQuality(); q_o1_set = true; } else if (!q_o2_set && MediaTypes.typeEqual(o2, priorityType)) { q_o2 = o2.getQuality() * priorityType.getQuality(); q_o2_set = true; } } int i = q_o2 - q_o1; if (i != 0) { return i; } i = o2.getQuality() - o1.getQuality(); if (i != 0) { return i; } return MediaTypes.PARTIAL_ORDER_COMPARATOR.compare(o1, o2); } },
/** * Create combined client/server media type. * * if the two types are not compatible, {@link #NO_MATCH} is returned. * * @param clientType client-side media type. * @param serverType server-side media type. * @return combined client/server media type. */ static CombinedMediaType create(MediaType clientType, EffectiveMediaType serverType) { if (!clientType.isCompatible(serverType.getMediaType())) { return NO_MATCH; } final MediaType strippedClientType = MediaTypes.stripQualityParams(clientType); final MediaType strippedServerType = MediaTypes.stripQualityParams(serverType.getMediaType()); return new CombinedMediaType( MediaTypes.mostSpecific(strippedClientType, strippedServerType), MediaTypes.getQuality(clientType), QualitySourceMediaType.getQualitySource(serverType.getMediaType()), matchedWildcards(clientType, serverType)); }
/** * Extract quality source information from the supplied {@link MediaType} value. * * If no quality source parameter is present in the media type, {@link Quality#DEFAULT * default quality} is returned. * * @param mediaType media type. * @return quality source parameter value or {@link Quality#DEFAULT default quality}, * if no quality source parameter is present. * * @throws IllegalArgumentException in case the quality source parameter value could not be parsed. */ public static int getQualitySource(final MediaType mediaType) throws IllegalArgumentException { if (mediaType instanceof QualitySourceMediaType) { return ((QualitySourceMediaType) mediaType).getQuality(); } else { return getQs(mediaType); } }
/** * Create new quality source media type instance from the supplied * {@link HttpHeaderReader HTTP header reader}. * * @param reader HTTP header reader. * @return new acceptable media type instance. * * @throws ParseException in case the input data parsing failed. */ public static QualitySourceMediaType valueOf(HttpHeaderReader reader) throws ParseException { // Skip any white space reader.hasNext(); // Get the type String type = reader.nextToken().toString(); reader.nextSeparator('/'); // Get the subtype String subType = reader.nextToken().toString(); int qs = Quality.DEFAULT; Map<String, String> parameters = null; if (reader.hasNext()) { parameters = HttpHeaderReader.readParameters(reader); if (parameters != null) { qs = getQs(parameters.get(Quality.QUALITY_SOURCE_PARAMETER_NAME)); } } // use private constructor to skip quality value validation step return new QualitySourceMediaType(type, subType, parameters, qs); }
@Override public QualitySourceMediaType create(HttpHeaderReader reader) throws ParseException { return QualitySourceMediaType.valueOf(reader); } };
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); } }