cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sergey Beryozkin (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-5706) wadl2java: Return types aren't generated properly on server interfaces for methods with more than 1 response element.
Date Thu, 24 Apr 2014 14:36:16 GMT

    [ https://issues.apache.org/jira/browse/CXF-5706?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13979782#comment-13979782
] 

Sergey Beryozkin commented on CXF-5706:
---------------------------------------

You can return an error representation by throwing the exception, so it is not the only way
to have Response generated. There are many combinations possible with the way response statuses
are represented so we can not generalize it around Response. It will be possible though to
nominate method names that will have Response generated if preferred. Using -tMap might also
provide a workaround

> wadl2java: Return types aren't generated properly on server interfaces for methods with
more than 1 response element.
> ---------------------------------------------------------------------------------------------------------------------
>
>                 Key: CXF-5706
>                 URL: https://issues.apache.org/jira/browse/CXF-5706
>             Project: CXF
>          Issue Type: Bug
>          Components: Tooling
>    Affects Versions: 3.0.0-milestone2
>         Environment: Java version "1.6.0_45"
> Windows 7 64 bit
>            Reporter: Claude-Alain
>
> 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:
> {code:xml}
> <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>
> {code}
> 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".



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message