public abstract class Binder<XmlNode> extends Object
このクラスのインスタンスは、情報セット保持ビューのXMLノードと、XML文書のJAXB表現の間の関連付けを保持します。2つのビュー間のナビゲーションは、getXMLNode(Object)
およびgetJAXBNode(Object)
メソッドによって提供されます。
他方のビューが変更されずにそのままの場合、情報セット保持ビューまたは文書のJAXB表現のどちらか一方を変更することができます。Binderでは、適切なBinder更新メソッド(updateXML(Object, Object)
またはupdateJAXB(Object)
)を使用して、一方のビューへの変更が他方のビューに反映されるように同期を取ることができます。
次に、一般的な使用シナリオを示します。
unmarshal(Object)
)。(リソースの節約のために、XML情報セット・ビューのサブツリーのみをJAXBビューに非整列化することもできます。)updateXML(Object)
が、JAXBビューに対する変更をXML情報セット・ビューに対して同期します。更新処理では、可能なかぎり多くの元のXML情報セットが保持されます(つまり、コメント、PIなど)。
Binderインスタンスは、ファクトリ・メソッドJAXBContext.createBinder()
またはJAXBContext.createBinder(Class)
を使用して作成されます。
テンプレート・パラメータXmlNode
は、XML情報セット保持表現のルート・インタフェースまたはルート・クラスです。Binderの実装では、org.w3c.dom.Node.class
のXmlNode
値を最低限サポートする必要があります。Binderの実装で、別のXML情報セット保持表現をサポートすることもできます。
コンストラクタと説明 |
---|
Binder() |
修飾子と型 | メソッドと説明 |
---|---|
abstract ValidationEventHandler |
getEventHandler()
現在のイベント・ハンドラ、または、それが設定されていない場合はデフォルト・イベント・ハンドラを返します。
|
abstract Object |
getJAXBNode(XmlNode xmlNode)
指定したXML要素に関連付けられているJAXBオブジェクトを取得します。
|
abstract Object |
getProperty(String name)
Binderの基本となる実装の特定のプロパティを取得します。
|
abstract Schema |
getSchema()
setSchema(Schema) メソッドによって設定された最後のSchema オブジェクト(nullを含む)を取得します。 |
abstract XmlNode |
getXMLNode(Object jaxbObject)
指定したJAXBオブジェクトに関連付けられているXML要素を取得します。
|
abstract void |
marshal(Object jaxbObject, XmlNode xmlNode)
JAXBオブジェクト・ツリーを新しいXML文書に整列化します。
|
abstract void |
setEventHandler(ValidationEventHandler handler)
アプリケーションがValidationEventHandlerを登録することができます。
|
abstract void |
setProperty(String name, Object value)
Binderの基本となる実装の特定のプロパティを設定します。
|
abstract void |
setSchema(Schema schema)
整列化、非整列化、更新メソッドがXMLコンテンツで検証を実行するかどうかを指定します。
|
abstract Object |
unmarshal(XmlNode xmlNode)
XML情報セット・ビューをJAXBオブジェクト・ツリーに非整列化します。
|
abstract <T> JAXBElement<T> |
unmarshal(XmlNode xmlNode, Class<T> declaredType)
指定されたdeclaredTypeでXMLルート要素をJAXBオブジェクト・ツリーに非整列化します。
|
abstract Object |
updateJAXB(XmlNode xmlNode)
XMLノードを引数とし、それに関連付けられたJAXBオブジェクトとその下位オブジェクトを更新します。
|
abstract XmlNode |
updateXML(Object jaxbObject)
JAXBオブジェクトを引数とし、それに関連付けられたXMLノードとその下位ノードを更新します。
|
abstract XmlNode |
updateXML(Object jaxbObject, XmlNode xmlNode)
JAXBオブジェクト・ツリーの変更がそれと関連付けられているXML構文木で更新されます。
|
public abstract Object unmarshal(XmlNode xmlNode) throws JAXBException
このメソッドはUnmarshaller.unmarshal(Node)
と類似していますが、さらにXMLノードと生成されたJAXBオブジェクト間の関連付けを保持し、updateXML(Object, Object)
またはupdateJAXB(Object)
による後の更新処理を可能にします。
getSchema()
がnull以外の場合、この操作中にxmlNode
とその子孫が検証されます。
BinderのJAXBContext
に、@xsi:typeを介して指定可能なxmlNodeのXML要素名または型からJAXBマップ・クラスへのマッピングが含まれない場合、このメソッドはUnmarshalException
をスローします。このunmarshal(Object, Class)
メソッドにより、アプリケーションはxmlNodeがマップされるJAXBマップ・クラスを指定できるようになります。
xmlNode
- 非整列化するXMLデータが含まれるドキュメントまたは要素。JAXBException
- 非整列化の実行中に予想外のエラーが発生した場合UnmarshalException
- ValidationEventHandler
のhandleEventメソッドからfalseが返されるか、BinderがXMLからJavaへのバインディングを実行できない場合。IllegalArgumentException
- ノード・パラメータがnullの場合public abstract <T> JAXBElement<T> unmarshal(XmlNode xmlNode, Class<T> declaredType) throws JAXBException
宣言型による非整列化を実装します
このメソッドはUnmarshaller.unmarshal(Node, Class)
と類似していますが、さらにXMLノードと生成されたJAXBオブジェクト間の関連付けを保持し、updateXML(Object, Object)
またはupdateJAXB(Object)
による後の更新処理を可能にします。
getSchema()
がnull以外の場合、この操作中にxmlNode
とその子孫が検証されます。
xmlNode
- 非整列化するXMLデータが含まれるドキュメントまたは要素。declaredType
- nodeのXMLデータを保持する、適切なJAXBマップ・クラス。JAXBException
- 非整列化の実行中に予想外のエラーが発生した場合UnmarshalException
- ValidationEventHandler
のhandleEventメソッドからfalseが返されるか、BinderがXMLからJavaへのバインディングを実行できない場合。IllegalArgumentException
- いずれかの入力パラメータがnullの場合public abstract void marshal(Object jaxbObject, XmlNode xmlNode) throws JAXBException
このメソッドはMarshaller.marshal(Object, Node)
と類似していますが、JAXBオブジェクトと生成されたXMLノード間の関連付けを保持することが加わり、updateXML(Object, Object)
またはupdateJAXB(Object)
などによるあとの更新処理を可能にします。
getSchema()
がnull以外の場合、この操作中に整列化されたXMLコンテンツが検証されます。
jaxbObject
- 整列化するコンテンツ・ツリー。xmlNode
- このパラメータは、子を受け入れるノードである必要がある。JAXBException
- 整列化の実行中に予想外の問題が発生した場合。MarshalException
- ValidationEventHandler
のhandleEventメソッドからfalseが返されるか、BinderがjaxbObject (またはjaxbObjectから到達可能なオブジェクト)を整列化できない場合。IllegalArgumentException
- いずれかのメソッド・パラメータがnullの場合public abstract XmlNode getXMLNode(Object jaxbObject)
JAXBオブジェクト・ツリーがXMLフラグメントにいったん関連付けられると、このメソッドを使用して2つのツリー間のナビゲーションが可能になります。
XML要素とJAXBオブジェクト間の関連付けは、バインド・メソッドと更新メソッドによって確立されます。この関連付けは部分的であり、すべてのXML要素が関連付けられたJAXBオブジェクトを持つわけでなく、また、すべてのJAXBオブジェクトが関連付けられたXML要素を持つわけでもありません。
jaxbObject
- JAXBオブジェクト・ツリーを返したバインド・メソッドまたは更新メソッドの事前の呼び出しから到達可能なインスタンス。Binder
に認識されない場合、またはXML要素に関連付けられていない場合はnull。IllegalArgumentException
- jaxbObjectパラメータがnullの場合public abstract Object getJAXBNode(XmlNode xmlNode)
JAXBオブジェクト・ツリーがXMLフラグメントにいったん関連付けられると、このメソッドを使用して2つのツリー間のナビゲーションが可能になります。
XML要素とJAXBオブジェクト間の関連付けは、非整列化、整列化および更新メソッドによって確立されます。この関連付けは部分的であり、すべてのXML要素が関連付けられたJAXBオブジェクトを持つわけでなく、また、すべてのJAXBオブジェクトが関連付けられたXML要素を持つわけでもありません。
Binder
に認識されない場合、またはJAXBオブジェクトに関連付けられていない場合はnull。IllegalArgumentException
- ノード・パラメータがnullの場合public abstract XmlNode updateXML(Object jaxbObject) throws JAXBException
これは、次のメソッドの簡易メソッドです。
updateXML( jaxbObject, getXMLNode(jaxbObject));
JAXBException
- 対応するXMLコンテンツの更新中に予想外の問題が発生した場合。IllegalArgumentException
- jaxbObjectパラメータがnullの場合public abstract XmlNode updateXML(Object jaxbObject, XmlNode xmlNode) throws JAXBException
この操作は、「インプレース」整列化処理と捉えることができます。相違点は、新しいXMLツリー全体を作成するのではなく、この操作は既存のツリーを更新し、可能なかぎり多くのXMLを保持しようとする点です。
たとえば、JAXBにバインドされていない不明なXML要素または属性は未変更なままです(それに対して、整列化操作ではこうした要素や属性を含まない新しいツリーが作成されます)。
副作用として、この操作はXMLノードとJAXBオブジェクトの関連付けを更新します。
jaxbObject
- 変更された可能性のあるJAXBオブジェクト・ツリーのルートxmlNode
- 更新ターゲットのXML構文木のルートJAXBException
- 対応するXMLコンテンツの更新中に予想外の問題が発生した場合。IllegalArgumentException
- いずれかの入力パラメータがnullの場合public abstract Object updateJAXB(XmlNode xmlNode) throws JAXBException
この操作は、「インプレース」非整列化処理と捉えることができます。相違点は、新しいJAXBツリー全体を作成するのでなく、この操作は既存のツリーを更新し、可能なかぎり多くのJAXBオブジェクトを再利用する点です。
副作用として、この操作はXMLノードとJAXBオブジェクトの関連付けを更新します。
marshal(Object,Object)
またはupdateJAXB(Object)
メソッドの呼出しで返されたオブジェクトと同じである。しかし、XML要素名が変更された場合など、別のオブジェクトになる可能性もある。JAXBException
- コンテンツがマップされた、対応するJAXBの更新中に予想外の問題が発生した場合。IllegalArgumentException
- ノード・パラメータがnullの場合public abstract void setSchema(Schema schema)
schema
- 検証を無効にするにはnullに設定。Unmarshaller.setSchema(Schema)
public abstract Schema getSchema()
setSchema(Schema)
メソッドによって設定された最後のSchema
オブジェクト(nullを含む)を取得します。public abstract void setEventHandler(ValidationEventHandler handler) throws JAXBException
ValidationEventHandlerは、Binder非整列化、整列化および更新メソッドのいずれかを呼び出している途中で検証エラーが発生した場合、JAXBプロバイダによって呼び出されます。
このメソッドをnullパラメータとともに呼び出した場合、Binderはデフォルトのデフォルト・イベント・ハンドラに戻されます。
handler
- 検証イベント・ハンドラJAXBException
- イベント・ハンドラの設定中にエラーが発生した場合public abstract ValidationEventHandler getEventHandler() throws JAXBException
JAXBException
- 現在のイベント・ハンドラの取得中にエラーが発生した場合public abstract void setProperty(String name, Object value) throws PropertyException
name
- 設定するプロパティの名前。この値は、定数フィールドの1つかユーザーが指定した文字列を使用して指定できる。value
- 設定するプロパティの値PropertyException
- 指定したプロパティまたは値の処理中にエラーが発生した場合IllegalArgumentException
- nameパラメータがnullの場合public abstract Object getProperty(String name) throws PropertyException
name
- 取得するプロパティの名前PropertyException
- 指定したプロパティまたは値プロパティ名の取得中にエラーが発生した場合IllegalArgumentException
- nameパラメータがnullの場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.