Camel catalog should provide xml variation of creating endpoint uris
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b604e167 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b604e167 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b604e167 Branch: refs/heads/camel-2.15.x Commit: b604e1675db6758e82fe33c442a07310ddb97c64 Parents: 6d05e43 Author: Claus Ibsen <davscl...@apache.org> Authored: Thu May 28 15:31:48 2015 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Thu May 28 15:32:35 2015 +0200 ---------------------------------------------------------------------- .../org/apache/camel/catalog/CamelCatalog.java | 22 +++++++++++++++++++- .../camel/catalog/DefaultCamelCatalog.java | 22 ++++++++++++++++++-- .../org/apache/camel/catalog/URISupport.java | 5 +++-- .../apache/camel/catalog/CamelCatalogTest.java | 10 +++++++++ 4 files changed, 54 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/b604e167/platforms/catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java ---------------------------------------------------------------------- diff --git a/platforms/catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java b/platforms/catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java index f71fb8e..3a370d2 100644 --- a/platforms/catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java +++ b/platforms/catalog/src/main/java/org/apache/camel/catalog/CamelCatalog.java @@ -168,7 +168,17 @@ public interface CamelCatalog { String asEndpointUri(String scheme, String json) throws URISyntaxException; /** - * Creates an endpoint uri from the information from the properties + * Creates an endpoint uri from the information in the json schema + * + * @param scheme the endpoint schema + * @param json the json schema with the endpoint properties + * @return the constructed endpoint uri + * @throws java.net.URISyntaxException is thrown if there is encoding error + */ + String asEndpointUriXml(String scheme, String json) throws URISyntaxException; + + /** + * Creates an endpoint uri in XML style from the information from the properties * * @param scheme the endpoint schema * @param properties the properties as key value pairs @@ -176,4 +186,14 @@ public interface CamelCatalog { * @throws java.net.URISyntaxException is thrown if there is encoding error */ String asEndpointUri(String scheme, Map<String, String> properties) throws URISyntaxException; + + /** + * Creates an endpoint uri in XML style from the information from the properties + * + * @param scheme the endpoint schema + * @param properties the properties as key value pairs + * @return the constructed endpoint uri + * @throws java.net.URISyntaxException is thrown if there is encoding error + */ + String asEndpointUriXml(String scheme, Map<String, String> properties) throws URISyntaxException; } http://git-wip-us.apache.org/repos/asf/camel/blob/b604e167/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 2ea2d56..df45b19 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 @@ -572,6 +572,15 @@ public class DefaultCamelCatalog implements CamelCatalog { @Override public String asEndpointUri(String scheme, String json) throws URISyntaxException { + return doAsEndpointUri(scheme, json, "&"); + } + + @Override + public String asEndpointUriXml(String scheme, String json) throws URISyntaxException { + return doAsEndpointUri(scheme, json, "&"); + } + + private String doAsEndpointUri(String scheme, String json, String ampersand) throws URISyntaxException { List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("properties", json, true); Map<String, String> copy = new HashMap<String, String>(); @@ -604,11 +613,20 @@ public class DefaultCamelCatalog implements CamelCatalog { } } - return asEndpointUri(scheme, copy); + return doAsEndpointUri(scheme, copy, ampersand); } @Override public String asEndpointUri(String scheme, Map<String, String> properties) throws URISyntaxException { + return doAsEndpointUri(scheme, properties, "&"); + } + + @Override + public String asEndpointUriXml(String scheme, Map<String, String> properties) throws URISyntaxException { + return doAsEndpointUri(scheme, properties, "&"); + } + + private String doAsEndpointUri(String scheme, Map<String, String> properties, String ampersand) throws URISyntaxException { String json = componentJSonSchema(scheme); if (json == null) { throw new IllegalArgumentException("Cannot find endpoint with scheme " + scheme); @@ -686,7 +704,7 @@ public class DefaultCamelCatalog implements CamelCatalog { if (!copy.isEmpty()) { sb.append('?'); - String query = createQueryString(copy); + String query = createQueryString(copy, ampersand); sb.append(query); } http://git-wip-us.apache.org/repos/asf/camel/blob/b604e167/platforms/catalog/src/main/java/org/apache/camel/catalog/URISupport.java ---------------------------------------------------------------------- diff --git a/platforms/catalog/src/main/java/org/apache/camel/catalog/URISupport.java b/platforms/catalog/src/main/java/org/apache/camel/catalog/URISupport.java index ea62581..3c09d41 100644 --- a/platforms/catalog/src/main/java/org/apache/camel/catalog/URISupport.java +++ b/platforms/catalog/src/main/java/org/apache/camel/catalog/URISupport.java @@ -267,11 +267,12 @@ public final class URISupport { * Assembles a query from the given map. * * @param options the map with the options (eg key/value pairs) + * @param ampersand to use & for Java code, and & for XML * @return a query string with <tt>key1=value&key2=value2&...</tt>, or an empty string if there is no options. * @throws URISyntaxException is thrown if uri has invalid syntax. */ @SuppressWarnings("unchecked") - public static String createQueryString(Map<String, String> options) throws URISyntaxException { + public static String createQueryString(Map<String, String> options, String ampersand) throws URISyntaxException { try { if (options.size() > 0) { StringBuilder rc = new StringBuilder(); @@ -280,7 +281,7 @@ public final class URISupport { if (first) { first = false; } else { - rc.append("&"); + rc.append(ampersand); } String key = (String) o; http://git-wip-us.apache.org/repos/asf/camel/blob/b604e167/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 0f1b4d0..a8d4dba 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 @@ -100,6 +100,9 @@ public class CamelCatalogTest extends TestCase { String uri = catalog.asEndpointUri("file", map); assertEquals("file:src/data/inbox?delay=5000&noop=true", uri); + + String uri2 = catalog.asEndpointUriXml("file", map); + assertEquals("file:src/data/inbox?delay=5000&noop=true", uri2); } @Test @@ -112,6 +115,9 @@ public class CamelCatalogTest extends TestCase { String uri = catalog.asEndpointUri("ftp", map); assertEquals("ftp:someserver:21/foo?connectTimeout=5000", uri); + + String uri2 = catalog.asEndpointUriXml("ftp", map); + assertEquals("ftp:someserver:21/foo?connectTimeout=5000", uri2); } @Test @@ -133,8 +139,12 @@ public class CamelCatalogTest extends TestCase { map.put("deliveryPersistent", "false"); map.put("allowNullBody", "true"); + uri = catalog.asEndpointUri("jms", map); assertEquals("jms:foo?allowNullBody=true&deliveryPersistent=false", uri); + + String uri2 = catalog.asEndpointUriXml("jms", map); + assertEquals("jms:foo?allowNullBody=true&deliveryPersistent=false", uri2); } @Test