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), UnsupportedDataTypeExceptionpublic 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が返されます。IOExceptionDataSource.getOutputStream(), URLDataSourcepublic DataFlavor[] getTransferDataFlavors()
データを提供することができるフレーバを示すDataFlavorオブジェクトの配列を返します。配列は通常、データ提供のための優先設定に従って、もっとも詳しく記述されているものから、そうでないものへ順序付けされます。
DataHandlerは、データのMIMEタイプに対応するDataContentHandlerを捜し出そうとします。見つかった場合は、そのDataContentHandlerのgetTransferDataFlavorsメソッドを呼び出します。
DataContentHandlerが見つからない場合や、DataHandlerがDataSource (またはURL)を使って作成された場合は、このオブジェクトのMIMEタイプとjava.io.InputStreamクラスを表すDataFlavorが1つ返されます。DataHandlerがオブジェクトとMIMEタイプを使って作成された場合は、このオブジェクトのMIMEタイプとクラスを表すDataFlavorが返されます。
getTransferDataFlavors、インタフェース: TransferableDataContentHandler.getTransferDataFlavors()public boolean isDataFlavorSupported(DataFlavor flavor)
このメソッドは、getTransferDataFlavorsから返される各DataFlavorを指定のフレーバと比較します。
isDataFlavorSupported、インタフェース: Transferableflavor - データに対して要求されたフレーバ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、インタフェース: Transferableflavor - データに対して要求されたフレーバUnsupportedFlavorException - データが要求されたフレーバに変換されなかった場合IOException - 入出力エラーが発生した場合ActivationDataFlavorpublic 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.