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

クラスDataHandler

  • すべての実装されたインタフェース:
    Transferable


    public class DataHandler
    extends Object
    implements Transferable
    DataHandlerクラスは、多数のさまざまなソースや形式に利用できるデータに対する一貫したインタフェースを提供します。 DataContentHandlerを使用して、文字列変換やそれに関連する操作のための簡単なストリームを管理します。 また、データを処理できるコマンドへのアクセスも提供します。 これらのコマンドは、CommandMapを使用して検索できます。

    DataHandlerとTransferableインタフェース

    DataHandlerは、Transferableインタフェースを実装して、カット&ペーストやドラッグ&ドロップなどのAWTデータ転送操作にデータを使用できるようにします。 Transferableインタフェースの実装は、DataHandlerの特定のインスタンスで表現されたデータのMIMEタイプに対応する、インストール済みのDataContentHandlerオブジェクトの可用性に依存します。

    DataHandlerとCommandMap

    DataHandlerは、コマンドに関する要求(getCommand、getAllCommands、getPreferredCommands)を処理するために使用する現在のCommandMapを追跡します。 DataHandlerの各インスタンスには、setCommandMapメソッドによってCommandMapが関連付けられている場合があります。 CommandMapが設定されていない場合は、CommandMapのgetDefaultCommandMapメソッドを呼び出して、それが返す値を使用します。 詳細は、CommandMapを参照してください。

    DataHandlerとURL

    現在のDataHandlerの実装では、DataHandlerがURLを使って構築されると、URLDataSourceのprivateインスタンスを作成します。

    導入されたバージョン:
    1.6
    関連項目:
    CommandMapDataContentHandlerDataSourceURLDataSource
    • コンストラクタの詳細

      • DataHandler

        public DataHandler​(DataSource ds)
        指定されたDataSourceを参照するDataHandlerインスタンスを作成します。 データは、バイト・ストリーム形式で格納されています。 DataSourceは、データにアクセスするためのInputStreamを提供します。
        パラメータ:
        ds - DataSource
      • DataHandler

        public DataHandler​(Object obj,
                           String mimeType)
        このMIMEタイプのオブジェクトを表すDataHandlerインスタンスを作成します。 このコンストラクタは、アプリケーションがメモリー上にJavaオブジェクト形式のデータ表現をすでに持っている場合に使用します。
        パラメータ:
        obj - Javaオブジェクト
        mimeType - オブジェクトのMIMEタイプ
      • DataHandler

        public DataHandler​(URL url)
        URLを参照するDataHandlerインスタンスを作成します。 DataHandlerは、URLを表すためにURLDataSourceインスタンスを内部的に作成します。
        パラメータ:
        url - URLオブジェクト
    • メソッドの詳細

      • getDataSource

        public DataSource getDataSource​()
        このDataHandlerのインスタンスに関連付けられたDataSourceを返します。

        DataHandlerがDataSourceを使ってインスタンス化された場合、このメソッドはDataHandlerオブジェクトの作成に使われたDataSourceを返します。 それ以外の場合、DataHandlerはDataHandlerの構築に使われたデータからDataSourceを構築します。 DataSourceを使ってインスタンス化されていない DataHandler用に作成されたDataSourceは、パフォーマンス上の理由でキャッシュに格納されます。

        戻り値:
        このDataHandlerの有効なDataSourceオブジェクト
      • getName

        public String getName​()
        データ・オブジェクトの名前を返します。 このDataHandlerがDataSourceを使って作成された場合は、DataSource.getNameメソッドを呼び出します。そうでない場合は、nullを返します。
        戻り値:
        オブジェクトの名前
      • getContentType

        public String getContentType​()
        このオブジェクトのMIMEタイプを返します。これは、ソース・オブジェクトから取り出されるものです。 パラメータが指定されている完全なタイプです。
        戻り値:
        MIMEタイプ
      • getInputStream

        public InputStream getInputStream​()
                                   throws IOException
        このオブジェクトのInputStreamを取得します。

        DataHandlerがDataSourceを使ってインスタンス化された場合、DataHandlerはDataSource.getInputStreamメソッドを呼び出し、その結果を呼出し側に返します。

        DataHandlerがオブジェクトを使ってインスタンス化された場合、DataHandlerはまずそのオブジェクトのDataContentHandlerを捜し出そうとします。 このMIMEタイプのDataContentHandlerが見つからない場合は、UnsupportedDataTypeExceptionをスローします。 見つかった場合は、パイプとスレッドを作成します。 スレッドはDataContentHandlerのwriteToメソッドを使って、ストリーム・データをパイプの一端に書き込みます。 パイプのもう一端は、呼出し側に返されます。 データをコピーするためにスレッドが作成されるため、コピー時に発生するIOExceptionが呼出し側に送り返されないことがあります。 この場合は、空のストリームが返されます。

        戻り値:
        このデータを表すInputStream
        例外:
        IOException - 入出力エラーが発生した場合
        関連項目:
        DataContentHandler.writeTo(java.lang.Object, java.lang.String, java.io.OutputStream), UnsupportedDataTypeException
      • writeTo

        public void writeTo​(OutputStream os)
                     throws IOException
        データをOutputStreamに書き込みます。

        DataHandlerがDataSourceを使って作成された場合、writeToはInputStreamを取出し、InputStreamから取り出したバイトを渡されたOutputStreamにコピーします。

        DataHandlerがオブジェクトを使って作成された場合、writeToはそのオブジェクト・タイプのDataContentHandlerを検索します。 DataContentHandlerが見つかると、DataContentHandlerwriteToメソッドを呼び出します。

        パラメータ:
        os - 書込み先のOutputStream
        例外:
        IOException - 入出力エラーが発生した場合
      • getOutputStream

        public OutputStream getOutputStream​()
                                     throws IOException
        このDataHandlerのOutputStreamを取得して、基になるデータを上書きできるようにします。 DataHandlerがDataSourceを使って作成された場合は、DataSourceのgetOutputStreamメソッドが呼び出されます。 それ以外の場合はnullが返されます。
        戻り値:
        OutputStream
        例外:
        IOException - OutputStreamの作成に失敗した場合
        関連項目:
        DataSource.getOutputStream(), URLDataSource
      • getTransferDataFlavors

        public DataFlavor[] getTransferDataFlavors​()
        このデータが利用できるDataFlavorを返します。

        データを提供することができるフレーバを示すDataFlavorオブジェクトの配列を返します。 配列は通常、データ提供のための優先設定に従って、もっとも詳しく記述されているものから、そうでないものへ順序付けされます。

        DataHandlerは、データのMIMEタイプに対応するDataContentHandlerを捜し出そうとします。 見つかった場合は、そのDataContentHandlerのgetTransferDataFlavorsメソッドを呼び出します。

        DataContentHandlerが見つからない場合や、DataHandlerがDataSource (またはURL)を使って作成された場合は、このオブジェクトのMIMEタイプとjava.io.InputStreamクラスを表すDataFlavorが1つ返されます。 DataHandlerがオブジェクトとMIMEタイプを使って作成された場合は、このオブジェクトのMIMEタイプとクラスを表すDataFlavorが返されます。

        定義:
        getTransferDataFlavors、インタフェース: Transferable
        戻り値:
        このデータを転送できるデータ・フレーバの配列
        関連項目:
        DataContentHandler.getTransferDataFlavors()
      • isDataFlavorSupported

        public boolean isDataFlavorSupported​(DataFlavor flavor)
        指定されたデータ・フレーバが、このオブジェクトに対してサポートされているかどうかを返します。

        このメソッドは、getTransferDataFlavorsから返される各DataFlavorを指定のフレーバと比較します。

        定義:
        isDataFlavorSupported、インタフェース: Transferable
        パラメータ:
        flavor - データに対して要求されたフレーバ
        戻り値:
        データ・フレーバがサポートされている場合はtrue
        関連項目:
        getTransferDataFlavors()
      • getTransferData

        public Object getTransferData​(DataFlavor flavor)
                               throws UnsupportedFlavorException,
                                      IOException
        転送されるデータを表すオブジェクトを返します。 返されるオブジェクトのクラスは、データ・フレーバの表現クラスで定義されます。

        DataHandlerがDataSourceまたはURLを使って作成された場合

        DataHandlerは、このMIMEタイプのDataContentHandlerを見つけようとします。 見つかった場合は、渡されたDataFlavorとデータのタイプがそのgetTransferDataメソッドに渡されます。 DataContentHandlerが見つからない場合は、フレーバにこのオブジェクトのMIMEタイプとjava.io.InputStreamクラスが指定されていれば、このオブジェクトのInputStreamが返されます。 指定されていない場合は、UnsupportedFlavorExceptionがスローされます。

        DataHandlerがオブジェクトを使って作成された場合

        DataHandlerは、このMIMEタイプのDataContentHandlerを見つけようとします。 見つかった場合は、渡されたDataFlavorとデータのタイプがそのgetTransferDataメソッドに渡されます。 DataContentHandlerが見つからない場合は、フレーバにこのオブジェクトのMIMEタイプとクラスが指定されていれば、このDataHandlerが参照したオブジェクトが返されます。 指定されていない場合は、UnsupportedFlavorExceptionがスローされます。

        定義:
        getTransferData、インタフェース: Transferable
        パラメータ:
        flavor - データに対して要求されたフレーバ
        戻り値:
        オブジェクト
        例外:
        UnsupportedFlavorException - データが要求されたフレーバに変換されなかった場合
        IOException - 入出力エラーが発生した場合
        関連項目:
        ActivationDataFlavor
      • setCommandMap

        public void setCommandMap​(CommandMap commandMap)
        このDataHandlerが使用するCommandMapを設定します。 これをnullに設定すると、CommandMapはCommandMap.getDefaultCommandMapメソッドによって返されるCommandMapに戻されます。 CommandMapを変更したり、それをnullに設定したりすると、以前のCommandMapにキャッシュされていたデータはすべて消去されます。
        パラメータ:
        commandMap - このDataHandlerで使用するCommandMap
        関連項目:
        CommandMap.setDefaultCommandMap(javax.activation.CommandMap)
      • getPreferredCommands

        public CommandInfo[] getPreferredCommands​()
        このタイプのデータの優先コマンドを返します。 このメソッドは、このDataHandlerのインスタンスに関連付けられたCommandMapのgetPreferredCommandsメソッドを呼び出します。 このメソッドは、利用できるコマンドのサブセットを表す配列を返します。 このDataHandlerによって表されたMIMEタイプのコマンドが複数ある場合は、インストールされたCommandMapによって該当するコマンドが選択されます。
        戻り値:
        優先コマンドを表すCommandInfoオブジェクト
        関連項目:
        CommandMap.getPreferredCommands(java.lang.String)
      • getAllCommands

        public CommandInfo[] getAllCommands​()
        このタイプのデータのコマンドをすべて返します。 このメソッドは、このDataHandlerによって表されたタイプのデータのコマンドをすべて含む配列を返します。 このDataHandlerによって表された基になるデータのMIMEタイプは、このDataHandlerに関連付けられたCommandMapのgetAllCommandsメソッドの呼出しに使用されます。
        戻り値:
        すべてのコマンドを表すCommandInfoオブジェクト
        関連項目:
        CommandMap.getAllCommands(java.lang.String)
      • getCommand

        public CommandInfo getCommand​(String cmdName)
        cmdNameというコマンドを取得します。 このDataHandlerにインストールされているCommandMapよって定義された検索セマンティックスを使用します。 このDataHandlerによって表された基になるデータのMIMEタイプは、このDataHandlerに関連付けられたCommandMapのgetCommandメソッドの呼出しに使用されます。
        パラメータ:
        cmdName - コマンド名
        戻り値:
        このコマンドに対応するCommandInfo
        関連項目:
        CommandMap.getCommand(java.lang.String, java.lang.String)
      • getContent

        public Object getContent​()
                          throws IOException
        適切なオブジェクト形式でデータを返します。

        DataHandlerがオブジェクトを使ってインスタンス化された場合は、そのオブジェクトを返します。

        DataHandlerがDataSourceを使ってインスタンス化された場合は、DataContentHandlerを使用して、このDataHandlerによって表されたデータのコンテンツ・オブジェクトを返します。 このデータのタイプのDataContentHandlerが見つからない場合は、DataHandlerによってこのデータのInputStreamが返されます。

        戻り値:
        コンテンツ
        例外:
        IOException - この操作時にIOExceptionが発生した場合。
      • getBean

        public Object getBean​(CommandInfo cmdinfo)
        CommandInfoオブジェクトを取得し、対応するコマンド(通常はJavaBeanコンポーネント)をインスタンス化する便利なメソッドです。

        このメソッドは、javax.activation.DataHandlerクラス自体のロードに使用されたClassLoaderを使って、CommandInfoのgetCommandObjectメソッドを呼び出します。

        パラメータ:
        cmdinfo - コマンドに対応するCommandInfo
        戻り値:
        インスタンス化されたコマンド・オブジェクト
      • setDataContentHandlerFactory

        public static void setDataContentHandlerFactory​(DataContentHandlerFactory newFactory)
        DataContentHandlerFactoryを設定します。 DataContentHandlerを検索する場合は、最初にDataContentHandlerFactoryが呼び出されます。 DataContentHandlerFactoryは一度しか設定できません。

        DataContentHandlerFactoryがすでに設定されている場合は、Errorがスローされます。

        パラメータ:
        newFactory - DataContentHandlerFactory
        例外:
        Error - ファクトリがすでに定義されている場合。
        関連項目:
        DataContentHandlerFactory