Class MediaType

java.lang.Object
io.micronaut.http.MediaType
All Implemented Interfaces:
CharSequence, Comparable<MediaType>

public class MediaType extends Object implements CharSequence, Comparable<MediaType>
Represents a media type. See https://www.iana.org/assignments/media-types/media-types.xhtml and https://tools.ietf.org/html/rfc2046
Since:
1.0
Author:
Graeme Rocher
  • Field Details

    • EXTENSION_JSON

      public static final String EXTENSION_JSON
      Default file extension used for JSON.
      See Also:
    • EXTENSION_XML

      public static final String EXTENSION_XML
      Default file extension used for XML.
      See Also:
    • EXTENSION_PDF

      public static final String EXTENSION_PDF
      Default file extension used for PDF.
      See Also:
    • EXTENSION_XLSX

      public static final String EXTENSION_XLSX
      File extension used for Microsoft Excel Open XML Spreadsheet (XLSX).
      See Also:
    • EXTENSION_XLS

      public static final String EXTENSION_XLS
      File extension for Microsoft Excel's workbook files in use between 97-2003.
      See Also:
    • EXTENSION_GPX

      public static final String EXTENSION_GPX
      File extension for GPS Exchange Format files.
      See Also:
    • EXTENSION_ZIP

      public static final String EXTENSION_ZIP
      File extension for ZIP archive files.
      See Also:
    • EXTENSION_GZIP

      public static final String EXTENSION_GZIP
      File extension for GZIP compressed files.
      See Also:
    • EMPTY_ARRAY

      public static final MediaType[] EMPTY_ARRAY
      Default empty media type array.
    • ALL

      public static final String ALL
      A wildcard media type representing all types.
      See Also:
    • ALL_TYPE

      public static final MediaType ALL_TYPE
      A wildcard media type representing all types.
    • MULTIPART_FORM_DATA

      public static final String MULTIPART_FORM_DATA
      Multi part form data: multipart/form-data.
      See Also:
    • MULTIPART_FORM_DATA_TYPE

      public static final MediaType MULTIPART_FORM_DATA_TYPE
      Multi part form data: multipart/form-data.
    • APPLICATION_FORM_URLENCODED

      public static final String APPLICATION_FORM_URLENCODED
      Form encoded data: application/x-www-form-urlencoded.
      See Also:
    • APPLICATION_FORM_URLENCODED_TYPE

      public static final MediaType APPLICATION_FORM_URLENCODED_TYPE
      Form encoded data: application/x-www-form-urlencoded.
    • FORM

      public static final MediaType FORM
    • APPLICATION_XHTML

      public static final String APPLICATION_XHTML
      XHTML: application/xhtml+xml.
      See Also:
    • APPLICATION_XHTML_TYPE

      public static final MediaType APPLICATION_XHTML_TYPE
      XHTML: application/xhtml+xml.
    • APPLICATION_XML

      public static final String APPLICATION_XML
      XML: application/xml.
      See Also:
    • APPLICATION_XML_TYPE

      public static final MediaType APPLICATION_XML_TYPE
      XML: application/xml.
    • APPLICATION_JSON_GITHUB

      public static final String APPLICATION_JSON_GITHUB
      JSON GitHub: application/vnd.github+json.
      See Also:
    • APPLICATION_JSON_GITHUB_TYPE

      public static final MediaType APPLICATION_JSON_GITHUB_TYPE
      JSON GitHub: application/vnd.github+json.
    • APPLICATION_JSON_FEED

      public static final String APPLICATION_JSON_FEED
      JSON Feed: application/feed+json.
      See Also:
    • APPLICATION_JSON_FEED_TYPE

      public static final MediaType APPLICATION_JSON_FEED_TYPE
      JSON Feed: application/feed+json.
    • APPLICATION_JSON_PATCH

      public static final String APPLICATION_JSON_PATCH
      See Also:
    • APPLICATION_JSON_PATCH_TYPE

      public static final MediaType APPLICATION_JSON_PATCH_TYPE
      JSON Patch: application/json-patch+json.
    • APPLICATION_JSON_MERGE_PATCH

      public static final String APPLICATION_JSON_MERGE_PATCH
      See Also:
    • APPLICATION_JSON_MERGE_PATCH_TYPE

      public static final MediaType APPLICATION_JSON_MERGE_PATCH_TYPE
      JSON Merge Patch: application/merge-patch+json.
    • APPLICATION_JSON_PROBLEM

      public static final String APPLICATION_JSON_PROBLEM
      JSON Feed: application/problem+json.
      See Also:
    • APPLICATION_JSON_PROBLEM_TYPE

      public static final MediaType APPLICATION_JSON_PROBLEM_TYPE
      JSON Feed: application/problem+json.
    • APPLICATION_JSON_SCHEMA

      public static final String APPLICATION_JSON_SCHEMA
      JSON Schema: application/schema+json.
      See Also:
    • APPLICATION_JSON_SCHEMA_TYPE

      public static final MediaType APPLICATION_JSON_SCHEMA_TYPE
      JSON Schema: application/schema+json.
    • APPLICATION_JSON

      public static final String APPLICATION_JSON
      JSON: application/json.
      See Also:
    • APPLICATION_JSON_TYPE

      public static final MediaType APPLICATION_JSON_TYPE
      JSON: application/json.
    • APPLICATION_YAML

      public static final String APPLICATION_YAML
      YAML: application/x-yaml.
      See Also:
    • APPLICATION_YAML_TYPE

      public static final MediaType APPLICATION_YAML_TYPE
      YAML: application/x-yaml.
    • MICROSOFT_EXCEL_OPEN_XML

      public static final String MICROSOFT_EXCEL_OPEN_XML
      XML: Microsoft Excel Open XML Spreadsheet (XLSX).
      See Also:
    • MICROSOFT_EXCEL_OPEN_XML_TYPE

      public static final MediaType MICROSOFT_EXCEL_OPEN_XML_TYPE
      XML: Microsoft Excel Open XML Spreadsheet (XLSX).
    • MICROSOFT_EXCEL

      public static final String MICROSOFT_EXCEL
      Microsoft Excel's workbook files in use between 97-2003.
      See Also:
    • MICROSOFT_EXCEL_TYPE

      public static final MediaType MICROSOFT_EXCEL_TYPE
      Microsoft Excel's workbook files in use between 97-2003.
    • APPLICATION_HAL_JSON

      public static final String APPLICATION_HAL_JSON
      HAL JSON: application/hal+json.
      See Also:
    • APPLICATION_HAL_JSON_TYPE

      public static final MediaType APPLICATION_HAL_JSON_TYPE
      HAL JSON: application/hal+json.
    • APPLICATION_HAL_XML

      public static final String APPLICATION_HAL_XML
      HAL XML: application/hal+xml.
      See Also:
    • APPLICATION_HAL_XML_TYPE

      public static final MediaType APPLICATION_HAL_XML_TYPE
      HAL XML: application/hal+xml.
    • APPLICATION_ATOM_XML

      public static final String APPLICATION_ATOM_XML
      Atom: application/atom+xml.
      See Also:
    • APPLICATION_ATOM_XML_TYPE

      public static final MediaType APPLICATION_ATOM_XML_TYPE
      Atom: application/atom+xml.
    • APPLICATION_VND_ERROR

      public static final String APPLICATION_VND_ERROR
      VND Error: application/vnd.error+json.
      See Also:
    • APPLICATION_VND_ERROR_TYPE

      public static final MediaType APPLICATION_VND_ERROR_TYPE
      VND Error: application/vnd.error+json.
    • APPLICATION_JSON_STREAM

      public static final String APPLICATION_JSON_STREAM
      JSON Stream: application/x-json-stream.
      See Also:
    • APPLICATION_JSON_STREAM_TYPE

      public static final MediaType APPLICATION_JSON_STREAM_TYPE
      JSON Stream: application/x-json-stream.
    • APPLICATION_OCTET_STREAM

      public static final String APPLICATION_OCTET_STREAM
      BINARY: application/octet-stream.
      See Also:
    • APPLICATION_OCTET_STREAM_TYPE

      public static final MediaType APPLICATION_OCTET_STREAM_TYPE
      BINARY: application/octet-stream.
    • APPLICATION_GRAPHQL

      public static final String APPLICATION_GRAPHQL
      GraphQL: application/graphql.
      See Also:
    • APPLICATION_GRAPHQL_TYPE

      public static final MediaType APPLICATION_GRAPHQL_TYPE
      GraphQL: application/graphql.
    • APPLICATION_GPX_XML

      public static final String APPLICATION_GPX_XML
      GPS Exchange Format: application/gpx+xml.
      See Also:
    • GPX_XML_TYPE

      public static final MediaType GPX_XML_TYPE
      GPS Exchange Format: application/gpx+xml.
    • APPLICATION_ZIP

      public static final String APPLICATION_ZIP
      ZIP archive format: application/zip.
      See Also:
    • ZIP_TYPE

      public static final MediaType ZIP_TYPE
      ZIP archive format: application/zip.
    • APPLICATION_GZIP

      public static final String APPLICATION_GZIP
      GZip compressed data: application/gzip.
      See Also:
    • GZIP_TYPE

      public static final MediaType GZIP_TYPE
      GZip compressed data: application/gzip.
    • APPLICATION_YANG

      public static final String APPLICATION_YANG
      YANG format data: application/yang.
      See Also:
    • YANG_TYPE

      public static final MediaType YANG_TYPE
      YANG format data: application/yang.
    • APPLICATION_CUE

      public static final String APPLICATION_CUE
      CUE format data: application/x-cue.
      See Also:
    • CUE_TYPE

      public static final MediaType CUE_TYPE
      CUE format data: application/x-cue.
    • APPLICATION_TOML

      public static final String APPLICATION_TOML
      TOML format data: application/toml.
      See Also:
    • TOML_TYPE

      public static final MediaType TOML_TYPE
      TOML format data: application/toml.
    • APPLICATION_RTF

      public static final String APPLICATION_RTF
      RTF format data: application/rtf.
      See Also:
    • RTF_TYPE

      public static final MediaType RTF_TYPE
      RTF format data: application/rtf.
    • APPLICATION_ZLIB

      public static final String APPLICATION_ZLIB
      Zlib compressed data: application/zlib.
      See Also:
    • ZLIB_TYPE

      public static final MediaType ZLIB_TYPE
      Zlib compressed data: application/zlib.
    • APPLICATION_ZSTD

      public static final String APPLICATION_ZSTD
      Zstd compressed data: application/zstd.
      See Also:
    • ZSTD_TYPE

      public static final MediaType ZSTD_TYPE
      Zstd compressed data: application/zstd.
    • APPLICATION_PDF

      public static final String APPLICATION_PDF
      PDF: application/pdf.
      See Also:
    • APPLICATION_PDF_TYPE

      public static final MediaType APPLICATION_PDF_TYPE
      PDF: application/pdf.
    • TEXT_HTML

      public static final String TEXT_HTML
      HTML: text/html.
      See Also:
    • TEXT_HTML_TYPE

      public static final MediaType TEXT_HTML_TYPE
      HTML: text/html.
    • TEXT_CSV

      public static final String TEXT_CSV
      CSV: text/csv.
      See Also:
    • TEXT_CSV_TYPE

      public static final MediaType TEXT_CSV_TYPE
      CSV: text/csv.
    • TEXT_CSS

      public static final String TEXT_CSS
      CSS: text/css.
      See Also:
    • TEXT_CSS_TYPE

      public static final MediaType TEXT_CSS_TYPE
      CSS: text/css.
    • TEXT_XML

      public static final String TEXT_XML
      XML: text/xml.
      See Also:
    • TEXT_XML_TYPE

      public static final MediaType TEXT_XML_TYPE
      XML: text/xml.
    • TEXT_JSON

      public static final String TEXT_JSON
      JSON: text/json.
      See Also:
    • TEXT_JSON_TYPE

      public static final MediaType TEXT_JSON_TYPE
      JSON: text/json.
    • TEXT_JAVASCRIPT

      public static final String TEXT_JAVASCRIPT
      Text javascript: text/javascript.
      See Also:
    • TEXT_JAVASCRIPT_TYPE

      public static final MediaType TEXT_JAVASCRIPT_TYPE
      Text javascript: text/javascript.
    • TEXT_ECMASCRIPT

      public static final String TEXT_ECMASCRIPT
      Text ecmascript: text/ecmascript.
      See Also:
    • TEXT_ECMASCRIPT_TYPE

      public static final MediaType TEXT_ECMASCRIPT_TYPE
      Text ecmascript: text/ecmascript.
    • TEXT_PLAIN

      public static final String TEXT_PLAIN
      Plain Text: text/plain.
      See Also:
    • TEXT_PLAIN_TYPE

      public static final MediaType TEXT_PLAIN_TYPE
      Plain Text: text/plain.
    • TEXT_MARKDOWN

      public static final String TEXT_MARKDOWN
      Markdown: text/markdown.
      See Also:
    • TEXT_MARKDOWN_TYPE

      public static final MediaType TEXT_MARKDOWN_TYPE
      Markdown: text/markdown.
    • TEXT_EVENT_STREAM

      public static final String TEXT_EVENT_STREAM
      Server Sent Event: text/event-stream.
      See Also:
    • TEXT_EVENT_STREAM_TYPE

      public static final MediaType TEXT_EVENT_STREAM_TYPE
      Server Sent Event: text/event-stream.
    • IMAGE_APNG

      public static final String IMAGE_APNG
      Animated Portable Network Graphics (APNG): image/apng.
      See Also:
    • IMAGE_APNG_TYPE

      public static final MediaType IMAGE_APNG_TYPE
      Animated Portable Network Graphics (APNG): image/apng.
    • IMAGE_BMP

      public static final String IMAGE_BMP
      Bitmap file: image/bmp.
      See Also:
    • IMAGE_BMP_TYPE

      public static final MediaType IMAGE_BMP_TYPE
      Bitmap file: image/bmp.
    • IMAGE_X_ICON

      public static final String IMAGE_X_ICON
      Microsoft Icon: image/x-icon.
      See Also:
    • IMAGE_X_ICON_TYPE

      public static final MediaType IMAGE_X_ICON_TYPE
      Microsoft Icon: image/x-icon.
    • IMAGE_TIFF

      public static final String IMAGE_TIFF
      Tagged Image File Format: image/tiff.
      See Also:
    • IMAGE_TIFF_TYPE

      public static final MediaType IMAGE_TIFF_TYPE
      Tagged Image File Format: image/tiff.
    • IMAGE_AVIF

      public static final String IMAGE_AVIF
      AV1 Image File Format (AVIF): image/avif.
      See Also:
    • IMAGE_AVIF_TYPE

      public static final MediaType IMAGE_AVIF_TYPE
      AV1 Image File Format (AVIF): image/avif.
    • IMAGE_SVG

      public static final String IMAGE_SVG
      Scalable Vector Graphics (SVG): image/svg+xml.
      See Also:
    • IMAGE_SVG_TYPE

      public static final MediaType IMAGE_SVG_TYPE
      Scalable Vector Graphics (SVG): image/svg+xml.
    • IMAGE_XBM

      public static final String IMAGE_XBM
      X Window System Bitmap file (XBM): image/xbm.
      See Also:
    • IMAGE_XBM_TYPE

      public static final MediaType IMAGE_XBM_TYPE
      X Window System Bitmap file (XBM): image/xbm.
    • IMAGE_PNG

      public static final String IMAGE_PNG
      Png Image: image/png.
      See Also:
    • IMAGE_PNG_TYPE

      public static final MediaType IMAGE_PNG_TYPE
      Png Image: image/png.
    • IMAGE_JPEG

      public static final String IMAGE_JPEG
      Jpeg Image: image/jpeg.
      See Also:
    • IMAGE_JPEG_TYPE

      public static final MediaType IMAGE_JPEG_TYPE
      Jpeg Image: image/jpeg.
    • IMAGE_GIF

      public static final String IMAGE_GIF
      Gif Image: image/gif.
      See Also:
    • IMAGE_GIF_TYPE

      public static final MediaType IMAGE_GIF_TYPE
      Gif Image: image/gif.
    • IMAGE_WEBP

      public static final String IMAGE_WEBP
      Webp Image: image/webp.
      See Also:
    • IMAGE_WEBP_TYPE

      public static final MediaType IMAGE_WEBP_TYPE
      Webp Image: image/webp.
    • IMAGE_WMF

      public static final String IMAGE_WMF
      WMF Image: image/wmf.
      See Also:
    • IMAGE_WMF_TYPE

      public static final MediaType IMAGE_WMF_TYPE
      WMF Image: image/wmf.
    • CHARSET_PARAMETER

      public static final String CHARSET_PARAMETER
      Parameter "charset".
      See Also:
    • Q_PARAMETER

      public static final String Q_PARAMETER
      Parameter "q".
      See Also:
    • V_PARAMETER

      public static final String V_PARAMETER
      Parameter "v".
      See Also:
    • name

      protected final String name
    • subtype

      protected final String subtype
    • type

      protected final String type
    • extension

      protected final String extension
    • parameters

      protected final Map<CharSequence,String> parameters
  • Constructor Details

    • MediaType

      public MediaType(@NonNull @NonNull String name)
      Constructs a new media type for the given string.
      Parameters:
      name - The name of the media type. For example application/json
    • MediaType

      public MediaType(@NonNull @NonNull String name, @Nullable @Nullable Map<String,String> params)
      Constructs a new media type for the given string and parameters.
      Parameters:
      name - The name of the media type. For example application/json
      params - The parameters
    • MediaType

      public MediaType(@NonNull @NonNull String name, @Nullable @Nullable String extension)
      Constructs a new media type for the given string and extension.
      Parameters:
      name - The name of the media type. For example application/json
      extension - The extension of the file using this media type if it differs from the subtype
    • MediaType

      public MediaType(@NonNull @NonNull String name, @Nullable @Nullable String extension, @Nullable @Nullable Map<String,String> params)
      Constructs a new media type for the given string and extension.
      Parameters:
      name - The name of the media type. For example application/json
      extension - The extension of the file using this media type if it differs from the subtype
      params - The parameters
  • Method Details

    • of

      public static MediaType of(String mediaType)
      Create a new or get a MediaType from the given text.
      Parameters:
      mediaType - The text
      Returns:
      The MediaType
    • matches

      public boolean matches(@NonNull @NonNull MediaType expectedContentType)
      Determine if this requested content type can be satisfied by a given content type. e.g. text/* will be satisfied by test/html.
      Parameters:
      expectedContentType - Content type to match against
      Returns:
      if successful match
    • matchesSubtype

      public boolean matchesSubtype(String matchSubtype)
      Check if the subtype matches.
      Parameters:
      matchSubtype - The subtype to match
      Returns:
      true if matches
      Since:
      4.6.3
    • matchesType

      public boolean matchesType(String matchType)
      Check if the type matches.
      Parameters:
      matchType - The type to match
      Returns:
      true if matches
      Since:
      4.6.3
    • matchesAllOrWildcardOrExtension

      public boolean matchesAllOrWildcardOrExtension(String matchExtension)
      Check if the extension matches.
      Parameters:
      matchExtension - The extension to match
      Returns:
      true if matches
      Since:
      4.7.0
    • matchesExtension

      public boolean matchesExtension(String matchExtension)
      Check if the extension matches.
      Parameters:
      matchExtension - The extension to match
      Returns:
      true if matches
      Since:
      4.6.3
    • getName

      public String getName()
      Returns:
      The name of the mime type without any parameters
    • getType

      public String getType()
      Returns:
      The type of the media type. For example for application/hal+json this would return "application"
    • getSubtype

      public String getSubtype()
      Returns:
      The subtype. For example for application/hal+json this would return "hal+json"
    • getExtension

      public String getExtension()
      Returns:
      The extension. For example for application/hal+json this would return "json"
    • getParameters

      public OptionalValues<String> getParameters()
      Returns:
      The parameters to the media type
    • getQuality

      public String getQuality()
      Returns:
      The quality of the Mime type
    • getQualityAsNumber

      public BigDecimal getQualityAsNumber()
      Returns:
      The quality in BigDecimal form
    • getVersion

      public String getVersion()
      Returns:
      The version of the Mime type
    • getCharset

      public Optional<Charset> getCharset()
      Returns:
      The charset of the media type if specified
    • length

      public int length()
      Specified by:
      length in interface CharSequence
    • charAt

      public char charAt(int index)
      Specified by:
      charAt in interface CharSequence
    • subSequence

      public CharSequence subSequence(int start, int end)
      Specified by:
      subSequence in interface CharSequence
    • isTextBased

      public boolean isTextBased()
      Returns:
      Whether the media type is text based
    • isTextBased

      public static boolean isTextBased(String contentType)
      Parameters:
      contentType - The content type
      Returns:
      Whether the content type is text based
    • validate

      @Internal public void validate(Runnable r)
      Validate this media type for sending as an HTTP header. This is an optimization to only run the validation once if possible. If the validation function does not throw, future calls to this method will not call the validation function again.
      Parameters:
      r - Validation function
    • toString

      public String toString()
      Specified by:
      toString in interface CharSequence
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object o)

      Only the name is matched. Parameters are not included.

      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • orderedOf

      public static List<MediaType> orderedOf(CharSequence... values)
      Returns the ordered media types for the given values.
      Parameters:
      values - The values
      Returns:
      The media types.
      Since:
      1.3.3
    • orderedOf

      public static List<MediaType> orderedOf(List<? extends CharSequence> values)
      Returns the ordered media types for the given values.
      Parameters:
      values - The values
      Returns:
      The media types.
      Since:
      1.3.3
    • of

      public static MediaType of(CharSequence mediaType)
      Create a new MediaType from the given text.
      Parameters:
      mediaType - The text
      Returns:
      The MediaType
    • of

      public static MediaType[] of(CharSequence... mediaType)
      Create a new MediaType from the given text.
      Parameters:
      mediaType - The text
      Returns:
      The MediaType
    • fromType

      public static Optional<MediaType> fromType(Class<?> type)
      Resolve the MediaType produced by the given type based on the Produces annotation.
      Parameters:
      type - The type
      Returns:
      An Optional MediaType
    • forExtension

      public static Optional<MediaType> forExtension(String extension)
      Resolve the MediaType for the given file extension.
      Parameters:
      extension - The file extension
      Returns:
      The MediaType
    • forFilename

      public static MediaType forFilename(String filename)
      Resolve the MediaType for the given file name. Defaults to text/plain.
      Parameters:
      filename - The file name
      Returns:
      The MediaType
    • compareTo

      public int compareTo(@NonNull @NonNull MediaType o2)
      Specified by:
      compareTo in interface Comparable<MediaType>