0

@InjectParamを使用して、Jersey 1.12 実装の @QueryParam 注釈付きフィールドを含む JAX-RS リソースにクエリ パラメータを挿入しています。

リソース:

@Path("query")
@GET
@Produces(MediaType.APPLICATION_XML)
public Query queryParam(@InjectParam Query query) {
    return query;
}

そして、注入されたパラメーターを受け取る pojo には、いくつかの JAXB および JAX-RS アノテーションがあります。

 @XmlRootElement
 public class Query {
    @QueryParam("value1")
    String value1;
 }

REST クライアントからの簡単なテスト:

http://localhost:8888/sandbox/query?value1=hello3

正しい結果が生成されます。

<query>
  <value1>hello3</value1>
</query>

それは素晴らしいことですが、wadl-maven-pluginを使用して、WADL ファイルを使用してクライアント コードを生成するクライアントを生成します。WADL ファイルには、@QueryParam アノテーションがリソース メソッド パラメータに含まれていた場合に必要な要求パラメータが含まれていません。その後、クライアントはパラメーターを受け入れないように作成されます。

SandboxApi.sandbox().query().getAsQuery()

生成された入力済みのクライアント pojo を受け入れる代わりに。

Query queryClient = new Query();
queryClient.setValue1("hello3");
SandboxApi.sandbox().query().getAsQuery(queryClient);

Wadl2JavaがPOJOを受け入れ、その後適切なフィールドをクエリパラメータとして送信するクライアントを生成できるように、適切な情報でWADLを生成するジャージーリソースに付けることができる魔法の注釈を知っている人はいますか?

4

1 に答える 1

0

Jersey に取り組んでいる何人かの優秀な人々から (プライベートな会話を介して) 提供された応答:

@Path("query")
@GET
@Produces(MediaType.APPLICATION_XML)
public Query queryParam(@QueryParam("value1") String value1, 
                        @InjectParam Query query) {
   return query; 
}

クエリ パラメータ "value1" が生成された WADL に表示されるはずです。

組み込みの WADL ジェネレーターには、これらのケースのサポートが含まれておらず、すぐにサポートされるかどうかはわかりません。

于 2012-05-08T18:03:24.773 に答える