Class MediaType

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Comparable<MediaType>

    public class MediaType
    extends java.lang.Object
    implements java.lang.Comparable<MediaType>, java.io.Serializable

    This class is a clone of org.springframework.http.MediaType

    Represents an Internet Media Type, as defined in the HTTP specification.

    This class contain support for the q-parameters used in HTTP content negotiation.

    Author:
    Arjen Poutsma, Juergen Hoeller, Rossen Stoyanchev, Sebastien Deleuze, Kazuki Shimizu
    See Also:
    HTTP 1.1: Semantics and Content, section 3.1.1.1, Serialized Form
    • Field Detail

      • ALL

        public static final MediaType ALL
        Public constant media type that includes all media ranges (i.e. "*/*").
      • APPLICATION_ATOM_XML

        public static final MediaType APPLICATION_ATOM_XML
        Public constant media type for application/atom+xml.
      • APPLICATION_CBOR

        public static final MediaType APPLICATION_CBOR
        Public constant media type for application/cbor.
      • APPLICATION_FORM_URLENCODED

        public static final MediaType APPLICATION_FORM_URLENCODED
        Public constant media type for application/x-www-form-urlencoded.
      • APPLICATION_GRAPHQL

        public static final MediaType APPLICATION_GRAPHQL
        Public constant media type for application/graphql.
      • APPLICATION_JSON

        public static final MediaType APPLICATION_JSON
        Public constant media type for application/json.
      • APPLICATION_APON

        public static final MediaType APPLICATION_APON
        Public constant media type for application/apon.
      • APPLICATION_OCTET_STREAM

        public static final MediaType APPLICATION_OCTET_STREAM
        Public constant media type for application/octet-stream.
      • APPLICATION_PDF

        public static final MediaType APPLICATION_PDF
        Public constant media type for application/pdf.
      • APPLICATION_RSS_XML

        public static final MediaType APPLICATION_RSS_XML
        Public constant media type for application/rss+xml.
      • APPLICATION_STREAM_JSON

        public static final MediaType APPLICATION_STREAM_JSON
        Public constant media type for application/stream+json.
      • APPLICATION_XHTML_XML

        public static final MediaType APPLICATION_XHTML_XML
        Public constant media type for application/xhtml+xml.
      • APPLICATION_XML

        public static final MediaType APPLICATION_XML
        Public constant media type for application/xml.
      • IMAGE_GIF

        public static final MediaType IMAGE_GIF
        Public constant media type for image/gif.
      • IMAGE_JPEG

        public static final MediaType IMAGE_JPEG
        Public constant media type for image/jpeg.
      • IMAGE_PNG

        public static final MediaType IMAGE_PNG
        Public constant media type for image/png.
      • MULTIPART_FORM_DATA

        public static final MediaType MULTIPART_FORM_DATA
        Public constant media type for multipart/form-data.
      • TEXT_HTML

        public static final MediaType TEXT_HTML
        Public constant media type for text/html.
      • TEXT_MARKDOWN

        public static final MediaType TEXT_MARKDOWN
        Public constant media type for text/markdown.
      • TEXT_PLAIN

        public static final MediaType TEXT_PLAIN
        Public constant media type for text/plain.
      • TEXT_XML

        public static final MediaType TEXT_XML
        Public constant media type for text/xml.
    • Constructor Detail

      • MediaType

        public MediaType​(java.lang.String type)
        Create a new MediaType for the given primary type.

        The subtype is set to "*", parameters empty.

        Parameters:
        type - the primary type
        Throws:
        java.lang.IllegalArgumentException - if any of the parameters contain illegal characters
      • MediaType

        public MediaType​(java.lang.String type,
                         java.lang.String subtype)
        Create a new MediaType for the given primary type and subtype.

        The parameters are empty.

        Parameters:
        type - the primary type
        subtype - the subtype
        Throws:
        java.lang.IllegalArgumentException - if any of the parameters contain illegal characters
      • MediaType

        public MediaType​(java.lang.String type,
                         java.lang.String subtype,
                         java.nio.charset.Charset charset)
        Create a new MediaType for the given type, subtype, and character set.
        Parameters:
        type - the primary type
        subtype - the subtype
        charset - the character set
        Throws:
        java.lang.IllegalArgumentException - if any of the parameters contain illegal characters
      • MediaType

        public MediaType​(java.lang.String type,
                         java.lang.String subtype,
                         double qualityValue)
        Create a new MediaType for the given type, subtype, and quality value.
        Parameters:
        type - the primary type
        subtype - the subtype
        qualityValue - the quality value
        Throws:
        java.lang.IllegalArgumentException - if any of the parameters contain illegal characters
      • MediaType

        public MediaType​(MediaType other,
                         java.nio.charset.Charset charset)
        Copy-constructor that copies the type, subtype and parameters of the given MediaType, and allows to set the specified character set.
        Parameters:
        other - the other media type
        charset - the character set
        Throws:
        java.lang.IllegalArgumentException - if any of the parameters contain illegal characters
      • MediaType

        public MediaType​(MediaType other,
                         @Nullable
                         java.util.Map<java.lang.String,​java.lang.String> parameters)
        Copy-constructor that copies the type and subtype of the given MediaType, and allows for different parameter.
        Parameters:
        other - the other media type
        parameters - the parameters, may be null
        Throws:
        java.lang.IllegalArgumentException - if any of the parameters contain illegal characters
      • MediaType

        public MediaType​(java.lang.String type,
                         java.lang.String subtype,
                         @Nullable
                         java.util.Map<java.lang.String,​java.lang.String> parameters)
        Create a new MediaType for the given type, subtype, and parameters.
        Parameters:
        type - the primary type
        subtype - the subtype
        parameters - the parameters, may be null
        Throws:
        java.lang.IllegalArgumentException - if any of the parameters contain illegal characters
    • Method Detail

      • isWildcardType

        public boolean isWildcardType()
        Indicates whether the type is the wildcard character * or not.
        Returns:
        true if it is a wildcard character; Otherwise false
      • isWildcardSubtype

        public boolean isWildcardSubtype()
        Indicates whether the subtype is the wildcard character * or the wildcard character followed by a suffix (e.g. *+xml).
        Returns:
        whether the subtype is a wildcard
      • isConcrete

        public boolean isConcrete()
        Indicates whether this MIME Type is concrete, i.e. whether neither the type nor the subtype is a wildcard character *.
        Returns:
        whether this MIME Type is concrete
      • getType

        public java.lang.String getType()
        Return the primary type.
        Returns:
        the primary type
      • getSubtype

        public java.lang.String getSubtype()
        Return the subtype.
        Returns:
        the subtype
      • getCharset

        @Nullable
        public java.nio.charset.Charset getCharset()
        Return the character set, as indicated by a charset parameter, if any.
        Returns:
        the character set, or null if not available
      • getParameter

        @Nullable
        public java.lang.String getParameter​(java.lang.String name)
        Return a generic parameter value, given a parameter name.
        Parameters:
        name - the parameter name
        Returns:
        the parameter value, or null if not present
      • getParameters

        public java.util.Map<java.lang.String,​java.lang.String> getParameters()
        Return all generic parameter values.
        Returns:
        a read-only map (possibly empty, never null)
      • includes

        public boolean includes​(@Nullable
                                MediaType other)
        Indicate whether this MediaType includes the given media type.

        For instance, text/* includes text/plain and text/html, and application/*+xml includes application/soap+xml, etc. This method is not symmetric.

        Simply calls includes(MediaType) but declared with a MediaType parameter for binary backwards compatibility.

        Parameters:
        other - the reference media type with which to compare
        Returns:
        true if this media type includes the given media type; false otherwise
      • isCompatibleWith

        public boolean isCompatibleWith​(@Nullable
                                        MediaType other)
        Indicate whether this MediaType is compatible with the given media type.

        For instance, text/* is compatible with text/plain, text/html, and vice versa. In effect, this method is similar to includes(com.aspectran.web.support.http.MediaType), except that it is symmetric.

        Simply calls isCompatibleWith(MediaType) but declared with a MediaType parameter for binary backwards compatibility.

        Parameters:
        other - the reference media type with which to compare
        Returns:
        true if this media type is compatible with the given media type; false otherwise
      • equalsTypeAndSubtype

        public boolean equalsTypeAndSubtype​(@Nullable
                                            MediaType other)
        Similar to equals(Object) but based on the type and subtype only, i.e. ignoring parameters.
        Parameters:
        other - the other mime type to compare to
        Returns:
        whether the two mime types have the same type and subtype
      • isPresentIn

        public boolean isPresentIn​(java.util.Collection<MediaType> MediaTypes)
        Unlike Collection.contains(Object) which relies on equals(Object), this method only checks the type and the subtype, but otherwise ignores parameters.
        Parameters:
        MediaTypes - the list of mime types to perform the check against
        Returns:
        whether the list contains the given mime type
      • equals

        public boolean equals​(@Nullable
                              java.lang.Object other)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • appendTo

        protected void appendTo​(java.lang.StringBuilder builder)
      • getQualityValue

        public double getQualityValue()
        Return the quality factor, as indicated by a q parameter, if any. Defaults to 1.0.
        Returns:
        the quality factor as double value
      • copyQualityValue

        public MediaType copyQualityValue​(MediaType mediaType)
        Return a replica of this instance with the quality value of the given MediaType.
        Parameters:
        mediaType - the media type
        Returns:
        the same instance if the given MediaType doesn't have a quality value, or a new one otherwise
      • removeQualityValue

        public MediaType removeQualityValue()
        Return a replica of this instance with its quality value removed.
        Returns:
        the same instance if the media type doesn't contain a quality value, or a new one otherwise
      • parseMediaType

        public static MediaType parseMediaType​(java.lang.String mediaType)
        Parse the given String into a single MediaType.
        Parameters:
        mediaType - the string to parse
        Returns:
        the media type
        Throws:
        InvalidMediaTypeException - if the media type value cannot be parsed
      • parseMediaTypes

        public static java.util.List<MediaType> parseMediaTypes​(@Nullable
                                                                java.lang.String mediaTypes)
        Parse the comma-separated string into a list of MediaType objects.

        This method can be used to parse an Accept or Content-Type header.

        Parameters:
        mediaTypes - the string to parse
        Returns:
        the list of media types
        Throws:
        InvalidMediaTypeException - if the media type value cannot be parsed
      • parseMediaTypes

        public static java.util.List<MediaType> parseMediaTypes​(@Nullable
                                                                java.util.List<java.lang.String> mediaTypes)
        Parse the given list of (potentially) comma-separated strings into a list of MediaType objects.

        This method can be used to parse an Accept or Content-Type header.

        Parameters:
        mediaTypes - the string to parse
        Returns:
        the list of media types
        Throws:
        InvalidMediaTypeException - if the media type value cannot be parsed
      • toString

        public static java.lang.String toString​(java.util.Collection<MediaType> mediaTypes)
        Return a string representation of the given list of MediaType objects.

        This method can be used to for an Accept or Content-Type header.

        Parameters:
        mediaTypes - the media types to create a string representation for
        Returns:
        the string representation
      • sortBySpecificity

        public static void sortBySpecificity​(java.util.List<MediaType> mediaTypes)
        Sorts the given list of MediaType objects by specificity.

        Given two media types:

        1. if either media type has a wildcard type, then the media type without the wildcard is ordered before the other.
        2. if the two media types have different types, then they are considered equal and remain their current order.
        3. if either media type has a wildcard subtype, then the media type without the wildcard is sorted before the other.
        4. if the two media types have different subtypes, then they are considered equal and remain their current order.
        5. if the two media types have different quality value, then the media type with the highest quality value is ordered before the other.
        6. if the two media types have a different amount of parameters, then the media type with the most parameters is ordered before the other.

        For example:

        audio/basic < audio/* < */*
        audio/* < audio/*;q=0.7; audio/*;q=0.3
        audio/basic;level=1 < audio/basic
        audio/basic == text/html
        audio/basic == audio/wave
        Parameters:
        mediaTypes - the list of media types to be sorted
        See Also:
        HTTP 1.1: Semantics and Content, section 5.3.2
      • sortByQualityValue

        public static void sortByQualityValue​(java.util.List<MediaType> mediaTypes)
        Sorts the given list of MediaType objects by quality value.

        Given two media types:

        1. if the two media types have different quality value, then the media type with the highest quality value is ordered before the other.
        2. if either media type has a wildcard type, then the media type without the wildcard is ordered before the other.
        3. if the two media types have different types, then they are considered equal and remain their current order.
        4. if either media type has a wildcard subtype, then the media type without the wildcard is sorted before the other.
        5. if the two media types have different subtypes, then they are considered equal and remain their current order.
        6. if the two media types have a different amount of parameters, then the media type with the most parameters is ordered before the other.
        Parameters:
        mediaTypes - the list of media types to be sorted
        See Also:
        getQualityValue()
      • sortBySpecificityAndQuality

        public static void sortBySpecificityAndQuality​(java.util.List<MediaType> mediaTypes)
        Sorts the given list of MediaType objects by specificity as the primary criteria and quality value the secondary.
        Parameters:
        mediaTypes - the list of media types to sort
        See Also:
        sortBySpecificity(List), sortByQualityValue(List)
      • valueOf

        public static MediaType valueOf​(java.lang.String value)
        Parse the given String value into a MediaType object, with this method name following the 'valueOf' naming convention.
        Parameters:
        value - the string to parse
        Returns:
        the media type
        Throws:
        InvalidMediaTypeException - if the media type value cannot be parsed
        See Also:
        parseMediaType(String)