You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Krzysztof Mackowiak (JIRA)" <ji...@apache.org> on 2018/01/10 15:59:00 UTC
[jira] [Comment Edited] (CAMEL-10165)
DefaultCxfMessageMapper.getBasePath creates a incorrect http path
[ https://issues.apache.org/jira/browse/CAMEL-10165?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16320446#comment-16320446 ]
Krzysztof Mackowiak edited comment on CAMEL-10165 at 1/10/18 3:58 PM:
----------------------------------------------------------------------
I've attached a patch for version 2.20.x which contains a test and fix for this bug.
was (Author: kmackowiak):
Here is a patch for version 2.20.x which contains a test and fix for this bug.
> DefaultCxfMessageMapper.getBasePath creates a incorrect http path
> -----------------------------------------------------------------
>
> Key: CAMEL-10165
> URL: https://issues.apache.org/jira/browse/CAMEL-10165
> Project: Camel
> Issue Type: Bug
> Components: camel-cxf
> Affects Versions: 2.17.2
> Reporter: Zoltan Farkas
> Attachments: CAMEL_10165_test_and_bugfix.patch
>
>
> in DefaultCxfMessageMapper.java:
> {code}
> protected String getBasePath(Exchange camelExchange) {
> String answer = camelExchange.getIn().getHeader(Exchange.HTTP_BASE_URI, String.class);
> if (answer == null) {
> answer = camelExchange.getFromEndpoint().getEndpointUri();
> }
> return answer;
> }
> {code}
> camelExchange.getFromEndpoint().getEndpointUri()
> in 2.14 returns a valid http URL for the jetty endpoint...]
> meanwhile in 2.17 it return a camel url that includes the scheme and it breaks the semantics of this method. I had to change the method to:
> {code}
> protected String getBasePath(Exchange camelExchange) {
> String answer = camelExchange.getIn().getHeader(Exchange.HTTP_BASE_URI, String.class);
> if (answer == null) {
> Endpoint fromEndpoint = camelExchange.getFromEndpoint();
> if (fromEndpoint instanceof HttpCommonEndpoint) {
> try {
> URI u = ((HttpCommonEndpoint) fromEndpoint). getHttpUri();
> answer = new URI(u.getScheme(), u.getUserInfo(), u.getHost(), u.getPort(), u.getPath(),
> null, null).toString();
> } catch (URISyntaxException ex) {
> throw new RuntimeException(ex);
> }
> } else {
> return null;
> }
> }
> return answer;
> }
> {code}
> I am not sure this is the best way to deal with this, but it works...
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)