You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Guus der Kinderen (JIRA)" <ji...@apache.org> on 2013/12/23 13:46:53 UTC

[jira] [Created] (CXF-5475) wadl2java fails when using representation reference

Guus der Kinderen created CXF-5475:
--------------------------------------

             Summary: wadl2java fails when using representation reference
                 Key: CXF-5475
                 URL: https://issues.apache.org/jira/browse/CXF-5475
             Project: CXF
          Issue Type: Bug
    Affects Versions: 3.0.0-milestone1
            Reporter: Guus der Kinderen
            Priority: Minor


It appears that wadl2java fails to produce some code when a response representation is defined as a reference (as opposed to an inline definition).

To illustrate the issue, snippets of a WADL are provided below. Each snippet is followed by a snippet of code as generated by wadl2java.
 
The first WADL snippet defines a response representation inline:
{code:xml}<resource path="inline">
    <method name="GET">
        <response status="200">
            <representation element="SkuType" mediaType="application/xml"/>
        </response>
    </method>
</resource>
{code}

This Java code is generated:
{code:java}
@Path("inline")
public interface InlineResource {

    @GET
    @Produces("application/xml")
    Response get();

}
{code}

When the response representation is using a representation reference[^(1)^|http://www.w3.org/Submission/wadl/#x3-220002.11.1], then the generated code appears to be missing details. This modified WADL snippet illustrates the issue:
{code:xml}
<resource path="reference">
    <method name="GET">
        <response status="200">
            <representation href="SkuRep"/>
        </response>
    </method>
</resource>

<representation id="SkuRep" element="SkuType" mediaType="application/xml"/>{code}

Based on the last WADL snippet, this Java code is generated:

{code:java}@Path("reference")
public interface ReferenceResource {

    @GET
    @Produces()
    Response get();

}{code}

*Observed behavior* 
Code details are missing (note that the media type is missing from the last snippet of Java code), when a representation reference is used.
*Expected behavior*
wadl2java should generate similar Java code for both WADL snippets that are provided above.

Side-note: when the mediaType attribute is added to the representation reference the generated code looks ok. However, this appears to be prohibited by the WADL specification: ??"A representation reference element MUST NOT have any other WADL-defined attributes or contain any WADL-defined child elements.??"

{code:xml}
<resource path="illegal">
    <method name="GET">
        <response status="200">
            <representation href="SkuRep" mediaType="application/xml"/>
        </response>
    </method>
</resource>{code}

{code:java}@Path("illegal")
public interface IllegalResource {

    @GET
    @Produces("application/xml")
    Response get();

}{code}

Note that for the purpose of illustrating the problem, the mediaType attribute was used. The issue might or might not affect other attributes or aspects of code generation (this remains untested).

The behavior described in this issue was reproduced using the wadl2java Maven plugin, version 3.0.0-milestone1.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)