|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
public interface Validator
JAXB 2.0 の時点で、このクラスは推奨されないオプションのクラスとなりました。
Validator クラスは、実行時にコンテンツツリーの検証を制御します。
- 非整列化時の検証
- この検証形式では、XML データを Java コンテンツツリーに非整列化する途中で検出された検証エラーと警告に関する情報をクライアントアプリケーションは受け取ることができ、ほかの検証形式と完全に交錯します。これを有効または無効にするには、javadoc の
Unmarshaller.setValidatingを参照してください。すべての JAXB 1.0 プロバイダは、この操作をサポートする必要があります。- オンデマンド検証
- この検証形式では、Java コンテンツツリーで検出された検証エラーおよび警告に関する情報をクライアントアプリケーションは受け取ることができます。任意の時点で、クライアントアプリケーションは Java コンテンツツリー (または、それの任意のサブツリー) に対して
Validator.validateメソッドを呼び出すことができます。すべての JAXB 1.0 プロバイダは、この操作をサポートする必要があります。- フェイルファスト検証
- この検証形式では、クライアントアプリケーションは、仕様で定義された Java プロパティーの型制約に違反する Java コンテンツツリー変更に関するフィードバックを即座に受け取ることができます。JAXB プロバイダがこの型の検証をサポートすることは必須ではありません。この型の検証をサポートしている JAXB プロバイダのなかには、クライアントアプリケーションが実行時のフェイルファスト検証を要求することを許可するかどうかをスキーマコンパイル時に決定する必要があるものもあります。
Validator クラスは、オンデマンド検証の管理を担当します。Unmarshaller クラスは、非整列化操作中の非整列化時検証の管理を担当します。整列化操作中の検証を有効にする正式なメソッドはありませんが、Marshaller はエラーを検出し、自身に登録されている ValidationEventHandler に報告します。
検証、非整列化、整列化操作の呼び出しの前に、クライアントアプリケーションが Validator、Unmarshaller、Marshaller にイベントハンドラを設定していない場合、デフォルトイベントハンドラが発生したエラーまたは警告の通知を受け取ります。デフォルトイベントハンドラは、最初のエラーまたは致命的なエラーの検出後、現在の操作を停止させます (警告を受け取った後は、続行させることを試みます)。
非整列化、検証、整列化操作中に発生したイベントを処理する方法には、次の 3 つがあります。
- デフォルトイベントハンドラの使用
- Validator、Unmarshaller、または Marshaller に対し setEventHandler API を介してイベントハンドラを指定しなかった場合、デフォルトイベントハンドラが使用されます。
- カスタムイベントハンドラの実装と登録
- 高度なイベント処理を必要とするクライアントアプリケーションは、ValidationEventHandler インタフェースを実装し、Unmarshaller または Validator、あるいはその両方にそれを登録することができます。
ValidationEventCollectorユーティリティーの使用- 利便性の向上のため、非整列化、検証、整列化操作中に作成された ValidationEvent オブジェクトを単に収集し、これらをクライアントアプリケーションに java.util.Collection として返す、特殊なイベントハンドラが提供されています。
検証と整形式
前の節で説明したように、クライアントアプリケーションの検証イベント処理設定にしたがって、検証イベントは異なる方法で処理されます。ただし、ある状況では、もはや正常にエラーを検出および報告できないことを JAXB プロバイダが伝えます。これらの場合、JAXB プロバイダは ValidationEvent の重要度を FATAL_ERROR に設定し、非整列化、検証、整列化操作を終了させることを示します。デフォルトイベントハンドラおよび ValidationEventCollector ユーティリティークラスは、致命的なエラーが通知された後、処理を終了させる必要があります。独自の ValidationEventHandler を提供するクライアントアプリケーションは、致命的なエラーが通知された後、処理を終了させるようにしてください。これに従わない場合、予想外の動作を引き起こす可能性があります。
現在、Validator に関してすべての JAXB プロバイダがサポートする必要があるプロパティーはありません。しかし、一部のプロバイダは、プロバイダ固有のプロパティーの固有のセットをサポートする場合があります。
JAXBContext,
Unmarshaller,
ValidationEventHandler,
ValidationEvent,
ValidationEventCollector| メソッドの概要 | |
|---|---|
ValidationEventHandler |
getEventHandler()
推奨されていません。 since JAXB2.0 |
Object |
getProperty(String name)
推奨されていません。 since JAXB2.0 |
void |
setEventHandler(ValidationEventHandler handler)
推奨されていません。 since JAXB2.0 |
void |
setProperty(String name,
Object value)
推奨されていません。 since JAXB2.0 |
boolean |
validate(Object subrootObj)
推奨されていません。 since JAXB2.0 |
boolean |
validateRoot(Object rootObj)
推奨されていません。 since JAXB2.0 |
| メソッドの詳細 |
|---|
void setEventHandler(ValidationEventHandler handler)
throws JAXBException
検証イベントハンドラは、validate を呼び出している途中で検証エラーが発生した場合、JAXB プロバイダによって呼び出されます。検証メソッドを呼び出す前にクライアントアプリケーションが検証イベントハンドラを登録していない場合、検証イベントはデフォルトイベントハンドラによって処理されます。デフォルトイベントハンドラは、最初のエラーまたは致命的なエラーの発生後に検証操作を終了させます。
このメソッドを null パラメータとともに呼び出した場合、Validator はデフォルトイベントハンドラに戻されます。
handler - 検証イベントハンドラ
JAXBException - イベントハンドラの設定中にエラーが発生した場合
ValidationEventHandler getEventHandler()
throws JAXBException
JAXBException - 現在のイベントハンドラの取得中にエラーが発生した場合
boolean validate(Object subrootObj)
throws JAXBException
クライアントアプリケーションは、このメソッドを使用して実行時にオンデマンドで Java コンテンツツリーを検証することができます。このメソッドは、Java コンテンツツリーの任意のサブツリーを検証するために使用できます。この操作の一部として、グローバル制約チェックは実行されません (ID/IDREF 制約など)。
subrootObj - 検証を開始するオブジェクト
JAXBException - 検証中に予想外の問題が発生した場合
ValidationException - ValidationEventHandler の
handleEvent メソッドから false が返されるか、または
Validator が subrootObj をルートとするコンテンツツリーを
検証できない場合
IllegalArgumentException - subrootObj パラメータが null の場合
boolean validateRoot(Object rootObj)
throws JAXBException
クライアントアプリケーションは、このメソッドを使用して実行時にオンデマンドで Java コンテンツツリーを検証することができます。このメソッドは、Java コンテンツツリー全体を検証するときに使用されます。この操作の一部として、グローバル制約チェックが実行されます (ID/IDREF 制約など)。
rootObj - 検証を開始するルートオブジェクト
JAXBException - 検証中に予想外の問題が発生した場合
ValidationException - ValidationEventHandler の
handleEvent メソッドから false が返されるか、または
Validator が rootObj をルートとするコンテンツツリーを
検証できない場合
IllegalArgumentException - rootObj パラメータが null の場合
void setProperty(String name,
Object value)
throws PropertyException
name - 設定するプロパティーの名前。この値は、定数フィールドの 1 つか
ユーザー指定文字列を使用して指定できるvalue - 設定するプロパティーの値
PropertyException - 与えられたプロパティーまたは値の処理中にエラーが
発生した場合
IllegalArgumentException - name パラメータが null の場合
Object getProperty(String name)
throws PropertyException
name - 取得するプロパティーの名前
PropertyException - 指定したプロパティー、またはプロパティー名値の取得中にエラーが発生
した場合
IllegalArgumentException - name パラメータが null の場合
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。