Class MediaType
- java.lang.Object
-
- com.google.common.net.MediaType
-
public final class MediaType extends java.lang.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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
MediaType.Tokenizer
-
Field Summary
Fields Modifier and Type Field Description static MediaType
AAC_AUDIO
Advanced Audio Coding.static MediaType
ANY_APPLICATION_TYPE
static MediaType
ANY_AUDIO_TYPE
static MediaType
ANY_FONT_TYPE
Wildcard matching any "font" top-level media type.static MediaType
ANY_IMAGE_TYPE
static MediaType
ANY_TEXT_TYPE
static MediaType
ANY_TYPE
static MediaType
ANY_VIDEO_TYPE
static MediaType
APPLE_MOBILE_CONFIG
static MediaType
APPLE_PASSBOOK
static MediaType
APPLICATION_BINARY
This is a non-standard media type, but is commonly used in serving hosted binary files as it is known not to trigger content sniffing in current browsers.private static java.lang.String
APPLICATION_TYPE
static MediaType
APPLICATION_XML_UTF_8
static MediaType
ATOM_UTF_8
private static java.lang.String
AUDIO_TYPE
static MediaType
BASIC_AUDIO
Basic Audio, as defined by RFC 2046.static MediaType
BMP
Bitmap file format (bmp
files).static MediaType
BZIP2
static MediaType
CACHE_MANIFEST_UTF_8
private static java.lang.String
CHARSET_ATTRIBUTE
static MediaType
CRW
The Canon Image File Format (crw
files), a widely-used "raw image" format for cameras.static MediaType
CSS_UTF_8
static MediaType
CSV_UTF_8
static MediaType
DART_UTF_8
Files in the dart programming language.static MediaType
EOT
Embedded OpenType fonts.static MediaType
EPUB
As described in the International Digital Publishing Forum EPUB is the distribution and interchange format standard for digital publications and documents.static MediaType
FLV_VIDEO
Flash video.static MediaType
FONT_COLLECTION
A collection of font outlines as defined by RFC 8081.static MediaType
FONT_OTF
Open Type Font Format (OTF) as defined by RFC 8081.static MediaType
FONT_SFNT
Spline or Scalable Font Format (SFNT).static MediaType
FONT_TTF
True Type Font Format (TTF) as defined by RFC 8081.private static java.lang.String
FONT_TYPE
static MediaType
FONT_WOFF
Web Open Font Format (WOFF).static MediaType
FONT_WOFF2
Web Open Font Format (WOFF2).static MediaType
FORM_DATA
static MediaType
GEO_JSON
Media type for the GeoJSON Format, a geospatial data interchange format based on JSON.static MediaType
GIF
static MediaType
GZIP
static MediaType
HAL_JSON
private int
hashCode
static MediaType
HEIF
static MediaType
HTML_UTF_8
static MediaType
I_CALENDAR_UTF_8
static MediaType
ICO
private static java.lang.String
IMAGE_TYPE
static MediaType
JAVASCRIPT_UTF_8
RFC 4329 declares this to be the correct media type for JavaScript, buttext/javascript
may be necessary in certain situations for compatibility.static MediaType
JOSE
static MediaType
JOSE_JSON
static MediaType
JP2K
static MediaType
JPEG
static MediaType
JSON_UTF_8
static MediaType
KEY_ARCHIVE
As described in PKCS #12: Personal Information Exchange Syntax Standard, PKCS #12 defines an archive file format for storing many cryptography objects as a single file.static MediaType
KML
static MediaType
KMZ
OGC KML (Keyhole Markup Language), compressed using the ZIP format into KMZ archives.private static java.util.Map<MediaType,MediaType>
KNOWN_TYPES
static MediaType
L16_AUDIO
L16 audio, as defined by RFC 2586.static MediaType
L24_AUDIO
L24 audio, as defined by RFC 3190.private static CharMatcher
LINEAR_WHITE_SPACE
static MediaType
MANIFEST_JSON_UTF_8
static MediaType
MBOX
The mbox database format.static MediaType
MEDIA_PRESENTATION_DESCRIPTION
Media type for Dynamic Adaptive Streaming over HTTP (DASH).static MediaType
MICROSOFT_EXCEL
Microsoft Excel spreadsheets.static MediaType
MICROSOFT_OUTLOOK
Microsoft Outlook items.static MediaType
MICROSOFT_POWERPOINT
Microsoft Powerpoint presentations.static MediaType
MICROSOFT_WORD
Microsoft Word documents.static MediaType
MP4_AUDIO
static MediaType
MP4_VIDEO
static MediaType
MPEG_AUDIO
static MediaType
MPEG_VIDEO
static MediaType
NACL_APPLICATION
NaCl applications.static MediaType
NACL_PORTABLE_APPLICATION
NaCl portable applications.static MediaType
OCTET_STREAM
static MediaType
OGG_AUDIO
static MediaType
OGG_CONTAINER
static MediaType
OGG_VIDEO
static MediaType
OOXML_DOCUMENT
static MediaType
OOXML_PRESENTATION
static MediaType
OOXML_SHEET
static MediaType
OPENDOCUMENT_GRAPHICS
static MediaType
OPENDOCUMENT_PRESENTATION
static MediaType
OPENDOCUMENT_SPREADSHEET
static MediaType
OPENDOCUMENT_TEXT
static MediaType
OPENSEARCH_DESCRIPTION_UTF_8
OpenSearch Description files are XML files that describe how a website can be used as a search engine by consumers (e.g.private static Joiner.MapJoiner
PARAMETER_JOINER
private ImmutableListMultimap<java.lang.String,java.lang.String>
parameters
private Optional<java.nio.charset.Charset>
parsedCharset
static MediaType
PDF
static MediaType
PLAIN_TEXT_UTF_8
static MediaType
PNG
static MediaType
POSTSCRIPT
static MediaType
PROTOBUF
static MediaType
PSD
static MediaType
QUICKTIME
private static CharMatcher
QUOTED_TEXT_MATCHER
static MediaType
RDF_XML_UTF_8
RDF/XML documents, which are XML serializations of Resource Description Framework graphs.static MediaType
RTF_UTF_8
static MediaType
SFNT
static MediaType
SHOCKWAVE_FLASH
static MediaType
SKETCHUP
skp
files produced by the 3D Modeling software SketchUpstatic MediaType
SOAP_XML_UTF_8
As described in RFC 3902, this constant (application/soap+xml
) is used to identify SOAP 1.2 message envelopes that have been serialized with XML 1.0.private java.lang.String
subtype
static MediaType
SVG_UTF_8
static MediaType
TAR
static MediaType
TEXT_JAVASCRIPT_UTF_8
RFC 4329 declaresapplication/javascript
to be the correct media type for JavaScript, but this may be necessary in certain situations for compatibility.private static java.lang.String
TEXT_TYPE
static MediaType
THREE_GPP_VIDEO
The 3GP multimedia container format.static MediaType
THREE_GPP2_VIDEO
The 3G2 multimedia container format.static MediaType
TIFF
private static CharMatcher
TOKEN_MATCHER
Matcher for type, subtype and attributes.private java.lang.String
toString
static MediaType
TSV_UTF_8
private java.lang.String
type
private static ImmutableListMultimap<java.lang.String,java.lang.String>
UTF_8_CONSTANT_PARAMETERS
static MediaType
VCARD_UTF_8
private static java.lang.String
VIDEO_TYPE
static MediaType
VND_REAL_AUDIO
Real Audio.static MediaType
VND_WAVE_AUDIO
WAVE format, as defined by RFC 2361.static MediaType
VORBIS_AUDIO
Vorbis Audio, as defined by RFC 5215.static MediaType
VTT_UTF_8
As described in the VTT spec, this is used for Web Video Text Tracks (WebVTT) files, used with the HTML5 track element.static MediaType
WASM_APPLICATION
WASM applications.static MediaType
WAX_AUDIO
Windows Media metafiles.static MediaType
WEBM_AUDIO
static MediaType
WEBM_VIDEO
static MediaType
WEBP
private static java.lang.String
WILDCARD
static MediaType
WMA_AUDIO
Windows Media Audio.static MediaType
WML_UTF_8
UTF-8 encoded Wireless Markup Language.static MediaType
WMV
static MediaType
WOFF
static MediaType
WOFF2
RFC 8081 declaresfont/woff2
to be the correct media type for WOFF2, but this may be necessary in certain situations for compatibility.static MediaType
XHTML_UTF_8
static 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.static MediaType
XRD_UTF_8
Extensible Resource Descriptors.static MediaType
ZIP
-
Constructor Summary
Constructors Modifier Constructor Description private
MediaType(java.lang.String type, java.lang.String subtype, ImmutableListMultimap<java.lang.String,java.lang.String> parameters)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static MediaType
addKnownType(MediaType mediaType)
Optional<java.nio.charset.Charset>
charset()
Returns an optional charset for the value of the charset parameter if it is specified.private java.lang.String
computeToString()
static MediaType
create(java.lang.String type, java.lang.String subtype)
Creates a new media type with the given type and subtype.private static MediaType
create(java.lang.String type, java.lang.String subtype, Multimap<java.lang.String,java.lang.String> parameters)
(package private) static MediaType
createApplicationType(java.lang.String subtype)
Creates a media type with the "application" type and the given subtype.(package private) static MediaType
createAudioType(java.lang.String subtype)
Creates a media type with the "audio" type and the given subtype.private static MediaType
createConstant(java.lang.String type, java.lang.String subtype)
private static MediaType
createConstantUtf8(java.lang.String type, java.lang.String subtype)
(package private) static MediaType
createFontType(java.lang.String subtype)
Creates a media type with the "font" type and the given subtype.(package private) static MediaType
createImageType(java.lang.String subtype)
Creates a media type with the "image" type and the given subtype.(package private) static MediaType
createTextType(java.lang.String subtype)
Creates a media type with the "text" type and the given subtype.(package private) static MediaType
createVideoType(java.lang.String subtype)
Creates a media type with the "video" type and the given subtype.boolean
equals(java.lang.Object obj)
private static java.lang.String
escapeAndQuote(java.lang.String value)
int
hashCode()
boolean
hasWildcard()
Returns true if either the type or subtype is the wildcard.boolean
is(MediaType mediaTypeRange)
Returnstrue
if this instance falls within the range (as defined by the HTTP Accept header) given by the argument according to three criteria: The type of the argument is the wildcard or equal to the type of this instance.private static java.lang.String
normalizeParameterValue(java.lang.String attribute, java.lang.String value)
private static java.lang.String
normalizeToken(java.lang.String token)
ImmutableListMultimap<java.lang.String,java.lang.String>
parameters()
Returns a multimap containing the parameters of this media type.private java.util.Map<java.lang.String,ImmutableMultiset<java.lang.String>>
parametersAsMap()
static MediaType
parse(java.lang.String input)
Parses a media type from its string representation.java.lang.String
subtype()
Returns the media subtype.java.lang.String
toString()
Returns the string representation of this media type in the format described in RFC 2045.java.lang.String
type()
Returns the top-level media type.MediaType
withCharset(java.nio.charset.Charset charset)
Returns a new instance with the same type and subtype as this instance, with thecharset
parameter set to thename
of the given charset.MediaType
withoutParameters()
Returns a new instance with the same type and subtype as this instance, but without any parameters.MediaType
withParameter(java.lang.String attribute, java.lang.String value)
Replaces all parameters with the given attribute with a single parameter with the given value.MediaType
withParameters(Multimap<java.lang.String,java.lang.String> parameters)
Replaces all parameters with the given parameters.MediaType
withParameters(java.lang.String attribute, java.lang.Iterable<java.lang.String> values)
Replaces all parameters with the given attribute with parameters using the given values.
-
-
-
Field Detail
-
CHARSET_ATTRIBUTE
private static final java.lang.String CHARSET_ATTRIBUTE
- See Also:
- Constant Field Values
-
UTF_8_CONSTANT_PARAMETERS
private static final ImmutableListMultimap<java.lang.String,java.lang.String> UTF_8_CONSTANT_PARAMETERS
-
TOKEN_MATCHER
private static final CharMatcher TOKEN_MATCHER
Matcher for type, subtype and attributes.
-
QUOTED_TEXT_MATCHER
private static final CharMatcher QUOTED_TEXT_MATCHER
-
LINEAR_WHITE_SPACE
private static final CharMatcher LINEAR_WHITE_SPACE
-
APPLICATION_TYPE
private static final java.lang.String APPLICATION_TYPE
- See Also:
- Constant Field Values
-
AUDIO_TYPE
private static final java.lang.String AUDIO_TYPE
- See Also:
- Constant Field Values
-
IMAGE_TYPE
private static final java.lang.String IMAGE_TYPE
- See Also:
- Constant Field Values
-
TEXT_TYPE
private static final java.lang.String TEXT_TYPE
- See Also:
- Constant Field Values
-
VIDEO_TYPE
private static final java.lang.String VIDEO_TYPE
- See Also:
- Constant Field Values
-
FONT_TYPE
private static final java.lang.String FONT_TYPE
- See Also:
- Constant Field Values
-
WILDCARD
private static final java.lang.String WILDCARD
- See Also:
- Constant Field Values
-
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
-
ANY_FONT_TYPE
public static final MediaType ANY_FONT_TYPE
Wildcard matching any "font" top-level media type.- Since:
- 30.0
-
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 declaresapplication/javascript
to be the correct media type for JavaScript, but this may be necessary in certain situations for compatibility.
-
TSV_UTF_8
public static final MediaType TSV_UTF_8
- Since:
- 15.0
-
VCARD_UTF_8
public static final MediaType VCARD_UTF_8
-
WML_UTF_8
public static final MediaType WML_UTF_8
UTF-8 encoded Wireless Markup Language.- Since:
- 13.0
-
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.
-
VTT_UTF_8
public static final MediaType VTT_UTF_8
As described in the VTT spec, this is used for Web Video Text Tracks (WebVTT) files, used with the HTML5 track element.- Since:
- 20.0
-
BMP
public static final MediaType BMP
Bitmap file format (bmp
files).- Since:
- 13.0
-
CRW
public static final MediaType CRW
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
-
GIF
public static final MediaType GIF
-
ICO
public static final MediaType ICO
-
JPEG
public static final MediaType JPEG
-
PNG
public static final MediaType PNG
-
PSD
public static final MediaType PSD
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
-
TIFF
public static final MediaType TIFF
-
WEBP
public static final MediaType WEBP
- Since:
- 13.0
-
HEIF
public static final MediaType HEIF
- Since:
- 28.1
-
JP2K
public static final MediaType JP2K
- Since:
- 28.1
-
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
-
BASIC_AUDIO
public static final MediaType BASIC_AUDIO
Basic Audio, as defined by RFC 2046.- Since:
- 20.0
-
AAC_AUDIO
public static final MediaType AAC_AUDIO
Advanced Audio Coding. For more information, see Advanced Audio Coding.- Since:
- 20.0
-
VORBIS_AUDIO
public static final MediaType VORBIS_AUDIO
Vorbis Audio, as defined by RFC 5215.- Since:
- 20.0
-
WMA_AUDIO
public static final MediaType WMA_AUDIO
Windows Media Audio. For more information, see file name extensions for Windows Media metafiles.- Since:
- 20.0
-
WAX_AUDIO
public static final MediaType WAX_AUDIO
Windows Media metafiles. For more information, see file name extensions for Windows Media metafiles.- Since:
- 20.0
-
VND_REAL_AUDIO
public static final MediaType VND_REAL_AUDIO
Real Audio. For more information, see this link.- Since:
- 20.0
-
VND_WAVE_AUDIO
public static final MediaType VND_WAVE_AUDIO
WAVE format, as defined by RFC 2361.- Since:
- 20.0
-
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
-
WMV
public static final MediaType WMV
-
FLV_VIDEO
public static final MediaType FLV_VIDEO
Flash video. For more information, see this link.- Since:
- 20.0
-
THREE_GPP_VIDEO
public static final MediaType THREE_GPP_VIDEO
The 3GP multimedia container format. For more information, see 3GPP TS 26.244.- Since:
- 20.0
-
THREE_GPP2_VIDEO
public static final MediaType THREE_GPP2_VIDEO
The 3G2 multimedia container format. For more information, see 3GPP2 C.S0050-B.- Since:
- 20.0
-
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.- Since:
- 14.0
-
ATOM_UTF_8
public static final MediaType ATOM_UTF_8
-
BZIP2
public static final MediaType BZIP2
-
DART_UTF_8
public static final MediaType DART_UTF_8
Files in the dart programming language.- Since:
- 19.0
-
APPLE_PASSBOOK
public static final MediaType APPLE_PASSBOOK
- Since:
- 19.0
-
EOT
public static final MediaType EOT
Embedded OpenType fonts. This is registered with the IANA.- Since:
- 17.0
-
EPUB
public static final MediaType EPUB
As described in the International Digital Publishing Forum EPUB is the distribution and interchange format standard for digital publications and documents. This media type is defined in the EPUB Open Container Format specification.- Since:
- 15.0
-
FORM_DATA
public static final MediaType FORM_DATA
-
KEY_ARCHIVE
public static final MediaType KEY_ARCHIVE
As described in PKCS #12: Personal Information Exchange Syntax Standard, PKCS #12 defines an archive file format for storing many cryptography objects as a single file.- Since:
- 15.0
-
APPLICATION_BINARY
public static final MediaType APPLICATION_BINARY
This is a non-standard media type, but is commonly used in serving hosted binary files as it is known not to trigger content sniffing in current browsers. It should not be used in other situations as it is not specified by any RFC and does not appear in the /IANA MIME Media Types list. ConsiderOCTET_STREAM
for binary data that is not being served to a browser.- Since:
- 14.0
-
GEO_JSON
public static final MediaType GEO_JSON
Media type for the GeoJSON Format, a geospatial data interchange format based on JSON.- Since:
- 28.0
-
GZIP
public static final MediaType GZIP
-
HAL_JSON
public static final MediaType HAL_JSON
- Since:
- 26.0
-
JAVASCRIPT_UTF_8
public static final MediaType JAVASCRIPT_UTF_8
RFC 4329 declares this to be the correct media type for JavaScript, buttext/javascript
may be necessary in certain situations for compatibility.
-
JOSE
public static final MediaType JOSE
- Since:
- 27.1
-
JOSE_JSON
public static final MediaType JOSE_JSON
- Since:
- 27.1
-
JSON_UTF_8
public static final MediaType JSON_UTF_8
-
MANIFEST_JSON_UTF_8
public static final MediaType MANIFEST_JSON_UTF_8
- Since:
- 19.0
-
KML
public static final MediaType KML
-
KMZ
public static final MediaType KMZ
OGC KML (Keyhole Markup Language), compressed using the ZIP format into KMZ archives.
-
MBOX
public static final MediaType MBOX
The mbox database format.- Since:
- 13.0
-
APPLE_MOBILE_CONFIG
public static final MediaType APPLE_MOBILE_CONFIG
- Since:
- 18.0
-
MICROSOFT_EXCEL
public static final MediaType MICROSOFT_EXCEL
Microsoft Excel spreadsheets.
-
MICROSOFT_OUTLOOK
public static final MediaType MICROSOFT_OUTLOOK
Microsoft Outlook items.- Since:
- 27.1
-
MICROSOFT_POWERPOINT
public static final MediaType MICROSOFT_POWERPOINT
Microsoft Powerpoint presentations.
-
MICROSOFT_WORD
public static final MediaType MICROSOFT_WORD
Microsoft Word documents.
-
MEDIA_PRESENTATION_DESCRIPTION
public static final MediaType MEDIA_PRESENTATION_DESCRIPTION
Media type for Dynamic Adaptive Streaming over HTTP (DASH). This is registered with the IANA.- Since:
- 28.2
-
WASM_APPLICATION
public static final MediaType WASM_APPLICATION
WASM applications. For more information see the Web Assembly overview.- Since:
- 27.0
-
NACL_APPLICATION
public static final MediaType NACL_APPLICATION
NaCl applications. For more information see the Developer Guide for Native Client Application Structure.- Since:
- 20.0
-
NACL_PORTABLE_APPLICATION
public static final MediaType NACL_PORTABLE_APPLICATION
NaCl portable applications. For more information see the Developer Guide for Native Client Application Structure.- Since:
- 20.0
-
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
-
OPENSEARCH_DESCRIPTION_UTF_8
public static final MediaType OPENSEARCH_DESCRIPTION_UTF_8
OpenSearch Description files are XML files that describe how a website can be used as a search engine by consumers (e.g. web browsers).- Since:
- 28.2
-
PDF
public static final MediaType PDF
-
POSTSCRIPT
public static final MediaType POSTSCRIPT
-
PROTOBUF
public static final MediaType PROTOBUF
- Since:
- 15.0
-
RDF_XML_UTF_8
public static final MediaType RDF_XML_UTF_8
RDF/XML documents, which are XML serializations of Resource Description Framework graphs.- Since:
- 14.0
-
RTF_UTF_8
public static final MediaType RTF_UTF_8
-
SFNT
public static final MediaType SFNT
RFC 8081 declaresfont/sfnt
to be the correct media type for SFNT, but this may be necessary in certain situations for compatibility.- Since:
- 17.0
-
SHOCKWAVE_FLASH
public static final MediaType SHOCKWAVE_FLASH
-
SKETCHUP
public static final MediaType SKETCHUP
skp
files produced by the 3D Modeling software SketchUp- Since:
- 13.0
-
SOAP_XML_UTF_8
public static final MediaType SOAP_XML_UTF_8
As described in RFC 3902, this constant (application/soap+xml
) is used to identify SOAP 1.2 message envelopes that have been serialized with XML 1.0.For SOAP 1.1 messages, see
XML_UTF_8
per W3C Note on Simple Object Access Protocol (SOAP) 1.1- Since:
- 20.0
-
TAR
public static final MediaType TAR
-
WOFF
public static final MediaType WOFF
RFC 8081 declaresfont/woff
to be the correct media type for WOFF, but this may be necessary in certain situations for compatibility.- Since:
- 17.0
-
WOFF2
public static final MediaType WOFF2
RFC 8081 declaresfont/woff2
to be the correct media type for WOFF2, but this may be necessary in certain situations for compatibility.- Since:
- 20.0
-
XHTML_UTF_8
public static final MediaType XHTML_UTF_8
-
XRD_UTF_8
public static final MediaType XRD_UTF_8
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.- Since:
- 14.0
-
ZIP
public static final MediaType ZIP
-
FONT_COLLECTION
public static final MediaType FONT_COLLECTION
A collection of font outlines as defined by RFC 8081.- Since:
- 30.0
-
FONT_OTF
public static final MediaType FONT_OTF
Open Type Font Format (OTF) as defined by RFC 8081.- Since:
- 30.0
-
FONT_SFNT
public static final MediaType FONT_SFNT
Spline or Scalable Font Format (SFNT). RFC 8081 declares this to be the correct media type for SFNT, butapplication/font-sfnt
may be necessary in certain situations for compatibility.- Since:
- 30.0
-
FONT_TTF
public static final MediaType FONT_TTF
True Type Font Format (TTF) as defined by RFC 8081.- Since:
- 30.0
-
FONT_WOFF
public static final MediaType FONT_WOFF
Web Open Font Format (WOFF). RFC 8081 declares this to be the correct media type for SFNT, butapplication/font-woff
may be necessary in certain situations for compatibility.- Since:
- 30.0
-
FONT_WOFF2
public static final MediaType FONT_WOFF2
Web Open Font Format (WOFF2). RFC 8081 declares this to be the correct media type for SFNT, butapplication/font-woff2
may be necessary in certain situations for compatibility.- Since:
- 30.0
-
type
private final java.lang.String type
-
subtype
private final java.lang.String subtype
-
parameters
private final ImmutableListMultimap<java.lang.String,java.lang.String> parameters
-
toString
@CheckForNull private java.lang.String toString
-
hashCode
private int hashCode
-
parsedCharset
@CheckForNull private Optional<java.nio.charset.Charset> parsedCharset
-
PARAMETER_JOINER
private static final Joiner.MapJoiner PARAMETER_JOINER
-
-
Constructor Detail
-
MediaType
private MediaType(java.lang.String type, java.lang.String subtype, ImmutableListMultimap<java.lang.String,java.lang.String> parameters)
-
-
Method Detail
-
createConstant
private static MediaType createConstant(java.lang.String type, java.lang.String subtype)
-
createConstantUtf8
private static MediaType createConstantUtf8(java.lang.String type, java.lang.String subtype)
-
type
public java.lang.String type()
Returns the top-level media type. For example,"text"
in"text/plain"
.
-
subtype
public java.lang.String subtype()
Returns the media subtype. For example,"plain"
in"text/plain"
.
-
parameters
public ImmutableListMultimap<java.lang.String,java.lang.String> parameters()
Returns a multimap containing the parameters of this media type.
-
parametersAsMap
private java.util.Map<java.lang.String,ImmutableMultiset<java.lang.String>> parametersAsMap()
-
charset
public Optional<java.nio.charset.Charset> charset()
Returns an optional charset for the value of the charset parameter if it is specified.- Throws:
java.lang.IllegalStateException
- if multiple charset values have been set for this media typejava.nio.charset.IllegalCharsetNameException
- if a charset value is present, but illegaljava.nio.charset.UnsupportedCharsetException
- if a charset value is present, but no support is available in this instance of the Java virtual machine
-
withoutParameters
public MediaType withoutParameters()
Returns a new instance with the same type and subtype as this instance, but without any parameters.
-
withParameters
public MediaType withParameters(Multimap<java.lang.String,java.lang.String> parameters)
Replaces all parameters with the given parameters.- Throws:
java.lang.IllegalArgumentException
- if any parameter or value is invalid
-
withParameters
public MediaType withParameters(java.lang.String attribute, java.lang.Iterable<java.lang.String> values)
Replaces all parameters with the given attribute with parameters using the given values. If there are no values, any existing parameters with the given attribute are removed.- Throws:
java.lang.IllegalArgumentException
- if eitherattribute
orvalues
is invalid- Since:
- 24.0
-
withParameter
public MediaType withParameter(java.lang.String attribute, java.lang.String value)
Replaces all parameters with the given attribute with a single parameter with the given value. If multiple parameters with the same attributes are necessary usewithParameters(String, Iterable)
. PreferwithCharset(java.nio.charset.Charset)
for setting thecharset
parameter when using aCharset
object.- Throws:
java.lang.IllegalArgumentException
- if eitherattribute
orvalue
is invalid
-
withCharset
public MediaType withCharset(java.nio.charset.Charset charset)
Returns a new instance with the same type and subtype as this instance, with thecharset
parameter set to thename
of the given charset. Only onecharset
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, usewithParameter(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)
Returnstrue
if this instance falls within the range (as defined by the HTTP Accept header) given by the argument according to three criteria:- The type of the argument is the wildcard or equal to the type of this instance.
- The subtype of the argument is the wildcard or equal to the subtype of this instance.
- 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(java.lang.String type, java.lang.String subtype)
Creates a new media type with the given type and subtype.- Throws:
java.lang.IllegalArgumentException
- if type or subtype is invalid or if a wildcard is used for the type, but not the subtype.
-
create
private static MediaType create(java.lang.String type, java.lang.String subtype, Multimap<java.lang.String,java.lang.String> parameters)
-
createApplicationType
static MediaType createApplicationType(java.lang.String subtype)
Creates a media type with the "application" type and the given subtype.- Throws:
java.lang.IllegalArgumentException
- if subtype is invalid
-
createAudioType
static MediaType createAudioType(java.lang.String subtype)
Creates a media type with the "audio" type and the given subtype.- Throws:
java.lang.IllegalArgumentException
- if subtype is invalid
-
createFontType
static MediaType createFontType(java.lang.String subtype)
Creates a media type with the "font" type and the given subtype.- Throws:
java.lang.IllegalArgumentException
- if subtype is invalid
-
createImageType
static MediaType createImageType(java.lang.String subtype)
Creates a media type with the "image" type and the given subtype.- Throws:
java.lang.IllegalArgumentException
- if subtype is invalid
-
createTextType
static MediaType createTextType(java.lang.String subtype)
Creates a media type with the "text" type and the given subtype.- Throws:
java.lang.IllegalArgumentException
- if subtype is invalid
-
createVideoType
static MediaType createVideoType(java.lang.String subtype)
Creates a media type with the "video" type and the given subtype.- Throws:
java.lang.IllegalArgumentException
- if subtype is invalid
-
normalizeToken
private static java.lang.String normalizeToken(java.lang.String token)
-
normalizeParameterValue
private static java.lang.String normalizeParameterValue(java.lang.String attribute, java.lang.String value)
-
parse
public static MediaType parse(java.lang.String input)
Parses a media type from its string representation.- Throws:
java.lang.IllegalArgumentException
- if the input is not parsable
-
equals
public boolean equals(@CheckForNull java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
toString
public java.lang.String toString()
Returns the string representation of this media type in the format described in RFC 2045.- Overrides:
toString
in classjava.lang.Object
-
computeToString
private java.lang.String computeToString()
-
escapeAndQuote
private static java.lang.String escapeAndQuote(java.lang.String value)
-
-