Package org.apache.sling.commons.mime

# Interface MimeTypeProvider

@ConsumerType public interface MimeTypeProvider
The `MimeTypeProvider` interface defines an API for services which are asked for MIME type mappings for unknown MIME types or extensions.

It is important to understand, that services registered with this interface are only called as a last resort and that the first service asked and replying with a non-`null` answer wins. Specifically if a MIME type mapping is configured by default or as an extension to the MIME type service, MimeTypeProvider services are not queried.

This interface may be implemented by bundles wishing to provide control over how extensions are mapped to MIME types and vice-versa.

## Method Summary

Modifier and Type
Method
Description
`String`
`getExtension(String mimeType)`
Returns the primary name extension to which the given `mimeType` maps.
`String`
`getMimeType(String name)`
Returns the MIME type of the extension of the given `name`.

## Method Details

### getMimeType

String getMimeType(String name)
Returns the MIME type of the extension of the given `name`. The extension is the part of the name after the last dot. If the name does not contain a dot, the name as a whole is assumed to be the extension.

Parameters:
  `name` - The name for which the MIME type is to be returned.
Returns:
  The MIME type for the extension of the name. If the extension cannot be mapped to a MIME type or `name` is `null`, `null` is returned.
See Also:
  - `getExtension(String)`

### getExtension

String getExtension(String mimeType)
Returns the primary name extension to which the given `mimeType` maps. The returned extension must map to the given `mimeType` when fed to the `getMimeType(String)` method. In other words, the expression `mimeType.equals(getMimeType(getExtension(mimeType)))` must always be `true` for any non-`null` MIME type.

A MIME type may be mapped to multiple extensions (e.g. `text/plain` to `txt`, `log`, ...). This method is expected to returned one of those extensions. It is up to the implementation to select an appropriate extension if multiple mappings exist for a single MIME type.

Parameters:
  `mimeType` - The MIME type whose primary extension is requested.
Returns:
  A extension which maps to the given MIME type or `null` if no such mapping exists.
See Also:
  - `getMimeType(String)`