« S2DxoとJAXB2.0 | Main | S2DxoとJAXB2.0 その3 »

2007.07.17

S2DxoとJAXB2.0 その2

 JAXBでのバインド先にInterTypeを適用ですが、とりあえず以下のような感じでできました。

Hoge _hoge = (Hoge)s2container.getComponent(Hoge.class);
JAXBContext context = JAXBContext.newInstance(_hoge.getClass());
Unmarshaller unmarshaller = context.createUnmarshaller();
JAXBElement<?> hogee =
  unmarshaller.unmarshal(new StreamSource(new StringReader(xml)), _hoge.getClass());
Hoge hoge = (Hoge)hogee.getValue();

って感じで記述すると、最終的に得られたhogeはInterTypeが適用された状態のオブジェクトとなっていますので、Dxoでサクッとプロパティのコピーが可能です。

 なお、

Hoge hoge = (Hoge)unmarshaller.unmarshal(new StringReader(xml));

だと、InterType適用前の状態となります。デバッガで見たところ、JAXBContextを作成する際、引数のクラスの「親クラス」も自動的に登録されてしまうようで、まずはそちらから優先的に処理されているような感じ?

|

« S2DxoとJAXB2.0 | Main | S2DxoとJAXB2.0 その3 »

Java」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/15785259

Listed below are links to weblogs that reference S2DxoとJAXB2.0 その2:

» S2DxoとJAXB2.0 その3 [気の向くままに・・・]
 S2DxoとJAXB2.0の組み合わせで、Unmarshal(XMLテキスト→ [Read More]

Tracked on 2007.07.18 at 07:50

» S2DxoとJAXB2.0 その4 [気の向くままに・・・]
 S2Container経由で取得したオブジェクトに対してUnmarshalした [Read More]

Tracked on 2007.07.19 at 10:47

« S2DxoとJAXB2.0 | Main | S2DxoとJAXB2.0 その3 »