モジュール java.xml.bind
パッケージ javax.xml.bind

インタフェースValidator


  • 非推奨。 
    JAXB 2.0以降

    public interface Validator
    JAXB 2.0の時点で、このクラスは非推奨でオプションのクラスとなりました。

    Validatorクラスは、実行時にコンテンツ・ツリーの検証を制御します。

    3つの形式の検証

    非整列化時の検証
    この検証形式では、XMLデータをJavaコンテンツ・ツリーに非整列化する途中で検出された検証エラーと警告に関する情報をクライアント・アプリケーションは受け取ることができ、ほかの検証形式と完全に交錯します。 これを有効または無効にするには、javadocのUnmarshaller.setValidatingを参照してください。 すべてのJAXB 1.0プロバイダは、この操作をサポートする必要があります。
    オン・デマンド検証
    この検証形式では、Javaコンテンツ・ツリーで検出された検証エラーおよび警告に関する情報をクライアント・アプリケーションは受け取ることができます。 任意の時点で、クライアント・アプリケーションはJavaコンテンツ・ツリー(または、それの任意のサブツリー)に対してValidator.validateメソッドを呼び出すことができます。 すべてのJAXB 1.0プロバイダは、この操作をサポートする必要があります。
    フェイルファスト検証
    この検証形式では、クライアント・アプリケーションは、仕様で定義されたJavaプロパティの型制約に違反するJavaコンテンツ・ツリー変更に関するフィード・バックを即座に受け取ることができます。 JAXBプロバイダがこの型の検証をサポートすることは必須ではありません。 この型の検証をサポートしているJAXBプロバイダのなかには、クライアント・アプリケーションが実行時のフェイルファスト検証を要求することを許可するかどうかをスキーマ・コンパイル時に決定する必要があるものもあります。

    Validatorクラスは、オン・デマンド検証の管理を担当します。 Unmarshallerクラスは、非整列化操作中の非整列化時検証の管理を担当します。 整列化操作中の検証を有効にする正式なメソッドはありませんが、Marshallerはエラーを検出し、自身に登録されているValidationEventHandlerに報告します。

    デフォルト・イベント・ハンドラの使用

    検証、非整列化、整列化メソッドの呼出しの前に、クライアント・アプリケーションがValidatorUnmarshallerMarshallerにイベント・ハンドラを設定していない場合、デフォルト・イベント・ハンドラが発生したエラーまたは警告の通知を受け取ります。 デフォルト・イベント・ハンドラは、最初のエラーまたは致命的なエラーの検出後、現在の操作を停止させます(警告を受け取ったあとは、続行させることを試みます)。

    検証イベントの処理

    非整列化、検証、整列化操作中に発生したイベントを処理する方法には、次の3つがあります。
    デフォルト・イベント・ハンドラの使用
    ValidatorUnmarshaller、またはMarshallerに対しsetEventHandler APIを介してイベント・ハンドラを指定しなかった場合、デフォルト・イベント・ハンドラが使用されます。
    カスタム・イベント・ハンドラの実装と登録
    高度なイベント処理を必要とするクライアント・アプリケーションは、ValidationEventHandlerインタフェースを実装し、UnmarshallerまたはValidator、あるいはその両方にそれを登録できます。
    ValidationEventCollectorユーティリティの使用
    利便性の向上のため、非整列化、検証、整列化操作中に作成されたValidationEventオブジェクトを単に収集し、これらをクライアント・アプリケーションにjava.util.Collectionとして返す、特殊なイベント・ハンドラが提供されています。

    検証と整形式

    前のセクションで説明したように、クライアント・アプリケーションの検証イベント処理設定にしたがって、検証イベントは異なる方法で処理されます。 ただし、ある状況では、もはや正常にエラーを検出および報告できないことをJAXBプロバイダが伝えます。 これらの場合、JAXBプロバイダはValidationEventの重要度をFATAL_ERRORに設定し、非整列化、検証、整列化操作を終了させることを示します。 デフォルト・イベント・ハンドラおよびValidationEventCollectorユーティリティ・クラスは、致命的なエラーが通知されたあと、処理を終了させる必要があります。 独自のValidationEventHandlerを提供するクライアント・アプリケーションは、致命的なエラーが通知されたあと、処理を終了させるようにしてください。 これに従わない場合、予想外の動作を引き起こす可能性があります。

    サポートされているプロパティ

    現在、Validatorに関してすべてのJAXBプロバイダがサポートする必要があるプロパティはありません。 しかし、一部のプロバイダは、プロバイダ固有のプロパティの固有のセットをサポートする場合があります。

    導入されたバージョン:
    1.6, JAXB 1.0
    関連項目:
    JAXBContext, Unmarshaller, ValidationEventHandler, ValidationEvent, ValidationEventCollector
    • メソッドの詳細

      • setEventHandler

        void setEventHandler​(ValidationEventHandler handler)
                      throws JAXBException
        非推奨。 JAXB2.0以降
        アプリケーションが検証イベント・ハンドラを登録することができます。

        検証イベント・ハンドラは、validateの呼出し中に検証エラーが発生した場合、JAXBプロバイダによって呼び出されます。 検証メソッドを呼び出す前にクライアント・アプリケーションが検証イベント・ハンドラを登録していない場合、検証イベントはデフォルトのイベント・ハンドラによって処理されます。デフォルトのイベント・ハンドラは、最初のエラーまたは致命的なエラーの発生後に検証操作を終了させます。

        このメソッドをnullパラメータとともに呼び出した場合、Validatorはデフォルト・イベント・ハンドラに戻されます。

        パラメータ:
        handler - 検証イベント・ハンドラ
        例外:
        JAXBException - イベント・ハンドラの設定中にエラーが発生した場合
      • getEventHandler

        ValidationEventHandler getEventHandler​()
                                        throws JAXBException
        非推奨。 JAXB2.0以降
        現在のイベント・ハンドラ、または、それが設定されていない場合はデフォルト・イベント・ハンドラを返します。
        戻り値:
        現在のValidationEventHandler。それが設定されていない場合はデフォルト・イベント・ハンドラ
        例外:
        JAXBException - 現在のイベント・ハンドラの取得中にエラーが発生した場合
      • validate

        boolean validate​(Object subrootObj)
                  throws JAXBException
        非推奨。 JAXB2.0以降
        subrootObjで始まるJavaコンテンツ・ツリーを検証します。

        クライアント・アプリケーションは、このメソッドを使用して実行時にオン・デマンドでJavaコンテンツ・ツリーを検証できます。 このメソッドは、Javaコンテンツ・ツリーの任意のサブツリーを検証するために使用できます。 この操作の一部として、グローバル制約チェックは実行されません (ID/IDREF制約など)。

        パラメータ:
        subrootObj - 検証を開始するオブジェクト
        戻り値:
        subrootObjをルートとするサブツリーが有効な場合はtrue、そうでない場合はfalse
        例外:
        JAXBException - 検証中に予想外の問題が発生した場合
        ValidationException - ValidationEventHandlerhandleEventメソッドからfalseが返されるか、ValidatorsubrootObjをルートとするコンテンツ・ツリーを検証できない場合
        IllegalArgumentException - subrootObjパラメータがnullの場合
      • validateRoot

        boolean validateRoot​(Object rootObj)
                      throws JAXBException
        非推奨。 JAXB2.0以降
        rootObjをルートとするJavaコンテンツ・ツリーを検証します。

        クライアント・アプリケーションは、このメソッドを使用して実行時にオン・デマンドでJavaコンテンツ・ツリーを検証できます。 このメソッドは、Javaコンテンツ・ツリー全体を検証するときに使用されます。 この操作の一部として、グローバル制約チェックが実行されます (ID/IDREF制約など)。

        パラメータ:
        rootObj - 検証を開始するルート・オブジェクト
        戻り値:
        rootObjをルートとするツリーが有効な場合はtrue、そうでない場合はfalse
        例外:
        JAXBException - 検証中に予想外の問題が発生した場合
        ValidationException - ValidationEventHandlerhandleEventメソッドからfalseが返されるか、ValidatorrootObjをルートとするコンテンツ・ツリーを検証できない場合
        IllegalArgumentException - rootObjパラメータがnullの場合
      • setProperty

        void setProperty​(String name,
                         Object value)
                  throws PropertyException
        非推奨。 JAXB2.0以降
        Validatorの基本となる実装に特定のプロパティを設定します。 このメソッドは、先に述べた定義済みの標準JAXBプロパティまたはプロバイダ固有のプロパティの1つを設定する目的にのみ使用できます。 未定義のプロパティを設定しようとした場合、PropertyExceptionがスローされます。 サポートされているプロパティを参照してください。
        パラメータ:
        name - 設定するプロパティの名前。 この値は、定数フィールドの1つかユーザーが指定した文字列を使用して指定できる。
        value - 設定するプロパティの値
        例外:
        PropertyException - 指定したプロパティまたは値の処理中にエラーが発生した場合
        IllegalArgumentException - nameパラメータがnullの場合
      • getProperty

        Object getProperty​(String name)
                    throws PropertyException
        非推奨。 JAXB2.0以降
        Validatorの基本となる実装の特定のプロパティを取得します。 このメソッドは、先に述べた定義済みの標準JAXBプロパティまたはプロバイダ固有のプロパティの1つを取得する目的にのみ使用できます。 未定義のプロパティを取得しようとした場合、PropertyExceptionがスローされます。 サポートされているプロパティを参照してください。
        パラメータ:
        name - 取得するプロパティの名前
        戻り値:
        要求されたプロパティの値
        例外:
        PropertyException - 指定したプロパティまたは値プロパティ名の取得中にエラーが発生した場合
        IllegalArgumentException - nameパラメータがnullの場合