私は数日間Jerseyを使用してREST Webサービスを開発していましたが、XML、 JSON、Google Protobuf。WADL /生成されたXSDとJerseyを使用したコントラクトファーストのアプローチ
しかし、私はWADLとXSDの自動生成に関するいくつかの問題に直面しています。私は私を生成し、私が書いたXSDから
- :オブジェクトを定義するために
コンテキスト
は、これらの3つの形式で交換し、私は「コントラクトファースト」のアプローチを踏襲していますJAXBを使用したモデルクラス。
- 私が書いたのと同じprotoファイルから、私はGoogle Protobufクラスを生成しました(そして、内部的に、これをJAXB生成オブジェクトに変換して1つのユニークなモデルにする方法があります)。
しかし、私は私のユーザーが自分のクラスすぎを生成にできるようにしたいと思いとして、私はこれらのスキーマファイル(の.xsdと.proto)を共有したいと思いますし、自動的に生成されたとよく統合され、それらを持っていますWADL。そのために
、this Wikiページへの感謝:
- 私は
/schema/schema.xsd
/schema/schema.proto
下の2つのファイルを公開している私は、用途向けに追加されました文法ファイル:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <grammars xmlns="http://wadl.dev.java.net/2009/02" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xi="http://www.w3.org/1999/XML/xinclude"> <include href="../schema/schema.xsd" /> </grammars>
私は、カスタマイズされたWADLジェネレータを追加しました:
public class RichWadlGeneratorConfig extends WadlGeneratorConfig { @Override public List<WadlGeneratorDescription> configure() { return generator(WadlGeneratorApplicationDoc.class) .prop("applicationDocsStream", "application-doc.xml") .generator(WadlGeneratorGrammarsSupport.class) .prop("grammarsStream", "application-grammars.xml") .descriptions(); } }
私は/rest/application.wadl
ヒット下記WADLに表示されます。この方法で、:
<grammars>
<include href="../schema/schema.xsd"/>
<include href="application.wadl/xsd0.xsd">
<doc title="Generated" xml:lang="en"/>
</include>
</grammars>
問題
/rest/application.wadl/xsd0.xsd
は私のクラスから自動的に生成されますが、かなりとは全く異なります。schema.xsd
のものです。このWADL上wadl2java
のようなツールを呼び出すことに加えて は、
/rest/application.wadl/xsd0.xsd
は今(同じオブジェクトのための2つの定義を)矛盾している、無残おそらく
/schema/schema.xsd
、および を失敗しました。
この自動的に生成されたXSDの生成と拡散を無効にする方法はあり
(私は、この「コントラクトファースト」のアプローチを以下のよ以来、私はそれを必要としないとして)
/rest/application.wadl/xsd0.xsd
がヒットしたとき 、道は「オーバーライド」私の手で書かれたXSDとそのコンテンツがありますか?
質問
?そうでない場合
あなたの助けを事前に感謝を(私の周りGoogleで検索してWadlResourceについて見つけ、カスタマイズされたWADLを生成するが、XSD生成自体については何も見つかりませんでした)!
M.
編集
1)私は、ジャージーチームに問題を提起し、返信ました: http://java.net/projects/jersey/lists/users/archive/2012-06/message/8
2)私は、チケット(JERSEY-1230)を調達、パベルの指示に従って。 私は現在、自分自身で修正を提出するか、Jerseyチームから修正を受けることにしています。
の問題が修正されました。http://java.net/jrow/browse/JERSEY-1230 –
あなた自身の質問への回答として上記を投稿し、それを受け入れる必要があります(返信されていないQのリスト)。 – scottb