Class MediaType



  • @Beta
     @GwtCompatible
    public final class MediaType
    extends Object
    Represents an Internet Media Type (also known as a MIME Type or Content Type). This class also supports the concept of media ranges defined by HTTP/1.1. As such, the * character is treated as a wildcard and is used to represent any acceptable type or subtype value. A media type may not have wildcard type with a declared subtype. The * character has no special meaning as part of a parameter. All values for type, subtype, parameter attributes or parameter values must be valid according to RFCs 2045 and 2046.

    All portions of the media type that are case-insensitive (type, subtype, parameter attributes) are normalized to lowercase. The value of the charset parameter is normalized to lowercase, but all others are left as-is.

    Note that this specifically does not represent the value of the MIME Content-Type header and as such has no support for header-specific considerations such as line folding and comments.

    For media types that take a charset the predefined constants default to UTF-8 and have a "_UTF_8" suffix. To get a version without a character set, use withoutParameters().

    Since:
    12.0
    • Field Detail

      • ANY_TYPE

        public static final MediaType ANY_TYPE
      • ANY_TEXT_TYPE

        public static final MediaType ANY_TEXT_TYPE
      • ANY_IMAGE_TYPE

        public static final MediaType ANY_IMAGE_TYPE
      • ANY_AUDIO_TYPE

        public static final MediaType ANY_AUDIO_TYPE
      • ANY_VIDEO_TYPE

        public static final MediaType ANY_VIDEO_TYPE
      • ANY_APPLICATION_TYPE

        public static final MediaType ANY_APPLICATION_TYPE
      • CACHE_MANIFEST_UTF_8

        public static final MediaType CACHE_MANIFEST_UTF_8
      • CSS_UTF_8

        public static final MediaType CSS_UTF_8
      • CSV_UTF_8

        public static final MediaType CSV_UTF_8
      • HTML_UTF_8

        public static final MediaType HTML_UTF_8
      • I_CALENDAR_UTF_8

        public static final MediaType I_CALENDAR_UTF_8
      • PLAIN_TEXT_UTF_8

        public static final MediaType PLAIN_TEXT_UTF_8
      • TEXT_JAVASCRIPT_UTF_8

        public static final MediaType TEXT_JAVASCRIPT_UTF_8
        RFC 4329 declares application/javascript to be the correct media type for JavaScript, but this may be necessary in certain situations for compatibility.
      • VCARD_UTF_8

        public static final MediaType VCARD_UTF_8
      • WML_UTF_8

        public static final MediaType WML_UTF_8
      • XML_UTF_8

        public static final MediaType XML_UTF_8
        As described in RFC 3023, this constant ( text/xml) is used for XML documents that are "readable by casual users." APPLICATION_XML_UTF_8 is provided for documents that are intended for applications.
      • CRW

        public static final MediaType CRW
        The media type for the Canon Image File Format ( crw files), a widely-used "raw image" format for cameras. It is found in /etc/mime.types, e.g. in Debian 3.48-1.
        Since:
        15.0
      • PSD

        public static final MediaType PSD
        The media type for the Photoshop File Format ( psd files) as defined by IANA, and found in /etc/mime.types, e.g. of the Apache HTTPD project; for the specification, see Adobe Photoshop Document Format and Wikipedia; this is the regular output/input of Photoshop (which can also export to various image formats; note that files with extension "PSB" are in a distinct but related format).

        This is a more recent replacement for the older, experimental type x-photoshop: RFC-2046.6.

        Since:
        15.0
      • SVG_UTF_8

        public static final MediaType SVG_UTF_8
      • MP4_AUDIO

        public static final MediaType MP4_AUDIO
      • MPEG_AUDIO

        public static final MediaType MPEG_AUDIO
      • OGG_AUDIO

        public static final MediaType OGG_AUDIO
      • WEBM_AUDIO

        public static final MediaType WEBM_AUDIO
      • MP4_VIDEO

        public static final MediaType MP4_VIDEO
      • MPEG_VIDEO

        public static final MediaType MPEG_VIDEO
      • OGG_VIDEO

        public static final MediaType OGG_VIDEO
      • QUICKTIME

        public static final MediaType QUICKTIME
      • WEBM_VIDEO

        public static final MediaType WEBM_VIDEO
      • APPLICATION_XML_UTF_8

        public static final MediaType APPLICATION_XML_UTF_8
        As described in RFC 3023, this constant ( application/xml) is used for XML documents that are "unreadable by casual users." XML_UTF_8 is provided for documents that may be read by users.
      • ATOM_UTF_8

        public static final MediaType ATOM_UTF_8
      • FORM_DATA

        public static final MediaType FORM_DATA
      • JAVASCRIPT_UTF_8

        public static final MediaType JAVASCRIPT_UTF_8
        RFC 4329 declares this to be the correct media type for JavaScript, but text/javascript may be necessary in certain situations for compatibility.
      • JSON_UTF_8

        public static final MediaType JSON_UTF_8
      • MICROSOFT_EXCEL

        public static final MediaType MICROSOFT_EXCEL
      • MICROSOFT_POWERPOINT

        public static final MediaType MICROSOFT_POWERPOINT
      • MICROSOFT_WORD

        public static final MediaType MICROSOFT_WORD
      • OCTET_STREAM

        public static final MediaType OCTET_STREAM
      • OGG_CONTAINER

        public static final MediaType OGG_CONTAINER
      • OOXML_DOCUMENT

        public static final MediaType OOXML_DOCUMENT
      • OOXML_PRESENTATION

        public static final MediaType OOXML_PRESENTATION
      • OOXML_SHEET

        public static final MediaType OOXML_SHEET
      • OPENDOCUMENT_GRAPHICS

        public static final MediaType OPENDOCUMENT_GRAPHICS
      • OPENDOCUMENT_PRESENTATION

        public static final MediaType OPENDOCUMENT_PRESENTATION
      • OPENDOCUMENT_SPREADSHEET

        public static final MediaType OPENDOCUMENT_SPREADSHEET
      • OPENDOCUMENT_TEXT

        public static final MediaType OPENDOCUMENT_TEXT
      • POSTSCRIPT

        public static final MediaType POSTSCRIPT
      • RDF_XML_UTF_8

        public static final MediaType RDF_XML_UTF_8
      • RTF_UTF_8

        public static final MediaType RTF_UTF_8
      • SHOCKWAVE_FLASH

        public static final MediaType SHOCKWAVE_FLASH
      • SKETCHUP

        public static final MediaType SKETCHUP
      • XHTML_UTF_8

        public static final MediaType XHTML_UTF_8
      • XRD_UTF_8

        public static final MediaType XRD_UTF_8
        Media type for Extensible Resource Descriptors. This is not yet registered with the IANA, but it is specified by OASIS in the XRD definition and implemented in projects such as WebFinger.
    • Method Detail

      • type

        public String type()
        Returns the top-level media type. For example, "text" in "text/plain".
      • subtype

        public String subtype()
        Returns the media subtype. For example, "plain" in "text/plain".
      • withoutParameters

        public MediaType withoutParameters()
        Returns a new instance with the same type and subtype as this instance, but without any parameters.
      • withCharset

        public MediaType withCharset(Charset charset)
        Returns a new instance with the same type and subtype as this instance, with the charset parameter set to the name of the given charset. Only one charset parameter will be present on the new instance regardless of the number set on this one.

        If a charset must be specified that is not supported on this JVM (and thus is not representable as a Charset instance, use withParameter(java.lang.String, java.lang.String).

      • hasWildcard

        public boolean hasWildcard()
        Returns true if either the type or subtype is the wildcard.
      • is

        public boolean is(MediaType mediaTypeRange)
        Returns true if this instance falls within the range (as defined by the HTTP Accept header) given by the argument according to three criteria:
        1. The type of the argument is the wildcard or equal to the type of this instance.
        2. The subtype of the argument is the wildcard or equal to the subtype of this instance.
        3. All of the parameters present in the argument are present in this instance.

        For example:

            PLAIN_TEXT_UTF_8.is(PLAIN_TEXT_UTF_8) // true PLAIN_TEXT_UTF_8.is(HTML_UTF_8) // false PLAIN_TEXT_UTF_8.is(ANY_TYPE) // true PLAIN_TEXT_UTF_8.is(ANY_TEXT_TYPE) // true PLAIN_TEXT_UTF_8.is(ANY_IMAGE_TYPE) // false PLAIN_TEXT_UTF_8.is(ANY_TEXT_TYPE.withCharset(UTF_8)) // true PLAIN_TEXT_UTF_8.withoutParameters().is(ANY_TEXT_TYPE.withCharset(UTF_8)) // false PLAIN_TEXT_UTF_8.is(ANY_TEXT_TYPE.withCharset(UTF_16)) // false

        Note that while it is possible to have the same parameter declared multiple times within a media type this method does not consider the number of occurrences of a parameter. For example, "text/plain; charset=UTF-8" satisfies "text/plain; charset=UTF-8; charset=UTF-8".

      • create

        public static MediaType create(String type,
                                       String subtype)
        Creates a new media type with the given type and subtype.
        Throws:
        IllegalArgumentException - if type or subtype is invalid or if a wildcard is used for the type, but not the subtype.
      • equals

        public boolean equals(Object obj)
      • hashCode

        public int hashCode()
      • toString

        public String toString()
        Returns the string representation of this media type in the format described in RFC 2045.