Ejemplo n.º 1
0
 public int compare(MediaType mediaType1, MediaType mediaType2) {
   double quality1 = mediaType1.getQualityValue();
   double quality2 = mediaType2.getQualityValue();
   int qualityComparison = Double.compare(quality2, quality1);
   if (qualityComparison != 0) {
     return qualityComparison; // audio/*;q=0.7 < audio/*;q=0.3
   } else if (mediaType1.isWildcardType() && !mediaType2.isWildcardType()) { // */* < audio/*
     return 1;
   } else if (mediaType2.isWildcardType() && !mediaType1.isWildcardType()) { // audio/* > */*
     return -1;
   } else if (!mediaType1
       .getType()
       .equals(mediaType2.getType())) { // audio/basic == text/html
     return 0;
   } else { // mediaType1.getType().equals(mediaType2.getType())
     if (mediaType1.isWildcardSubtype()
         && !mediaType2.isWildcardSubtype()) { // audio/* < audio/basic
       return 1;
     } else if (mediaType2.isWildcardSubtype()
         && !mediaType1.isWildcardSubtype()) { // audio/basic > audio/*
       return -1;
     } else if (!mediaType1
         .getSubtype()
         .equals(mediaType2.getSubtype())) { // audio/basic == audio/wave
       return 0;
     } else {
       int paramsSize1 = mediaType1.parameters.size();
       int paramsSize2 = mediaType2.parameters.size();
       return (paramsSize2 < paramsSize1
           ? -1
           : (paramsSize2 == paramsSize1 ? 0 : 1)); // audio/basic;level=1 < audio/basic
     }
   }
 }
 /** Returns the more specific media type using the q-value of the first media type for both. */
 private MediaType getMostSpecificMediaType(MediaType type1, MediaType type2) {
   double quality = type1.getQualityValue();
   Map<String, String> params = Collections.singletonMap("q", String.valueOf(quality));
   MediaType t1 = new MediaType(type1, params);
   MediaType t2 = new MediaType(type2, params);
   return MediaType.SPECIFICITY_COMPARATOR.compare(t1, t2) <= 0 ? type1 : type2;
 }
Ejemplo n.º 3
0
 @Test
 public void parseURLConnectionMediaType() throws Exception {
   String s = "*; q=.2";
   MediaType mediaType = MediaType.parseMediaType(s);
   assertEquals("Invalid type", "*", mediaType.getType());
   assertEquals("Invalid subtype", "*", mediaType.getSubtype());
   assertEquals("Invalid quality factor", 0.2D, mediaType.getQualityValue(), 0D);
 }
Ejemplo n.º 4
0
 @Test
 public void getDefaultQualityValue() {
   MediaType mediaType = new MediaType("text", "plain");
   assertEquals("Invalid quality value", 1, mediaType.getQualityValue(), 0D);
 }