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

Jörg Hohwiller commented on CXF-8408:
-------------------------------------

Hi [~amccright],

thanks for your quick response, analysis and explanation. This is actually not 
a bug but an intended behaviour. If fully understand that you want to comply 
with JAX-RS API specification and the spec also makes sense to me.

So instead this issue should been seen as a feature request to extend 
ResponseImpl such that it gets possible to retrieve the request URL without 
unwrapping CXF internal implementation details. This would be an awesome 
improvement to solve this issue.

You can see my ugly code where I try to get the URL:

[https://github.com/devonfw/devon4j/blob/0ac5c96673b4c5c2b08ab73b93692aac41b52ad3/modules/cxf-client-rest/src/main/java/com/devonfw/module/cxf/common/impl/client/rest/RestServiceExceptionMapper.java#L108]

as well as the operation (invoked method):

[https://github.com/devonfw/devon4j/blob/0ac5c96673b4c5c2b08ab73b93692aac41b52ad3/modules/cxf-client-rest/src/main/java/com/devonfw/module/cxf/common/impl/client/rest/RestServiceExceptionMapper.java#L65]

It currently works and in the worst case if something changes in the future 
inside CXF it will return null without causing NPE so I do not have any 
priority on your enhancement. But still it seems a valuable nice-to-have 
improvement and once released, I could replace my hack(s) with just one method 
call.

> Response.getLocation() returns null after update from CXF 3.3.6 to 3.4.1
> ------------------------------------------------------------------------
>
>                 Key: CXF-8408
>                 URL: https://issues.apache.org/jira/browse/CXF-8408
>             Project: CXF
>          Issue Type: Improvement
>    Affects Versions: 3.4.1
>            Reporter: Jörg Hohwiller
>            Priority: Major
>
> javax.ws.rs.core.Response.getLocation() used to return the URL of the service 
> invoked. We used this information to enhance the error handling via a custom 
> org.apache.cxf.jaxrs.client.ResponseExceptionMapper since CXF lacks to 
> provide contextual information in error scenarios making it hard to use in 
> productive environments when service client invocations fail without 
> contextual information available.
> After we now updated from 3.3.6 to 3.4.1 one of our tests failed with an NPE 
> since response.getLocation() now returns null instead of the correct URL and 
> we were doing url.toString() on that without checking for null.
> I am working on ugly workarounds (casting to ResponseImpl and getting the 
> Conduit to retrieve at least the base URL) but it would be great if CXF could 
> fix this regression bug at the root.
> [https://github.com/devonfw/devon4j/pull/310/]



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to