ひこぽんのーと

覚書と雑記です。

JavaEE 7をやってみよう。 JAX-RS その4

その3のつづき。

結果が想定と違ってしまい、何が悪いのかとふと考えた。
出力したい項目にはアノテーションが付いているし。。。
と、昔、仕事でWebAPIを作っていた頃を思い出してみた。

当時、インプットとアウトプットに使うBeanクラスを手作りした記憶がなく、
xjcというコマンドを使用して自動生成していたことは覚えている。
対向システムから提供されたBeanクラスがおかしくて、
手でアノテーションを付加したりして実装を進めたこともあったので、
@XmlRootElementなどのアノテーションについても覚えていたのだろう。

xjcコマンドはxsdファイル(XMLスキーマ)という、
XMLの定義ファイルで各タグの属性(仕様とでも言うのか)を定義したファイルを読み込ませることで、
@XmlRootElementなどのアノテーションで修飾されたBeanクラスを自動生成してくれる。

ただ、これを手作りした記憶もないし、手作りするのはかなりシンドイ……はず。
うっすら覚えているのはプロジェクトの基盤チームが
I/F仕様書からXMLスキーマを自動生成するExcelマクロを提供していた……のかもしれない。

自宅にはそんなものはないので、どうしようか、とこれまた考えた。
インターネットで調べると、javaクラスからxsdを出力するshemagenコマンドがあるとのこと。
また、よくよくeclipseのウィザートを見てみると
JAXBのカテゴリに「クラスからスキーマ」、「スキーマからクラス」の機能も用意されていた。

これを利用して、その3で作成したクラスから一旦、xsdを出力して、それをひな形に希望の形に編集する。
編集したxsdファイルを元に正しいBeanファイルを作ってみることにする。

というわけで、その5へ続く。