Class MediaType

java.lang.Object
io.micronaut.http.MediaType
All Implemented Interfaces:
CharSequence

public class MediaType extends Object implements CharSequence
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:
    • 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.
    • 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
    • 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.
    • 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.
    • 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

      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.
    • 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_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.
    • 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.
    • 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.
    • 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_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.
    • 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.
    • 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(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(String name, 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(String name, 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(String name, String extension, 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
    • 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