JAF 1.0

javax.activation
クラス DataHandler

java.lang.Object
  |
  +--javax.activation.DataHandler

public class DataHandler
extends java.lang.Object
implements java.awt.datatransfer.Transferable

DataHandler クラスは、いくつもの違ったソースと形式で利用できる データへの統一的なインタフェースを提供します。 このクラスは DataContentHandler を使って文字列変換と関連した操作を行なう シンプルなストリームを管理し、データを操作できるコマンドへのアクセスを 提供します。コマンドは CommandMap を使って見つけます。

DataHandler と Transferable インタフェース

DataHandler は Transferable インタフェースを実装しています。 これは、切り取りや貼り付け、ドラッグアンドドロップといった AWT の データ転送操作でデータが使えるようにするものです。 Transferable インタフェースの実装は、DataHandler の特定のインスタンスで 表されるデータの MIME タイプに対応した DataContentHandler が組み込まれている ことを想定しています。

DataHandler と CommandMap

DataHandler は、コマンドに要求を伝えるために使われる (getCommand, getAllCommands, getPreferredCommands)、 現在の CommandMap を監視しています。Command のメソッドのいずれかが 呼ばれると、 DataHandler は CommandMap が setCommandMap メソッドで 明示的に設定されているかを調べます。設定されていればその CommandMap を使い、 設定されていなければ DataHandler は CommandMap の getDefaultCommandMap メソッドを呼んでその戻り値を使います。 詳細については CommandMap を参照して下さい。

DataHandler と URL

DataHandler の現在の実装では、 URL で構築されたときには URLDataSource の private インスタンスを生成します。

関連項目:
CommandMap, DataContentHandler, DataSource, URLDataSource

コンストラクタの概要
DataHandler(DataSource ds)
          指定した DataSource で DataHandler のインスタンスを生成します。
DataHandler(java.lang.Object obj, java.lang.String mimeType)
          指定した MIME タイプのオブジェクトで DataHandler クラスを初期化します。
DataHandler(java.net.URL url)
          URL で DataHandler クラスを初期化します。
 
メソッドの概要
 CommandInfo[] getAllCommands()
          DataHandler で表されるデータのタイプに対する すべてのコマンドを含む配列を返します。
 java.lang.Object getBean(CommandInfo cmdinfo)
          CommandInfo オブジェクトを受け取って対応するコマンドを インスタンス化する便宜的なメソッドです。
 CommandInfo getCommand(java.lang.String cmdName)
          コマンド cmdName を取得します。
 java.lang.Object getContent()
          データを望ましい Object 形式で返します。
 java.lang.String getContentType()
          このオブジェクトの MIME タイプを、ソースオブジェクトから取得された通りに 返します。
 DataSource getDataSource()
          DataHandler のこのインスタンスに関連付けられた DataSource を返します。
 java.io.InputStream getInputStream()
          このオブジェクトに対する InputStream を返します。
 java.lang.String getName()
          データオブジェクトの名前を返します。
 java.io.OutputStream getOutputStream()
          この DataHandler に対する OutputStream を取得します。
 CommandInfo[] getPreferredCommands()
          DataHandler のこのインスタンスに組み込まれた CommandMap の getPreferredCommands メソッドを呼び出します。
 java.lang.Object getTransferData(java.awt.datatransfer.DataFlavor flavor)
          転送されるデータを表すオブジェクトを返します。
 java.awt.datatransfer.DataFlavor[] getTransferDataFlavors()
          このデータが利用できる DataFlavor を返します。
 boolean isDataFlavorSupported(java.awt.datatransfer.DataFlavor flavor)
          指定したデータフレーバがこのオブジェクトでサポートされているかを 返します。
 void setCommandMap(CommandMap commandMap)
          このメソッドはこの DataHandler の現在の CommandMap を オーバーライドします。
static void setDataContentHandlerFactory(DataContentHandlerFactory newFactory)
          DataContentHandlerFactory を設定します。
 void writeTo(java.io.OutputStream os)
          OutputStream にデータを書き込みます。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

DataHandler

public DataHandler(DataSource ds)
指定した DataSource で DataHandler のインスタンスを生成します。
パラメータ:
ds - DataSource

DataHandler

public DataHandler(java.lang.Object obj,
                   java.lang.String mimeType)
指定した MIME タイプのオブジェクトで DataHandler クラスを初期化します。 このコンストラクタは、アプリケーションが既に Java オブジェクトの形で データのメモリ内表現を保持している場合に使います。
パラメータ:
obj - Java オブジェクト
mimeType - オブジェクトの MIME タイプ

DataHandler

public DataHandler(java.net.URL url)
URL で DataHandler クラスを初期化します。 DataHandler は URL を表現するのに URLDataSource を 内部で生成します。
パラメータ:
url - URL オブジェクト
メソッドの詳細

getDataSource

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

DataSource でインスタンス化された DataHandler に対しては、 その生成時に使われた DataSource を返します。 他の場合では DataHandler はその生成時に使われたデータから DataSource を 生成します。 DataSource でインスタンス化されなかった DataHandler に対する DataSource は、パフォーマンス上の理由からキャッシュされます。

戻り値:
この DataHandler に対して有効な DataSource オブジェクト。
例外:
java.io.IOException - I/O エラーが発生した場合

getName

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

getContentType

public java.lang.String getContentType()
このオブジェクトの MIME タイプを、ソースオブジェクトから取得された通りに 返します。
戻り値:
MIME タイプ

getInputStream

public java.io.InputStream getInputStream()
                                   throws java.io.IOException
このオブジェクトに対する InputStream を返します。 DataSource でインスタンス化された DataHandlers に対しては、 DataSource.getInputStream メソッドを呼び、その結果を返します。

Object でインスタンス化された DataHandler に対しては、 最初にその Object に対する DataContentHandler を見つけようとします。 このオブジェクトの MIME タイプに対する DataContentHandler が 見つけられなければ UnsupportedDataTypeException をスローします。 見つかれば、返される InputStream と DataContentHandler の writeTo メソッドとの間の パイプを生成します。writeTo メソッドは オブジェクトのデータを使って呼ばれます。 この操作を並行的に完成できるようにスレッドを生成しますが、 スレッドはデータをコピーするために生成されるため、 コピー中に起こる IOException を呼び出し側に戻すことができません。 その場合の結果は空のストリームになります。

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

writeTo

public void writeTo(java.io.OutputStream os)
             throws java.io.IOException
OutputStream にデータを書き込みます。 DataHandler が DataSource で生成された場合は、 writeTo は InputStream を取得して 渡された OutputStream にその InputStream から得られるバイト列を 書き込みます。

DataHandler がオブジェクトで生成された場合は、 writeTo はそのオブジェクトのタイプに対する DataContentHandler を 取得します。 DataContentHandler が見つかった場合は DataContentHandlerwriteTo メソッドを 呼びます。

パラメータ:
os - 書き込む OutputStream
例外:
java.io.IOException - I/O エラーが発生した場合

getOutputStream

public java.io.OutputStream getOutputStream()
                                     throws java.io.IOException
この DataHandler に対する OutputStream を取得します。 このメソッドは、DataHandler(Object, String) コンストラクタで 生成されたのでない DataHandler で有効な OutputStream を 返そうとします (このコンストラクタで生成されたものの場合は null を返します)。このコンストラクタで生成された以外の場合は、 この DataHandler で使われている DataSource が有効な OutputStream を 提供できない場合やこのオブジェクトの生成に使われた URL が 有効な OutputStream を返せない場合を除いて、有効な OutputStream を 返します。
戻り値:
OutputStream。
関連項目:
DataSource.getOutputStream(), URLDataSource

getTransferDataFlavors

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

データを提供できるフレーバを示す DataFlavor オブジェクトの 配列を返します。普通、この配列はデータ提供の優先度に従って 最も適したものから最も適さないものへ並べられています。

DataHandler はデータの MIME タイプに対応する DataContentHandler を 探します。見つかれば、その DataContentHandler の getTransferDataFlavors を呼びます。DataContentHandler が 見つからない場合は、DataHandler が DataSource (または URL) で生成されたものなら、そのデータに対する 自然な DataFlavor (一般には this.getContentType/InputStream) を 返します。DataHandler がオブジェクトや MIME タイプで生成されたものなら、 getTransferDataFlavors は this.getContentType/InputStreamを表す DataFlavor を返します。

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

isDataFlavorSupported

public boolean isDataFlavorSupported(java.awt.datatransfer.DataFlavor flavor)
指定したデータフレーバがこのオブジェクトでサポートされているかを 返します。

このメソッドは、このオブジェクトで利用できる DataFlavor 全体、 つまり this.getTransferDataFlavors を呼んだ結果を調べます。

定義:
インタフェース java.awt.datatransfer.Transferable 内の isDataFlavorSupported
パラメータ:
flavor - データに対して要求されたフレーバ
戻り値:
データフレーバがサポートされていれば true
関連項目:
getTransferDataFlavors()

getTransferData

public java.lang.Object getTransferData(java.awt.datatransfer.DataFlavor flavor)
                                 throws java.awt.datatransfer.UnsupportedFlavorException,
                                        java.io.IOException
転送されるデータを表すオブジェクトを返します。 返されるオブジェクトのクラスはデータフレーバを表すクラスによって 決められます。

DataSource や URL で生成された DataHandler の場合:

DataHandler はこの MIME タイプに対する DataContentHandler を 探します。見つかれば、DataFlavor として渡されたものと データのタイプをその DataContentHandler の getTranferData メソッドに 渡します。DataHandler が DataContentHandler を見つけられない場合、 デフォルトの動作では要求された DataFlavor が自然な型および そのデータを表すクラスに合うかを調べ、その結果を返します。 それ以外の場合は null を返します。

Object で生成された DataHandler の場合:

DataHandler はこの MIME タイプに対する DataContentHandler を 探します。見つかれば、DataFlavor として渡されたものと データのタイプをその DataContentHandler の getTransferData メソッドに 渡します。DataHandler が DataContentHandler を見つけられない場合、 デフォルトの動作では要求された DayaFlavor が自然な型および そのデータを表すクラスに合うかを調べ、その結果を返します。 それ以外の場合は UnsupportedFlavorException をスローします。

定義:
インタフェース java.awt.datatransfer.Transferable 内の getTransferData
パラメータ:
flavor - データに対して要求されるフレーバ
戻り値:
オブジェクト。
例外:
java.awt.datatransfer.UnsupportedFlavorException - データを要求されたフレーバに変換できない場合
java.io.IOException - I/O エラーが発生した場合
関連項目:
ActivationDataFlavor

setCommandMap

public void setCommandMap(CommandMap commandMap)
このメソッドはこの DataHandler の現在の CommandMap を オーバーライドします。null に設定すると CommandMap は CommandMap.getDefaultCommandMap メソッドが返す CommandMap に変えられます。
パラメータ:
commandMap - この DataHandler で使う CommanMap
関連項目:
CommandMap.setDefaultCommandMap(CommandMap)

getPreferredCommands

public CommandInfo[] getPreferredCommands()
DataHandler のこのインスタンスに組み込まれた CommandMap の getPreferredCommands メソッドを呼び出します。 このメソッドは利用可能なコマンドのサブセットを表す配列を返します。 この DataHandler がが表す MIME タイプに対して複数のコマンドが 示される場合は、組み込まれた CommandMap が適切なコマンドを選び出します。
戻り値:
望ましいコマンドを表す CommandInfo オブジェクト
関連項目:
CommandMap.getPreferredCommands(String)

getAllCommands

public CommandInfo[] getAllCommands()
DataHandler で表されるデータのタイプに対する すべてのコマンドを含む配列を返します。 この DataHandler が表す下層のデータに対する MIME タイプは 現在組み込まれている CommandMap の getAllCommands メソッド を呼ぶのに使われます。
戻り値:
すべてのコマンドを表す CommandInfo オブジェクト
関連項目:
CommandMap.getAllCommands(String)

getCommand

public CommandInfo getCommand(java.lang.String cmdName)
コマンド cmdName を取得します。 この DataHandler に組み込まれた CommandMap で定義されている 検索方法を使用します。 この DataHandler が表す下層のデータに対する MIME タイプは 現在組み込まれている CommandMap の getCommand メソッド を呼ぶのに使われます。
戻り値:
コマンドに対応した CommandInfo
関連項目:
CommandMap.getCommand(String, String)

getContent

public java.lang.Object getContent()
                            throws java.io.IOException
データを望ましい Object 形式で返します。

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

DataHandler が DataSource でインスタンス化された場合は、 DtaContentHandler を使ってこの DataHandler が表すデータの 内容オブジェクトを返します。 このデータのタイプに対して DataContentHandler が 見つからない場合、 DataHandler は例外 UnsupportedDataTypeException を スローします。

戻り値:
内容。
例外:
java.io.IOException - この操作中に IOException が発生した場合

getBean

public java.lang.Object getBean(CommandInfo cmdinfo)
CommandInfo オブジェクトを受け取って対応するコマンドを インスタンス化する便宜的なメソッドです。返されるコマンドは 多くの場合 JavaBean コンポーネントです。

このメソッドは、このオブジェクトを読み込むのに使われた ClassLoader で cmdInfo の getCommandObject メソッドを呼びます。

戻り値:
インスタンス化されたコマンドオブジェクト

setDataContentHandlerFactory

public static void setDataContentHandlerFactory(DataContentHandlerFactory newFactory)
DataContentHandlerFactory を設定します。 これはシステム内で DataHandler が DataContentHandler を探す可能性のあるすべての場所に対して オーバーライドします。DataContentHandler のファクトリは 同時に 1 つしか設定できません。

DataContentHandlerFactory がすでに設定されている場合は Error をスローします。このデザインパターンは java.net.URLConnection.setContentHandler で使われているのと 同じものです。

パラメータ:
factory - 設定する DataContentHandlerFactory
関連項目:
DataContentHandlerFactory

JAF 1.0