Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-5706

wadl2java: Return types aren't generated properly on server interfaces for methods with more than 1 response element.

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 3.0.0-milestone2
    • Fix Version/s: 3.0, 2.7.12
    • Component/s: Tooling
    • Labels:
      None
    • Environment:

      Java version "1.6.0_45"
      Windows 7 64 bit

    • Estimated Complexity:
      Moderate

      Description

      Regarding this subject, a fix has been done (CXF-3662) but I have some reasons to think that it has not been done in the right way.

      In the given example, there is one normal response (status code = 200) and one response which is an error (status code = 400). In that case the fix is doing the right thing, the first type is take into account and the error type can be managed by an exception mapper (from what I see in the documentation of RESTEasy and Jersey).

      But in the case we introduce another response like shown in the example just below:

      <method name="GET" id="getUserDefaults">
      	<doc>Gets default user configuration values.</doc>
      	<response status="200">
      		<representation mediaType="application/xml" element="fmc:userDefaults" />
      	</response>
      	<response status="204">
      		<representation mediaType="application/xml" element="fmc:noContent" />
      	</response>
      	<response status="400">
      		<representation mediaType="application/xml" element="fmc:errorList" />
      	</response>
      </method>
      

      then the return type for the corresponding method in the generated interface will be "userDefaults". Since a Java method can only return an object of a given type then it will never be possible to return an object of type "noContent".

      So I think the only way to solve this case is to return a type "javax.ws.rs.core.Response".

      The only workaround I found is to remove the type type specified in the response to make sure that we always have a return type "Response".

        Attachments

          Activity

            People

            • Assignee:
              sergey_beryozkin Sergey Beryozkin
              Reporter:
              claudal75 Claude-Alain
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: