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

Andy McCright commented on CXF-8408:
------------------------------------

Hi [~hohwille], [~reta],

The 3.3.6 behavior was wrong from the start.  I made the original change to put 
the request's URI in the Response's location property when I implemented 
MicroProfile Rest Client 1.1[1], but this change violated the JAX-RS 
specification so I reverted that change in a subsequent change[2].

Per the JAX-RS TCK [3 and 4], the Response's location property corresponds to 
the HTTP response's `Location` header - so it should not be used for the 
request URI - it should only be non-null if the HTTP response contains a 
non-null value in the `Location` header. 

I certainly see the value of getting the request URI from the Response object.  
Perhaps a solution here would be to add a new getRequestUri() method to 
ResponseImpl that would return the request URI?  

Hope this helps!


[1] https://github.com/apache/cxf/pull/396
[2] https://github.com/apache/cxf/pull/697
[3] 
https://github.com/eclipse-ee4j/jakartaee-tck/blob/c457c40af61d307b0dea0e0489fed7ab4c3e8490/src/com/sun/ts/tests/jaxrs/ee/rs/core/response/JAXRSClient.java#L766
[4] 
https://github.com/eclipse-ee4j/jakartaee-tck/blob/c457c40af61d307b0dea0e0489fed7ab4c3e8490/src/com/sun/ts/tests/jaxrs/ee/rs/core/response/JAXRSClient.java#L783

> 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