Yes, with <resource path="/books/bookstore/{id}" type="#bookResource"/>
It generates both interfaces with Book get(@PathParam("id") String id);
But no subresource
Result I am tried to achive with resource_type is equal to this wadl with
ids:
<resources base="http://localhost:8080/">
<resource path="/bookstore">
<resource path="/{id}" type="#bookResource"
id="pkg.BookSubResource"/>
</resource>
<resource path="/books">
<resource path="/bookstore/{id}" type="#bookResource"
id="pkg.BookSubResource">
<param name="id" style="template"/>
<method name="GET">
<response>
<representation mediaType="application/xml" />
</response>
</method>
</resource>
</resource>
</resources>
It contains two resources with same id="pkg.BookSubResource" and it
generates desired result
1. @Path("/bookstore")
public interface BookstoreResource {
@Path("/{id}")
BookSubResource getBookSubResource();
}
2. @Path("/books")
public interface BooksResource {
@Path("/bookstore/{id}")
BookSubResource getBookSubResource(@PathParam("id") String id);
}
3. public interface BookSubResource {
@GET
@Produces("application/xml")
Book get();
}
Where (1) and (2) are using (3) subresource. In WADL this is achived with
duplicating id="pkg.BookSubResource" on different resources,
and ony one is containing "subresource" methods.
This is undocumented, but working feature. Hoewer, reading documentation I
was thinking that this should be described using
resource_type record, so this is why I am posted my question.
2016-04-25 13:27 GMT+04:00 Sergey Beryozkin <[email protected]>:
> Hi
> On 25/04/16 08:48, Vjacheslav V. Borisov wrote:
>
>> Hi!
>>
>> Trying to generate code from WADL with references
>>
>> http://cxf.apache.org/docs/jaxrs-services-description.html#JAXRSServicesDescription-
>> WADLwithreferences
>>
>>
>> I am getting strange results
>> 1.
>> @Path("/books")
>> public interface BooksResource {
>>
>> }
>>
>> 2.
>>
>> @Path("/bookstore/{id}")
>> public interface BookstoreIdResource {
>>
>> @GET
>> @Produces("application/xml")
>> Book get(@PathParam("id") String id);
>>
>> }
>>
>>
>> Why (1) public interface BooksResource is empty?
>> Shouldn't it contain method that returns subresource instance ?
>>
>
> The fact that example shows one resource enclosing another one does not
> mean the enclosed one needs to be generated as a JAX-RS subresource class
> (this is only possible to do with adding id attributes to WADL that can be
> understood by CXF, ids being class names),
>
> it is equivalent to a commented code in that example, however the fact the
> interface is empty is a problem, can you please try the commented out
> fragment instead ?
>
>
>> Why (2) contains Book get(..) method,
>> Shouldn't it also contain method that returns subresource instance ?
>>
>> Not sure I understand this question.
> <resource path="/bookstore/{id}" type="#bookResource"/>
>
> refers to a resource fragment where a GET method is defined
>
> Cheers, Sergey
>
> --
> Sergey Beryozkin
>
> Talend Community Coders
> http://coders.talend.com/
>