Fixed CamelCatalog to construct endpoint uris for netty endpoints
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8e169555 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8e169555 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8e169555 Branch: refs/heads/camel-2.16.x Commit: 8e169555793de37d48cf11b130ad446fb42c569d Parents: 836eb87 Author: Claus Ibsen <davscl...@apache.org> Authored: Sun Nov 1 17:36:13 2015 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Sun Nov 1 17:36:59 2015 +0100 ---------------------------------------------------------------------- .../java/org/apache/camel/catalog/DefaultCamelCatalog.java | 6 +++++- .../test/java/org/apache/camel/catalog/CamelCatalogTest.java | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/8e169555/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java ---------------------------------------------------------------------- diff --git a/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java b/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java index ed3837c..59e2ded 100644 --- a/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java +++ b/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java @@ -716,6 +716,7 @@ public class DefaultCamelCatalog implements CamelCatalog { int range = 0; boolean first = true; + boolean hasQuestionmark = false; for (int i = 0; i < options.size(); i++) { String key = options.get(i); String key2 = options2.get(i); @@ -726,6 +727,7 @@ public class DefaultCamelCatalog implements CamelCatalog { if (!first) { sb.append(token); } + hasQuestionmark |= token.contains("?") || key.contains("?"); sb.append(key2); first = false; } @@ -737,11 +739,13 @@ public class DefaultCamelCatalog implements CamelCatalog { String key2 = options2.get(range); sb.append(token); sb.append(key2); + hasQuestionmark |= token.contains("?") || key2.contains("?"); range++; } if (!copy.isEmpty()) { - sb.append('?'); + // the last option may already contain a ? char, if so we should use & instead of ? + sb.append(hasQuestionmark ? ampersand : '?'); String query = createQueryString(copy, ampersand); sb.append(query); } http://git-wip-us.apache.org/repos/asf/camel/blob/8e169555/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java ---------------------------------------------------------------------- diff --git a/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java b/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java index 98962df..5f0b6bb 100644 --- a/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java +++ b/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java @@ -160,6 +160,13 @@ public class CamelCatalogTest extends TestCase { String uri = catalog.asEndpointUri("netty4-http", map); assertEquals("netty4-http:http:localhost:8080/foo/bar?disconnect=true", uri); + + // lets set a query parameter in the path + map.put("path", "foo/bar?verbose=true"); + map.put("disconnect", "true"); + + uri = catalog.asEndpointUri("netty4-http", map); + assertEquals("netty4-http:http:localhost:8080/foo/bar?verbose=true&disconnect=true", uri); } @Test