Класс MailcapCommandMap
- java.lang.Object
-
- javax.activation.CommandMap
-
- javax.activation.MailcapCommandMap
public class MailcapCommandMap extends CommandMap
MailcapCommandMap расширяет абстрактный класс CommandMap. Он реализует CommandMap, чья конфигурация основана на файлах mailcap (RFC 1524). MailcapCommandMap может настраиваться как программно, так и через конфигурационные файлы.
Порядок поиска файлов mailcap:
MailcapCommandMap ищет записи в файлах mailcap в различных местах системы пользователя. При запросах на поиск команд в MailcapCommandMap он ищет файлы mailcap в следующем порядке:
- Программно добавленные записи в экземпляр MailcapCommandMap.
- Файл
.mailcapв домашнем каталоге пользователя. - Файл <java.home>
/lib/mailcap. - Файл или ресурс с именем
META-INF/mailcap. - Файл или ресурс с именем
META-INF/mailcap.default(обычно находится только в файлеactivation.jar).
Формат файла mailcap:
Файлы mailcap должны соответствовать спецификации файла mailcap (RFC 1524, A User Agent Configuration Mechanism For Multimedia Mail Format Information). Формат файла состоит из записей, соответствующих определенным типам MIME. В общем случае, спецификация указывает приложения, которые клиенты должны использовать, когда сами не могут обработать указанный тип MIME. MailcapCommandMap расширяет эту спецификацию, используя механизм параметров в файлах mailcap, который позволяет задавать компоненты JavaBeans(tm) как соответствующие определённым командам для определённого типа MIME.
При парсинге файла mailcap, MailcapCommandMap распознаёт определённые сигнатуры параметров, в частности те, имена параметров, которые начинаются с x-java-. MailcapCommandMap использует эту сигнатуру для поиска записей команд для включения в свои регистры. Имена параметров с формой x-java-<name> считываются MailcapCommandMap как идентификаторы команд с именем имя. Когда имя равно
content-handler, MailcapCommandMap распознаёт класс, обозначенный этим параметром, как DataContentHandler. Все остальные команды обрабатываются обобщённо независимо от имени команды. Реализация команды определяется полным квалифицированным именем компонента JavaBean(tm). Например, команда для просмотра некоторых данных может быть задана как: x-java-view=com.foo.ViewBean.
Когда имя команды равно fallback-entry, значение команды может быть true или false. Запись для типа MIME, включающая параметр x-java-fallback-entry=true, определяет резервные команды для этого типа MIME, которые будут использоваться только в том случае, если не найдена запись без резервного копирования. Например, запись в формате text/*; ;
x-java-fallback-entry=true; x-java-view=com.sun.TextViewer задаёт команду просмотра, используемую для любого текстового типа MIME. Эта команда просмотра будет использована только в случае, если не найдена команда просмотра без резервного копирования для данного типа MIME.
Файлы mailcap, распознаваемые MailcapCommandMap, имеют следующий общий вид:
# Comments begin with a '#' and continue to the end of the line.
<mime type>; ; <parameter list>
# Where a parameter list consists of one or more parameters,
# where parameters look like: x-java-view=com.sun.TextViewer
# and a parameter list looks like:
text/plain; ; x-java-view=com.sun.TextViewer; x-java-edit=com.sun.TextEdit
# Note that mailcap entries that do not contain 'x-java' parameters
# and comply to RFC 1524 are simply ignored:
image/gif; /usr/dt/bin/sdtimage %s
- Since:
- 1.6
Конструкторы
| Конструктор и описание |
|---|
MailcapCommandMap()
Конструктор по умолчанию. |
MailcapCommandMap(InputStream is)
Конструктор, позволяющий вызывающей стороне указать потоковый ввод содержащий файл mailcap. |
MailcapCommandMap(String fileName)
Конструктор, позволяющий вызывающей стороне указать путь к файлу mailcap. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
addMailcap(String mail_cap)
Добавить записи в реестр. |
DataContentHandler |
createDataContentHandler(String mimeType)
Возвращает DataContentHandler для указанного типа MIME. |
CommandInfo[] |
getAllCommands(String mimeType)
Получить все доступные команды во всех файлах mailcap, известных этому экземпляру MailcapCommandMap для этого типа MIME. |
CommandInfo |
getCommand(String mimeType,
String cmdName)
Получить команду, соответствующую |
String[] |
getMimeTypes()
Получить все известные этому отображению типов MIME. |
String[] |
getNativeCommands(String mimeType)
Получить собственные команды для заданного типа MIME. |
CommandInfo[] |
getPreferredCommands(String mimeType)
Получить предпочтительный список команд для типа MIME. |
Методы, унаследованные от класса javax.activation.CommandMap
createDataContentHandler, getAllCommands, getCommand, getDefaultCommandMap, getPreferredCommands, setDefaultCommandMap
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Конструкторы
MailcapCommandMap
public MailcapCommandMap()
Конструктор по умолчанию.
MailcapCommandMap
public MailcapCommandMap(String fileName)
throws IOException
Конструктор, позволяющий вызывающей стороне указать путь к файлу mailcap.
- Параметры:
-
fileName- Имя файла mailcap для открытия - Исключение:
-
IOException- если к файлу нет доступа
MailcapCommandMap
public MailcapCommandMap(InputStream is)
Конструктор, позволяющий вызывающей стороне указать потоковый ввод содержащий файл mailcap.
- Параметры:
-
is- Потоковый ввод файла mailcap для открытия
Методы
getPreferredCommands
public CommandInfo[] getPreferredCommands(String mimeType)
Получить предпочтительный список команд для типа MIME. MailcapCommandMap ищет файлы mailcap, как описано выше в разделе Порядок поиска файлов mailcap.
Результат поиска — правильное подмножество доступных команд во всех файлах mailcap, известных этому экземпляру MailcapCommandMap. Первая запись для конкретной команды считается предпочтительной командой.
- Определено:
-
getPreferredCommandsв классеCommandMap - Параметры:
-
mimeType- тип MIME - Возвращает:
- объекты CommandInfo, представляющие предпочтительные команды.
getAllCommands
public CommandInfo[] getAllCommands(String mimeType)
Получить все доступные команды во всех файлах mailcap, известных этому экземпляру MailcapCommandMap для этого типа MIME.
- Определено:
-
getAllCommandsв классеCommandMap - Параметры:
-
mimeType- тип MIME - Возвращает:
- объекты CommandInfo, представляющие все команды.
getCommand
public CommandInfo getCommand(String mimeType,
String cmdName)
Получить команду, соответствующую cmdName для типа MIME.
- Определено:
-
getCommandв классеCommandMap - Параметры:
-
mimeType- тип MIME -
cmdName- имя команды - Возвращает:
- объект CommandInfo, соответствующий команде.
addMailcap
public void addMailcap(String mail_cap)
Добавить записи в реестр. Программно добавленные записи ищутся перед другими записями.
Передаваемая строка должна быть в формате mailcap.
- Параметры:
-
mail_cap- правильно отформатированная строка mailcap
createDataContentHandler
public DataContentHandler createDataContentHandler(String mimeType)
Возвращает DataContentHandler для указанного типа MIME.
- Определено:
-
createDataContentHandlerв классеCommandMap - Параметры:
-
mimeType- тип MIME - Возвращает:
- DataContentHandler
getMimeTypes
public String[] getMimeTypes()
Получить все типы MIME, известные этому отображению.
- Переопределяет:
-
getMimeTypesв классеCommandMap - Возвращает:
- массив типов MIME в виде строк
- Since:
- JAF 1.1
getNativeCommands
public String[] getNativeCommands(String mimeType)
Получить собственные команды для данного типа MIME. Возвращает массив строк, где каждая строка — полная запись файла mailcap. Приложению потребуется разобрать запись, чтобы извлечь фактическую команду и любые необходимые атрибуты. См. RFC 1524 для получения подробностей синтаксиса записи mailcap. Возвращаются только записи mailcap, в которых указана команда просмотра для указанного типа MIME.
- Возвращает:
- массив записей собственных команд
- Since:
- JAF 1.1
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.