org.springframework.util

## Class MimeTypeUtils

- java.lang.Object
- - org.springframework.util.MimeTypeUtils

-     public abstract class MimeTypeUtils
      extends Object

  Miscellaneous `MimeType` utility methods.
  Since:
    4.0
  Author:
    Arjen Poutsma, Rossen Stoyanchev, Dimitrios Liapis, Brian Clozel, Sam Brannen

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static MimeType` | `ALL` Public constant mime type that includes all media ranges (i.e.
    `static String` | `ALL_VALUE` A String equivalent of `ALL`.
    `static MimeType` | `APPLICATION_GRAPHQL` Public constant mime type for `application/graphql+json`.
    `static String` | `APPLICATION_GRAPHQL_VALUE` A String equivalent of `APPLICATION_GRAPHQL`.
    `static MimeType` | `APPLICATION_JSON` Public constant mime type for `application/json`.
    `static String` | `APPLICATION_JSON_VALUE` A String equivalent of `APPLICATION_JSON`.
    `static MimeType` | `APPLICATION_OCTET_STREAM` Public constant mime type for `application/octet-stream`.
    `static String` | `APPLICATION_OCTET_STREAM_VALUE` A String equivalent of `APPLICATION_OCTET_STREAM`.
    `static MimeType` | `APPLICATION_XML` Public constant mime type for `application/xml`.
    `static String` | `APPLICATION_XML_VALUE` A String equivalent of `APPLICATION_XML`.
    `static MimeType` | `IMAGE_GIF` Public constant mime type for `image/gif`.
    `static String` | `IMAGE_GIF_VALUE` A String equivalent of `IMAGE_GIF`.
    `static MimeType` | `IMAGE_JPEG` Public constant mime type for `image/jpeg`.
    `static String` | `IMAGE_JPEG_VALUE` A String equivalent of `IMAGE_JPEG`.
    `static MimeType` | `IMAGE_PNG` Public constant mime type for `image/png`.
    `static String` | `IMAGE_PNG_VALUE` A String equivalent of `IMAGE_PNG`.
    `static Comparator<MimeType>` | `SPECIFICITY_COMPARATOR` Comparator used by `sortBySpecificity(List)`.
    `static MimeType` | `TEXT_HTML` Public constant mime type for `text/html`.
    `static String` | `TEXT_HTML_VALUE` A String equivalent of `TEXT_HTML`.
    `static MimeType` | `TEXT_PLAIN` Public constant mime type for `text/plain`.
    `static String` | `TEXT_PLAIN_VALUE` A String equivalent of `TEXT_PLAIN`.
    `static MimeType` | `TEXT_XML` Public constant mime type for `text/xml`.
    `static String` | `TEXT_XML_VALUE` A String equivalent of `TEXT_XML`.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MimeTypeUtils()`

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static byte[]` | `generateMultipartBoundary()` Generate a random MIME boundary as bytes, often used in multipart mime types.
    `static String` | `generateMultipartBoundaryString()` Generate a random MIME boundary as String, often used in multipart mime types.
    `static MimeType` | `parseMimeType(String mimeType)` Parse the given String into a single `MimeType`.
    `static List<MimeType>` | `parseMimeTypes(String mimeTypes)` Parse the comma-separated string into a list of `MimeType` objects.
    `static void` | `sortBySpecificity(List<MimeType> mimeTypes)` Sorts the given list of `MimeType` objects by specificity.
    `static List<String>` | `tokenize(String mimeTypes)` Tokenize the given comma-separated string of `MimeType` objects into a `List<String>`.
    `static String` | `toString(Collection<? extends MimeType> mimeTypes)` Return a string representation of the given list of `MimeType` objects.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### SPECIFICITY_COMPARATOR

          public static final Comparator<MimeType> SPECIFICITY_COMPARATOR

      Comparator used by `sortBySpecificity(List)`.

    - #### ALL

          public static final MimeType ALL

      Public constant mime type that includes all media ranges (i.e. "*/*").

    - #### ALL_VALUE

          public static final String ALL_VALUE

      A String equivalent of `ALL`.
      See Also:
        Constant Field Values

    - #### APPLICATION_GRAPHQL

          public static final MimeType APPLICATION_GRAPHQL

      Public constant mime type for `application/graphql+json`.
      Since:
        5.3.19
      See Also:
        GraphQL over HTTP spec

    - #### APPLICATION_GRAPHQL_VALUE

          public static final String APPLICATION_GRAPHQL_VALUE

      A String equivalent of `APPLICATION_GRAPHQL`.
      Since:
        5.3.19
      See Also:
        Constant Field Values

    - #### APPLICATION_JSON

          public static final MimeType APPLICATION_JSON

      Public constant mime type for `application/json`.

    - #### APPLICATION_JSON_VALUE

          public static final String APPLICATION_JSON_VALUE

      A String equivalent of `APPLICATION_JSON`.
      See Also:
        Constant Field Values

    - #### APPLICATION_OCTET_STREAM

          public static final MimeType APPLICATION_OCTET_STREAM

      Public constant mime type for `application/octet-stream`.

    - #### APPLICATION_OCTET_STREAM_VALUE

          public static final String APPLICATION_OCTET_STREAM_VALUE

      A String equivalent of `APPLICATION_OCTET_STREAM`.
      See Also:
        Constant Field Values

    - #### APPLICATION_XML

          public static final MimeType APPLICATION_XML

      Public constant mime type for `application/xml`.

    - #### APPLICATION_XML_VALUE

          public static final String APPLICATION_XML_VALUE

      A String equivalent of `APPLICATION_XML`.
      See Also:
        Constant Field Values

    - #### IMAGE_GIF

          public static final MimeType IMAGE_GIF

      Public constant mime type for `image/gif`.

    - #### IMAGE_GIF_VALUE

          public static final String IMAGE_GIF_VALUE

      A String equivalent of `IMAGE_GIF`.
      See Also:
        Constant Field Values

    - #### IMAGE_JPEG

          public static final MimeType IMAGE_JPEG

      Public constant mime type for `image/jpeg`.

    - #### IMAGE_JPEG_VALUE

          public static final String IMAGE_JPEG_VALUE

      A String equivalent of `IMAGE_JPEG`.
      See Also:
        Constant Field Values

    - #### IMAGE_PNG

          public static final MimeType IMAGE_PNG

      Public constant mime type for `image/png`.

    - #### IMAGE_PNG_VALUE

          public static final String IMAGE_PNG_VALUE

      A String equivalent of `IMAGE_PNG`.
      See Also:
        Constant Field Values

    - #### TEXT_HTML

          public static final MimeType TEXT_HTML

      Public constant mime type for `text/html`.

    - #### TEXT_HTML_VALUE

          public static final String TEXT_HTML_VALUE

      A String equivalent of `TEXT_HTML`.
      See Also:
        Constant Field Values

    - #### TEXT_PLAIN

          public static final MimeType TEXT_PLAIN

      Public constant mime type for `text/plain`.

    - #### TEXT_PLAIN_VALUE

          public static final String TEXT_PLAIN_VALUE

      A String equivalent of `TEXT_PLAIN`.
      See Also:
        Constant Field Values

    - #### TEXT_XML

          public static final MimeType TEXT_XML

      Public constant mime type for `text/xml`.

    - #### TEXT_XML_VALUE

          public static final String TEXT_XML_VALUE

      A String equivalent of `TEXT_XML`.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### MimeTypeUtils

          public MimeTypeUtils()

  - ### Method Detail

    - #### parseMimeType

          public static MimeType parseMimeType(String mimeType)

      Parse the given String into a single `MimeType`. Recently parsed `MimeType` are cached for further retrieval.
      Parameters:
        `mimeType` - the string to parse
      Returns:
        the mime type
      Throws:
        `InvalidMimeTypeException` - if the string cannot be parsed

    - #### parseMimeTypes

          public static List<MimeType> parseMimeTypes(String mimeTypes)

      Parse the comma-separated string into a list of `MimeType` objects.
      Parameters:
        `mimeTypes` - the string to parse
      Returns:
        the list of mime types
      Throws:
        `InvalidMimeTypeException` - if the string cannot be parsed

    - #### tokenize

          public static List<String> tokenize(String mimeTypes)

      Tokenize the given comma-separated string of `MimeType` objects into a `List<String>`. Unlike simple tokenization by ",", this method takes into account quoted parameters.
      Parameters:
        `mimeTypes` - the string to tokenize
      Returns:
        the list of tokens
      Since:
        5.1.3

    - #### toString

          public static String toString(Collection<? extends MimeType> mimeTypes)

      Return a string representation of the given list of `MimeType` objects.
      Parameters:
        `mimeTypes` - the string to parse
      Returns:
        the list of mime types
      Throws:
        `IllegalArgumentException` - if the String cannot be parsed

    - #### sortBySpecificity

          public static void sortBySpecificity(List<MimeType> mimeTypes)

      Sorts the given list of `MimeType` objects by specificity.

      Given two mime types:

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

      For example:

      > audio/basic < audio/* < */*

      > audio/basic;level=1 < audio/basic

      > audio/basic == text/html

      > audio/basic == audio/wave

      Parameters:
        `mimeTypes` - the list of mime types to be sorted
      See Also:
        HTTP 1.1: Semantics and Content, section 5.3.2

    - #### generateMultipartBoundary

          public static byte[] generateMultipartBoundary()

      Generate a random MIME boundary as bytes, often used in multipart mime types.

    - #### generateMultipartBoundaryString

          public static String generateMultipartBoundaryString()

      Generate a random MIME boundary as String, often used in multipart mime types.