public class DataHandler extends Object implements Transferable
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インスタンスを作成します。
CommandMap
、DataContentHandler
、DataSource
、URLDataSource
コンストラクタと説明 |
---|
DataHandler(DataSource ds)
指定されたDataSourceを参照する
DataHandler インスタンスを作成します。 |
DataHandler(Object obj, String mimeType)
このMIMEタイプのオブジェクトを表す
DataHandler インスタンスを作成します。 |
DataHandler(URL url)
URLを参照する
DataHandler インスタンスを作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
CommandInfo[] |
getAllCommands()
このタイプのデータのコマンドをすべて返します。
|
Object |
getBean(CommandInfo cmdinfo)
CommandInfoオブジェクトを取得し、対応するコマンド(通常はJavaBeanコンポーネント)をインスタンス化する便利なメソッドです。
|
CommandInfo |
getCommand(String cmdName)
cmdNameというコマンドを取得します。
|
Object |
getContent()
適切なオブジェクト形式でデータを返します。
|
String |
getContentType()
このオブジェクトのMIMEタイプを返します。これは、ソース・オブジェクトから取り出されるものです。
|
DataSource |
getDataSource()
このDataHandlerのインスタンスに関連付けられたDataSourceを返します。
|
InputStream |
getInputStream()
このオブジェクトのInputStreamを取得します。
|
String |
getName()
データ・オブジェクトの名前を返します。
|
OutputStream |
getOutputStream()
このDataHandlerのOutputStreamを取得して、基になるデータを上書きできるようにします。
|
CommandInfo[] |
getPreferredCommands()
このタイプのデータの優先コマンドを返します。
|
Object |
getTransferData(DataFlavor flavor)
転送されるデータを表すオブジェクトを返します。
|
DataFlavor[] |
getTransferDataFlavors()
このデータが利用できるDataFlavorを返します。
|
boolean |
isDataFlavorSupported(DataFlavor flavor)
指定されたデータ・フレーバが、このオブジェクトに対してサポートされているかどうかを返します。
|
void |
setCommandMap(CommandMap commandMap)
このDataHandlerが使用するCommandMapを設定します。
|
static void |
setDataContentHandlerFactory(DataContentHandlerFactory newFactory)
DataContentHandlerFactoryを設定します。
|
void |
writeTo(OutputStream os)
データを
OutputStream に書き込みます。 |
public DataHandler(DataSource ds)
DataHandler
インスタンスを作成します。データは、バイト・ストリーム形式で格納されています。DataSourceは、データにアクセスするためのInputStreamを提供します。ds
- DataSourcepublic DataHandler(Object obj, String mimeType)
DataHandler
インスタンスを作成します。このコンストラクタは、アプリケーションがメモリー上にJavaオブジェクト形式のデータ表現をすでに持っている場合に使用します。obj
- JavaオブジェクトmimeType
- オブジェクトのMIMEタイプpublic DataHandler(URL url)
DataHandler
インスタンスを作成します。DataHandlerは、URLを表すためにURLDataSource
インスタンスを内部的に作成します。url
- URLオブジェクトpublic DataSource getDataSource()
DataHandlerがDataSourceを使ってインスタンス化された場合、このメソッドはDataHandlerオブジェクトの作成に使われたDataSourceを返します。それ以外の場合、DataHandlerはDataHandlerの構築に使われたデータからDataSourceを構築します。DataSourceを使ってインスタンス化されていない DataHandler用に作成されたDataSourceは、パフォーマンス上の理由でキャッシュに格納されます。
public String getName()
DataSource.getName
メソッドを呼び出します。そうでない場合は、nullを返します。public String getContentType()
public InputStream getInputStream() throws IOException
DataHandlerがDataSourceを使ってインスタンス化された場合、DataHandlerはDataSource.getInputStream
メソッドを呼び出し、その結果を呼出し側に返します。
DataHandlerがオブジェクトを使ってインスタンス化された場合、DataHandlerはまずそのオブジェクトのDataContentHandlerを捜し出そうとします。このMIMEタイプのDataContentHandlerが見つからない場合は、UnsupportedDataTypeExceptionをスローします。見つかった場合は、パイプとスレッドを作成します。スレッドはDataContentHandlerのwriteTo
メソッドを使って、ストリーム・データをパイプの一端に書き込みます。パイプのもう一端は、呼出し側に返されます。データをコピーするためにスレッドが作成されるため、コピー時に発生するIOExceptionが呼出し側に送り返されないことがあります。この場合は、空のストリームが返されます。
IOException
- 入出力エラーが発生した場合DataContentHandler.writeTo(java.lang.Object, java.lang.String, java.io.OutputStream)
, UnsupportedDataTypeException
public void writeTo(OutputStream os) throws IOException
OutputStream
に書き込みます。DataHandlerがDataSourceを使って作成された場合、writeToはInputStreamを取出し、InputStreamから取り出したバイトを渡されたOutputStreamにコピーします。
DataHandlerがオブジェクトを使って作成された場合、writeToはそのオブジェクト・タイプのDataContentHandlerを検索します。DataContentHandlerが見つかると、DataContentHandler
のwriteTo
メソッドを呼び出します。
os
- 書込み先のOutputStreamIOException
- 入出力エラーが発生した場合public OutputStream getOutputStream() throws IOException
getOutputStream
メソッドが呼び出されます。それ以外の場合はnull
が返されます。IOException
DataSource.getOutputStream()
, URLDataSource
public DataFlavor[] getTransferDataFlavors()
データを提供することができるフレーバを示すDataFlavorオブジェクトの配列を返します。配列は通常、データ提供のための優先設定に従って、もっとも詳しく記述されているものから、そうでないものへ順序付けされます。
DataHandlerは、データのMIMEタイプに対応するDataContentHandlerを捜し出そうとします。見つかった場合は、そのDataContentHandlerのgetTransferDataFlavors
メソッドを呼び出します。
DataContentHandlerが見つからない場合や、DataHandlerがDataSource (またはURL)を使って作成された場合は、このオブジェクトのMIMEタイプとjava.io.InputStream
クラスを表すDataFlavorが1つ返されます。DataHandlerがオブジェクトとMIMEタイプを使って作成された場合は、このオブジェクトのMIMEタイプとクラスを表すDataFlavorが返されます。
getTransferDataFlavors
、インタフェース: Transferable
DataContentHandler.getTransferDataFlavors()
public boolean isDataFlavorSupported(DataFlavor flavor)
このメソッドは、getTransferDataFlavors
から返される各DataFlavorを指定のフレーバと比較します。
isDataFlavorSupported
、インタフェース: Transferable
flavor
- データに対して要求されたフレーバgetTransferDataFlavors()
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
public void setCommandMap(CommandMap commandMap)
null
に設定すると、CommandMapはCommandMap.getDefaultCommandMap
メソッドによって返されるCommandMapに戻されます。CommandMapを変更したり、それをnull
に設定したりすると、以前のCommandMapにキャッシュされていたデータはすべて消去されます。commandMap
- このDataHandlerで使用するCommandMapCommandMap.setDefaultCommandMap(javax.activation.CommandMap)
public CommandInfo[] getPreferredCommands()
getPreferredCommands
メソッドを呼び出します。このメソッドは、利用できるコマンドのサブセットを表す配列を返します。このDataHandlerによって表されたMIMEタイプのコマンドが複数ある場合は、インストールされたCommandMapによって該当するコマンドが選択されます。CommandMap.getPreferredCommands(java.lang.String)
public CommandInfo[] getAllCommands()
getAllCommands
メソッドの呼出しに使用されます。CommandMap.getAllCommands(java.lang.String)
public CommandInfo getCommand(String cmdName)
getCommand
メソッドの呼出しに使用されます。cmdName
- コマンド名CommandMap.getCommand(java.lang.String, java.lang.String)
public Object getContent() throws IOException
DataHandlerがオブジェクトを使ってインスタンス化された場合は、そのオブジェクトを返します。
DataHandlerがDataSourceを使ってインスタンス化された場合は、DataContentHandlerを使用して、このDataHandlerによって表されたデータのコンテンツ・オブジェクトを返します。このデータのタイプのDataContentHandler
が見つからない場合は、DataHandlerによってこのデータのInputStreamが返されます。
IOException
- この操作時にIOExceptionが発生した場合。public Object getBean(CommandInfo cmdinfo)
このメソッドは、javax.activation.DataHandler
クラス自体のロードに使用されたClassLoader
を使って、CommandInfoのgetCommandObject
メソッドを呼び出します。
cmdinfo
- コマンドに対応するCommandInfopublic static void setDataContentHandlerFactory(DataContentHandlerFactory newFactory)
DataContentHandlerFactoryがすでに設定されている場合は、Errorがスローされます。
newFactory
- DataContentHandlerFactoryError
- ファクトリがすでに定義されている場合。DataContentHandlerFactory
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.