Class MediaTypes


  • public final class MediaTypes
    extends java.lang.Object
    Common media types and functionality.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.util.Comparator<java.util.List<? extends javax.ws.rs.core.MediaType>> MEDIA_TYPE_LIST_COMPARATOR
      Comparator for lists of media types.
      static java.util.Comparator<javax.ws.rs.core.MediaType> PARTIAL_ORDER_COMPARATOR
      A comparator for media types, that implements the "partial order" defined in the resource matching algorithm section of the JAX-RS specification, except that this comparator is "inverted" so that it allows for natural sorting in Java collections, where "lower" values are put to the front of a collection.
      private static java.util.function.Predicate<java.lang.String> QUALITY_PARAM_FILTERING_PREDICATE
      Predicate for constructing filtering parameter maps that ignore the "q" and "qs" parameters.
      static javax.ws.rs.core.MediaType WADL_TYPE
      WADL Media type.
      static AcceptableMediaType WILDCARD_ACCEPTABLE_TYPE
      An acceptable media type corresponding to a wildcard type.
      static QualitySourceMediaType WILDCARD_QS_TYPE
      An acceptable media type corresponding to a wildcard type.
      static java.util.List<javax.ws.rs.core.MediaType> WILDCARD_QS_TYPE_SINGLETON_LIST
      A singleton list containing the wildcard media type.
      private static java.util.Map<java.lang.String,​javax.ws.rs.core.MediaType> WILDCARD_SUBTYPE_CACHE
      Cache containing frequently requested media type values with a wildcard subtype.
      static java.util.List<javax.ws.rs.core.MediaType> WILDCARD_TYPE_SINGLETON_LIST
      A singleton list containing the wildcard media type.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private MediaTypes()
      Prevents initialization.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.String convertToString​(java.lang.Iterable<javax.ws.rs.core.MediaType> mediaTypes)
      Convert media types into String.
      static java.util.List<javax.ws.rs.core.MediaType> createFrom​(java.lang.String[] mediaTypes)
      Create an unmodifiable list of media type from a string array of media types.
      static java.util.List<javax.ws.rs.core.MediaType> createFrom​(javax.ws.rs.Consumes annotation)
      Create an unmodifiable list of media types from the values declared in the Consumes annotation.
      static java.util.List<javax.ws.rs.core.MediaType> createFrom​(javax.ws.rs.Produces annotation)
      Create an unmodifiable list of media types from the values declared in the Produces annotation.
      static java.util.List<QualitySourceMediaType> createQualitySourceMediaTypes​(java.lang.String[] mediaTypes)
      Create a list of quality source media type from an array of media types.
      static java.util.List<javax.ws.rs.core.MediaType> createQualitySourceMediaTypes​(javax.ws.rs.Produces mime)
      Create a list of quality source media type from the Produces annotation.
      static int getQuality​(javax.ws.rs.core.MediaType mt)
      Reads quality factor from given media type.
      static javax.ws.rs.core.MediaType getTypeWildCart​(javax.ws.rs.core.MediaType mediaType)
      Returns MediaType with wildcard in subtype.
      static boolean intersect​(java.util.List<? extends javax.ws.rs.core.MediaType> ml1, java.util.List<? extends javax.ws.rs.core.MediaType> ml2)
      Determine if the two list of media types share a common type-equal sub-list.
      static boolean isWildcard​(javax.ws.rs.core.MediaType mediaType)
      Check if the given media type is a wildcard type.
      static javax.ws.rs.core.MediaType mostSpecific​(javax.ws.rs.core.MediaType m1, javax.ws.rs.core.MediaType m2)
      Get the most specific media type from a pair of media types.
      private static int readQualityFactor​(java.lang.String qParam)  
      static javax.ws.rs.core.MediaType stripQualityParams​(javax.ws.rs.core.MediaType mediaType)
      Strips any quality parameters, i.e.
      static boolean typeEqual​(javax.ws.rs.core.MediaType m1, javax.ws.rs.core.MediaType m2)
      Determine if the two media types are type-equal (their type and subtype are equal).
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • WADL_TYPE

        public static final javax.ws.rs.core.MediaType WADL_TYPE
        WADL Media type.
      • PARTIAL_ORDER_COMPARATOR

        public static final java.util.Comparator<javax.ws.rs.core.MediaType> PARTIAL_ORDER_COMPARATOR
        A comparator for media types, that implements the "partial order" defined in the resource matching algorithm section of the JAX-RS specification, except that this comparator is "inverted" so that it allows for natural sorting in Java collections, where "lower" values are put to the front of a collection. IOW, when used to sort a collection, the resulting collection can be iterated in a way that the more specific media types are preferred over the less specific ones:
           m/n < m/* < */*
        The actual media type values are ignored, i.e. the different media types are considered equal if they are comparably specific:
           compare(m/n, x/y) == 0
           compare(m/*, x/*) == 0
      • MEDIA_TYPE_LIST_COMPARATOR

        public static final java.util.Comparator<java.util.List<? extends javax.ws.rs.core.MediaType>> MEDIA_TYPE_LIST_COMPARATOR
        Comparator for lists of media types.

        The least specific content type of each list is obtained and then compared using PARTIAL_ORDER_COMPARATOR.

        Assumes each list is already ordered according to PARTIAL_ORDER_COMPARATOR and therefore the least specific media type is at the end of the list.

      • WILDCARD_TYPE_SINGLETON_LIST

        public static final java.util.List<javax.ws.rs.core.MediaType> WILDCARD_TYPE_SINGLETON_LIST
        A singleton list containing the wildcard media type.
      • WILDCARD_ACCEPTABLE_TYPE

        public static final AcceptableMediaType WILDCARD_ACCEPTABLE_TYPE
        An acceptable media type corresponding to a wildcard type.
      • WILDCARD_QS_TYPE

        public static final QualitySourceMediaType WILDCARD_QS_TYPE
        An acceptable media type corresponding to a wildcard type.
      • WILDCARD_QS_TYPE_SINGLETON_LIST

        public static final java.util.List<javax.ws.rs.core.MediaType> WILDCARD_QS_TYPE_SINGLETON_LIST
        A singleton list containing the wildcard media type.
      • WILDCARD_SUBTYPE_CACHE

        private static final java.util.Map<java.lang.String,​javax.ws.rs.core.MediaType> WILDCARD_SUBTYPE_CACHE
        Cache containing frequently requested media type values with a wildcard subtype.
      • QUALITY_PARAM_FILTERING_PREDICATE

        private static final java.util.function.Predicate<java.lang.String> QUALITY_PARAM_FILTERING_PREDICATE
        Predicate for constructing filtering parameter maps that ignore the "q" and "qs" parameters.
    • Constructor Detail

      • MediaTypes

        private MediaTypes()
        Prevents initialization.
    • Method Detail

      • typeEqual

        public static boolean typeEqual​(javax.ws.rs.core.MediaType m1,
                                        javax.ws.rs.core.MediaType m2)
        Determine if the two media types are type-equal (their type and subtype are equal). For example:
          m/n == m/n
          m/n;p1 == m/n;p2
        
          m/n != m/y
          m/n != x/n
          m/n != x/y
        Parameters:
        m1 - first media type.
        m2 - second media type.
        Returns:
        true if the two media types are of the same type and subtype, false otherwise.
      • intersect

        public static boolean intersect​(java.util.List<? extends javax.ws.rs.core.MediaType> ml1,
                                        java.util.List<? extends javax.ws.rs.core.MediaType> ml2)
        Determine if the two list of media types share a common type-equal sub-list.
        Parameters:
        ml1 - first media type list.
        ml2 - second media type list.
        Returns:
        true if the two media type lists intersect by sharing a common type-equal sub-list, false otherwise.
      • mostSpecific

        public static javax.ws.rs.core.MediaType mostSpecific​(javax.ws.rs.core.MediaType m1,
                                                              javax.ws.rs.core.MediaType m2)
        Get the most specific media type from a pair of media types. The most specific media type is the media type from the pair that has least wild cards present, or has more parameters specified.
        Parameters:
        m1 - the first media type.
        m2 - the second media type.
        Returns:
        the most specific media type. If the media types are equally specific then the first media type is returned.
      • createFrom

        public static java.util.List<javax.ws.rs.core.MediaType> createFrom​(javax.ws.rs.Consumes annotation)
        Create an unmodifiable list of media types from the values declared in the Consumes annotation.
        Parameters:
        annotation - the Consumes annotation.
        Returns:
        the list of MediaType, ordered according to PARTIAL_ORDER_COMPARATOR.
      • createFrom

        public static java.util.List<javax.ws.rs.core.MediaType> createFrom​(javax.ws.rs.Produces annotation)
        Create an unmodifiable list of media types from the values declared in the Produces annotation.
        Parameters:
        annotation - the Produces annotation.
        Returns:
        the list of MediaType, ordered according to PARTIAL_ORDER_COMPARATOR.
      • createFrom

        public static java.util.List<javax.ws.rs.core.MediaType> createFrom​(java.lang.String[] mediaTypes)
        Create an unmodifiable list of media type from a string array of media types.
        Parameters:
        mediaTypes - the string array of media types.
        Returns:
        the list of MediaType, ordered according to PARTIAL_ORDER_COMPARATOR.
      • createQualitySourceMediaTypes

        public static java.util.List<javax.ws.rs.core.MediaType> createQualitySourceMediaTypes​(javax.ws.rs.Produces mime)
        Create a list of quality source media type from the Produces annotation.

        Parameters:
        mime - the Produces annotation.
        Returns:
        the list of QualitySourceMediaType, ordered according to QualitySourceMediaType.COMPARATOR.
      • createQualitySourceMediaTypes

        public static java.util.List<QualitySourceMediaType> createQualitySourceMediaTypes​(java.lang.String[] mediaTypes)
        Create a list of quality source media type from an array of media types.

        Parameters:
        mediaTypes - the array of media types.
        Returns:
        the list of QualitySourceMediaType, ordered according to the quality source as the primary key and PARTIAL_ORDER_COMPARATOR as the secondary key.
      • getQuality

        public static int getQuality​(javax.ws.rs.core.MediaType mt)
        Reads quality factor from given media type.
        Parameters:
        mt - media type to read quality parameter from
        Returns:
        quality factor of input media type
      • readQualityFactor

        private static int readQualityFactor​(java.lang.String qParam)
                                      throws java.lang.IllegalArgumentException
        Throws:
        java.lang.IllegalArgumentException
      • stripQualityParams

        public static javax.ws.rs.core.MediaType stripQualityParams​(javax.ws.rs.core.MediaType mediaType)
        Strips any quality parameters, i.e. q and qs from given media type.
        Parameters:
        mediaType - type to strip quality parameters from
        Returns:
        media type instance corresponding to the given one with quality parameters stripped off or the original instance if no such parameters are present
      • getTypeWildCart

        public static javax.ws.rs.core.MediaType getTypeWildCart​(javax.ws.rs.core.MediaType mediaType)
        Returns MediaType with wildcard in subtype.
        Parameters:
        mediaType - original MediaType.
        Returns:
        MediaType with wildcard in subtype.
      • convertToString

        public static java.lang.String convertToString​(java.lang.Iterable<javax.ws.rs.core.MediaType> mediaTypes)
        Convert media types into String. The result string contains media types in the same order, separated by comma ',' and enclosed into quotes. For example for input media types MediaType.TEXT_PLAIN_TYPE, MediaType.TEXT_PLAIN_TYPE and MediaType.APPLICATION_JSON_TYPE the result will be "text/plain", "application/json", "text/html".
        Parameters:
        mediaTypes - iterable with media types.
        Returns:
        Media types converted into String.
      • isWildcard

        public static boolean isWildcard​(javax.ws.rs.core.MediaType mediaType)
        Check if the given media type is a wildcard type. A media type is considered to be a wildcard if either the media type's type or subtype is a wildcard type.
        Parameters:
        mediaType - media type.
        Returns:
        true if the media type is a wildcard type, false otherwise.