You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2017/04/26 13:23:25 UTC
camel git commit: CAMEL-11024: camel-catalog - asEndpointUri to
support connectors/component with no context-path part
Repository: camel
Updated Branches:
refs/heads/master 367d8c68f -> a978d4750
CAMEL-11024: camel-catalog - asEndpointUri to support connectors/component with no context-path part
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/a978d475
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a978d475
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a978d475
Branch: refs/heads/master
Commit: a978d47500bd2ae6738678f0ba04074786b37ec9
Parents: 367d8c6
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Apr 26 15:23:11 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Apr 26 15:23:11 2017 +0200
----------------------------------------------------------------------
.../runtimecatalog/AbstractCamelCatalog.java | 51 +++++++++++-------
.../AbstractCamelCatalogTest.java | 54 ++++++++++++++++++++
.../camel/catalog/AbstractCamelCatalog.java | 51 +++++++++++-------
3 files changed, 120 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/a978d475/camel-core/src/main/java/org/apache/camel/runtimecatalog/AbstractCamelCatalog.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/runtimecatalog/AbstractCamelCatalog.java b/camel-core/src/main/java/org/apache/camel/runtimecatalog/AbstractCamelCatalog.java
index 0420708..3cda9d6 100644
--- a/camel-core/src/main/java/org/apache/camel/runtimecatalog/AbstractCamelCatalog.java
+++ b/camel-core/src/main/java/org/apache/camel/runtimecatalog/AbstractCamelCatalog.java
@@ -919,12 +919,14 @@ public abstract class AbstractCamelCatalog {
// build endpoint uri
StringBuilder sb = new StringBuilder();
- sb.append(scheme);
- sb.append(":");
+ // add scheme later as we need to take care if there is any context-path or query parameters which
+ // affect how the URI should be constructed
if (hasAllKeys) {
// we have all the keys for the syntax so we can build the uri the easy way
- sb.append(syntax);
+ if (syntax != null) {
+ sb.append(syntax);
+ }
if (!copy.isEmpty()) {
boolean hasQuestionmark = sb.toString().contains("?");
@@ -1020,7 +1022,18 @@ public abstract class AbstractCamelCatalog {
}
}
- return sb.toString();
+ String remainder = sb.toString();
+ boolean queryOnly = remainder.startsWith("?");
+ if (queryOnly) {
+ // it has only query parameters
+ return scheme + remainder;
+ } else if (!remainder.isEmpty()) {
+ // it has context path and possible query parameters
+ return scheme + ":" + remainder;
+ } else {
+ // its empty without anything
+ return scheme;
+ }
}
@Deprecated
@@ -1055,22 +1068,24 @@ public abstract class AbstractCamelCatalog {
// build tokens between the separators
List<String> tokens = new ArrayList<>();
- String current = "";
- for (int i = 0; i < syntax.length(); i++) {
- char ch = syntax.charAt(i);
- if (Character.isLetterOrDigit(ch)) {
- current += ch;
- } else {
- // reset for new current tokens
- if (current.length() > 0) {
- tokens.add(current);
- current = "";
+ if (syntax != null) {
+ String current = "";
+ for (int i = 0; i < syntax.length(); i++) {
+ char ch = syntax.charAt(i);
+ if (Character.isLetterOrDigit(ch)) {
+ current += ch;
+ } else {
+ // reset for new current tokens
+ if (current.length() > 0) {
+ tokens.add(current);
+ current = "";
+ }
}
}
- }
- // anything left over?
- if (current.length() > 0) {
- tokens.add(current);
+ // anything left over?
+ if (current.length() > 0) {
+ tokens.add(current);
+ }
}
return tokens.toArray(new String[tokens.size()]);
http://git-wip-us.apache.org/repos/asf/camel/blob/a978d475/camel-core/src/test/java/org/apache/camel/runtimecatalog/AbstractCamelCatalogTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/runtimecatalog/AbstractCamelCatalogTest.java b/camel-core/src/test/java/org/apache/camel/runtimecatalog/AbstractCamelCatalogTest.java
index 309fb8e..895fdeb 100644
--- a/camel-core/src/test/java/org/apache/camel/runtimecatalog/AbstractCamelCatalogTest.java
+++ b/camel-core/src/test/java/org/apache/camel/runtimecatalog/AbstractCamelCatalogTest.java
@@ -101,4 +101,58 @@ public class AbstractCamelCatalogTest {
assertEquals("comp:{value1}:/value2/?param3=/value3/{param}", endpointUri);
}
+
+ @Test
+ public void shouldContextPathAndQuery() throws URISyntaxException {
+ expect(resolver.getComponentJSonSchema("comp")).andReturn("{\n"//
+ + " \"component\": {\n"//
+ + " \"syntax\": \"comp:value1\"\n"//
+ + " }\n"//
+ + "}");
+
+ replay(resolver);
+
+ final Map<String, String> properties = new HashMap<>();
+ properties.put("value1", "camel");
+ properties.put("foo", "123");
+
+ final String endpointUri = catalog.doAsEndpointUri("comp", properties, "&", false);
+
+ assertEquals("comp:camel?foo=123", endpointUri);
+ }
+
+ @Test
+ public void shouldEmptyContextPath() throws URISyntaxException {
+ expect(resolver.getComponentJSonSchema("comp")).andReturn("{\n"//
+ + " \"component\": {\n"//
+ + " \"syntax\": \"comp\"\n"//
+ + " }\n"//
+ + "}");
+
+ replay(resolver);
+
+ final Map<String, String> properties = new HashMap<>();
+
+ final String endpointUri = catalog.doAsEndpointUri("comp", properties, "&", false);
+
+ assertEquals("comp", endpointUri);
+ }
+
+ @Test
+ public void shouldEmptyContextPathWithQuery() throws URISyntaxException {
+ expect(resolver.getComponentJSonSchema("comp")).andReturn("{\n"//
+ + " \"component\": {\n"//
+ + " \"syntax\": \"comp\"\n"//
+ + " }\n"//
+ + "}");
+
+ replay(resolver);
+
+ final Map<String, String> properties = new HashMap<>();
+ properties.put("foo", "123");
+
+ final String endpointUri = catalog.doAsEndpointUri("comp", properties, "&", false);
+
+ assertEquals("comp?foo=123", endpointUri);
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/a978d475/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java
----------------------------------------------------------------------
diff --git a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java
index 6511eff..b285d3a 100644
--- a/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java
+++ b/platforms/camel-catalog/src/main/java/org/apache/camel/catalog/AbstractCamelCatalog.java
@@ -919,12 +919,14 @@ public abstract class AbstractCamelCatalog {
// build endpoint uri
StringBuilder sb = new StringBuilder();
- sb.append(scheme);
- sb.append(":");
+ // add scheme later as we need to take care if there is any context-path or query parameters which
+ // affect how the URI should be constructed
if (hasAllKeys) {
// we have all the keys for the syntax so we can build the uri the easy way
- sb.append(syntax);
+ if (syntax != null) {
+ sb.append(syntax);
+ }
if (!copy.isEmpty()) {
boolean hasQuestionmark = sb.toString().contains("?");
@@ -1020,7 +1022,18 @@ public abstract class AbstractCamelCatalog {
}
}
- return sb.toString();
+ String remainder = sb.toString();
+ boolean queryOnly = remainder.startsWith("?");
+ if (queryOnly) {
+ // it has only query parameters
+ return scheme + remainder;
+ } else if (!remainder.isEmpty()) {
+ // it has context path and possible query parameters
+ return scheme + ":" + remainder;
+ } else {
+ // its empty without anything
+ return scheme;
+ }
}
@Deprecated
@@ -1055,22 +1068,24 @@ public abstract class AbstractCamelCatalog {
// build tokens between the separators
List<String> tokens = new ArrayList<>();
- String current = "";
- for (int i = 0; i < syntax.length(); i++) {
- char ch = syntax.charAt(i);
- if (Character.isLetterOrDigit(ch)) {
- current += ch;
- } else {
- // reset for new current tokens
- if (current.length() > 0) {
- tokens.add(current);
- current = "";
+ if (syntax != null) {
+ String current = "";
+ for (int i = 0; i < syntax.length(); i++) {
+ char ch = syntax.charAt(i);
+ if (Character.isLetterOrDigit(ch)) {
+ current += ch;
+ } else {
+ // reset for new current tokens
+ if (current.length() > 0) {
+ tokens.add(current);
+ current = "";
+ }
}
}
- }
- // anything left over?
- if (current.length() > 0) {
- tokens.add(current);
+ // anything left over?
+ if (current.length() > 0) {
+ tokens.add(current);
+ }
}
return tokens.toArray(new String[tokens.size()]);