モジュール java.activation
パッケージ javax.activation

クラスMailcapCommandMap


  • public class MailcapCommandMap
    extends CommandMap
    MailcapCommandMapは、抽象クラスCommandMapを拡張します。 mailcapファイル(RFC 1524)に基づいて構成されているCommandMapを実装します。 MailcapCommandMapは、プログラムによっても構成ファイルを介しても構成できます。

    mailcapファイルの検索順序

    MailcapCommandMapは、ユーザーのシステムのさまざまな場所を検索してmailcapファイルのエントリを見つけます。 MailcapCommandMapでコマンド検索の要求が出されると、次の順序でmailcapファイルを検索します。

    1. プログラムによってMailcapCommandMapインスタンスに追加されたエントリ
    2. ユーザーのホーム・ディレクトリにあるファイル.mailcap
    3. Javaランタイムのファイルmailcap
    4. META-INF/mailcapというファイルまたはリソース。
    5. META-INF/mailcap.defaultというファイルまたはリソース(通常はactivation.jarファイルだけにあります)。

    (現在の実装では、ディレクトリjava.home /confが存在する場合はJavaランタイムのmailcapファイルが検索され、存在しない場合はjava.home /libディレクトリにあります。java.homeは"java.home"システム・プロパティの値です。 "conf"ディレクトリはJDK 9で導入されたことに注意してください。

    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はこのシグネチャを使って、そのレジストリに格納するためのコマンド・エントリを見つけます。 MailcapCommandMapは、nameという名前のコマンドを識別するときに、x-java-<name>というパラメータ名を読み取ります。 name content-handlerであるときは、このパラメータによって示されたクラスはDataContentHandlerとみなされます。 ほかのすべてのコマンドは、コマンド名に関係なく包括的に処理されます。 コマンドの実装は、JavaBean(TM)コンポーネントの完全指定のクラス名によって指定されます。 たとえば、何らかのデータを表示するコマンドは、x-java-view=com.foo.ViewBeanと指定できます。

    コマンド名がfallback-entryである場合、コマンドの値はtrueまたはfalseになります。 パラメータx-java-fallback-entry=trueを含むMIMEタイプのエントリは、そのMIMEタイプの代替コマンドを定義します。このコマンドは、非代替のエントリを見つけることができない場合にのみ使用されます。 たとえば、text/*; ; x-java-fallback-entry=true; x-java-view=com.sun.TextViewer形式のエントリは、任意のテキストMIMEタイプで使用する表示コマンドを指定します。 この表示コマンドは、MIMEタイプの非代替表示コマンドが見つからない場合にのみ使用されます。

    MailcapCommandMapに対応しているmailcapファイルの一般的な形式は次のとおりです。

    
     # 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
     
    導入されたバージョン:
    1.6
    • コンストラクタの詳細

      • MailcapCommandMap

        public MailcapCommandMap()
        デフォルトのコンストラクタです。
      • MailcapCommandMap

        public MailcapCommandMap​(String fileName)
                          throws IOException
        呼出し側がmailcapファイルのパスを指定できるようにするコンストラクタです。
        パラメータ:
        fileName - 開くmailcapファイルの名前
        例外:
        IOException - ファイルにアクセスできない場合
      • MailcapCommandMap

        public MailcapCommandMap​(InputStream is)
        呼出し側がmailcapファイルを含むInputStreamを指定できるようにするコンストラクタです。
        パラメータ:
        is - 開くmailcapファイルのInputStream
    • メソッドの詳細

      • getPreferredCommands

        public CommandInfo[] getPreferredCommands​(String mimeType)
        MIMEタイプの優先コマンド・リストを取得します。 MailcapCommandMapは、上記の「Mailcapファイルの検索順序」に従ってmailcapファイルを検索します。

        検索結果は、このMailcapCommandMapのインスタンスが認識しているすべてのmailcapファイル内の、利用可能なコマンドの適切なサブセットです。 特定コマンドの最初のエントリは、優先コマンドとみなされます。

        定義:
        getPreferredCommands、クラス: CommandMap
        パラメータ:
        mimeType - MIMEタイプ
        戻り値:
        優先コマンドを表すCommandInfoオブジェクト
      • getAllCommands

        public CommandInfo[] getAllCommands​(String mimeType)
        このMIMEタイプのこのMailcapCommandMapのインスタンスが認識しているすべてのmailcapファイル内の、利用可能なコマンドをすべて取得します。
        定義:
        getAllCommands、クラス: CommandMap
        パラメータ:
        mimeType - MIMEタイプ
        戻り値:
        すべてのコマンドを表すCommandInfoオブジェクト
      • getCommand

        public CommandInfo getCommand​(String mimeType,
                                      String cmdName)
        このMIMEタイプのcmdNameに対応するコマンドを取得します。
        定義:
        getCommand、クラス: CommandMap
        パラメータ:
        mimeType - MIMEタイプ
        cmdName - コマンド名
        戻り値:
        このコマンドに対応するCommandInfoオブジェクト
      • addMailcap

        public void addMailcap​(String mail_cap)
        エントリをレジストリに追加します。 プログラムによって追加されたエントリは、ほかのエントリに優先して検索されます。

        渡される文字列は、mailcap形式でなければいけません。

        パラメータ:
        mail_cap - 正しい形式で書かれたmailcap文字列
      • createDataContentHandler

        public DataContentHandler createDataContentHandler​(String mimeType)
        指定のMIMEタイプのDataContentHandlerを返します。
        定義:
        createDataContentHandler、クラス: CommandMap
        パラメータ:
        mimeType - MIMEタイプ
        戻り値:
        DataContentHandler
      • getMimeTypes

        public String[] getMimeTypes()
        このコマンド・マップで認識されるすべてのMIMEタイプを取得します。
        オーバーライド:
        getMimeTypes、クラス: CommandMap
        戻り値:
        文字列であるMIMEタイプの配列
        導入されたバージョン:
        1.6, JAF 1.1
      • getNativeCommands

        public String[] getNativeCommands​(String mimeType)
        指定したMIMEタイプのネイティブ・コマンドを取得します。 各文字列がmailcapファイル・エントリ全体である、文字列の配列を返します。 アプリケーションは、必要な属性に加えて実際のコマンドを抽出するために、このエントリを構文解析する必要があります。 mailcapエントリの構文の詳細は、RFC 1524を参照してください。 返されるのは、指定したMIMEタイプの表示コマンドを指定するmailcapエントリだけです。
        パラメータ:
        mimeType - MIMEタイプ
        戻り値:
        ネイティブ・コマンド・エントリの配列
        導入されたバージョン:
        1.6, JAF 1.1