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/07/21 16:31:26 UTC
[2/2] camel git commit: CAMEL-11576 - Refactor endpoint syntax
handling in order to support camel-stream component
CAMEL-11576 - Refactor endpoint syntax handling in order to support camel-stream component
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/48317c28
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/48317c28
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/48317c28
Branch: refs/heads/camel-2.19.x
Commit: 48317c2821cece91ced9779ae64fe86a2af9daa9
Parents: c7e76cf
Author: Antoine DESSAIGNE <an...@gmail.com>
Authored: Fri Jul 21 16:48:30 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Jul 21 18:30:30 2017 +0200
----------------------------------------------------------------------
.../runtimecatalog/AbstractCamelCatalog.java | 32 +++++++++-----------
.../camel/catalog/AbstractCamelCatalog.java | 32 +++++++++-----------
.../apache/camel/catalog/CamelCatalogTest.java | 9 ++++++
3 files changed, 37 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/48317c28/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 3cda9d6..eeab211 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
@@ -67,6 +67,7 @@ public abstract class AbstractCamelCatalog {
// CHECKSTYLE:OFF
private static final Pattern SYNTAX_PATTERN = Pattern.compile("(\\w+)");
+ private static final Pattern COMPONENT_SYNTAX_PARSER = Pattern.compile("([^\\w-]*)([\\w-]+)");
private SuggestionStrategy suggestionStrategy;
private JSonSchemaResolver jsonSchemaResolver;
@@ -879,15 +880,15 @@ public abstract class AbstractCamelCatalog {
}
// grab the syntax
- String syntax = null;
+ String originalSyntax = null;
List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("component", json, false);
for (Map<String, String> row : rows) {
if (row.containsKey("syntax")) {
- syntax = row.get("syntax");
+ originalSyntax = row.get("syntax");
break;
}
}
- if (syntax == null) {
+ if (originalSyntax == null) {
throw new IllegalArgumentException("Endpoint with scheme " + scheme + " has no syntax defined in the json schema");
}
@@ -897,20 +898,17 @@ public abstract class AbstractCamelCatalog {
rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
// clip the scheme from the syntax
- syntax = after(syntax, ":");
-
- String originalSyntax = syntax;
+ originalSyntax = after(originalSyntax, ":");
// build at first according to syntax (use a tree map as we want the uri options sorted)
- Map<String, String> copy = new TreeMap<String, String>();
- for (Map.Entry<String, String> entry : properties.entrySet()) {
- String key = entry.getKey();
- String value = entry.getValue() != null ? entry.getValue() : "";
- if (syntax != null && syntax.contains(key)) {
- syntax = syntax.replace(key, value);
- } else {
- copy.put(key, value);
- }
+ Map<String, String> copy = new TreeMap<>(properties);
+ String syntax = "";
+ Matcher syntaxMatcher = COMPONENT_SYNTAX_PARSER.matcher(originalSyntax);
+ while (syntaxMatcher.find()) {
+ syntax += syntaxMatcher.group(1);
+ String propertyName = syntaxMatcher.group(2);
+ String propertyValue = copy.remove(propertyName);
+ syntax += propertyValue != null ? propertyValue : propertyName;
}
// do we have all the options the original syntax needs (easy way)
@@ -924,9 +922,7 @@ public abstract class AbstractCamelCatalog {
if (hasAllKeys) {
// we have all the keys for the syntax so we can build the uri the easy way
- if (syntax != null) {
- sb.append(syntax);
- }
+ sb.append(syntax);
if (!copy.isEmpty()) {
boolean hasQuestionmark = sb.toString().contains("?");
http://git-wip-us.apache.org/repos/asf/camel/blob/48317c28/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 b285d3a..3a97691 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
@@ -67,6 +67,7 @@ public abstract class AbstractCamelCatalog {
// CHECKSTYLE:OFF
private static final Pattern SYNTAX_PATTERN = Pattern.compile("(\\w+)");
+ private static final Pattern COMPONENT_SYNTAX_PARSER = Pattern.compile("([^\\w-]*)([\\w-]+)");
private SuggestionStrategy suggestionStrategy;
private JSonSchemaResolver jsonSchemaResolver;
@@ -879,15 +880,15 @@ public abstract class AbstractCamelCatalog {
}
// grab the syntax
- String syntax = null;
+ String originalSyntax = null;
List<Map<String, String>> rows = JSonSchemaHelper.parseJsonSchema("component", json, false);
for (Map<String, String> row : rows) {
if (row.containsKey("syntax")) {
- syntax = row.get("syntax");
+ originalSyntax = row.get("syntax");
break;
}
}
- if (syntax == null) {
+ if (originalSyntax == null) {
throw new IllegalArgumentException("Endpoint with scheme " + scheme + " has no syntax defined in the json schema");
}
@@ -897,20 +898,17 @@ public abstract class AbstractCamelCatalog {
rows = JSonSchemaHelper.parseJsonSchema("properties", json, true);
// clip the scheme from the syntax
- syntax = after(syntax, ":");
-
- String originalSyntax = syntax;
+ originalSyntax = after(originalSyntax, ":");
// build at first according to syntax (use a tree map as we want the uri options sorted)
- Map<String, String> copy = new TreeMap<String, String>();
- for (Map.Entry<String, String> entry : properties.entrySet()) {
- String key = entry.getKey();
- String value = entry.getValue() != null ? entry.getValue() : "";
- if (syntax != null && syntax.contains(key)) {
- syntax = syntax.replace(key, value);
- } else {
- copy.put(key, value);
- }
+ Map<String, String> copy = new TreeMap<>(properties);
+ String syntax = "";
+ Matcher syntaxMatcher = COMPONENT_SYNTAX_PARSER.matcher(originalSyntax);
+ while (syntaxMatcher.find()) {
+ syntax += syntaxMatcher.group(1);
+ String propertyName = syntaxMatcher.group(2);
+ String propertyValue = copy.remove(propertyName);
+ syntax += propertyValue != null ? propertyValue : propertyName;
}
// do we have all the options the original syntax needs (easy way)
@@ -924,9 +922,7 @@ public abstract class AbstractCamelCatalog {
if (hasAllKeys) {
// we have all the keys for the syntax so we can build the uri the easy way
- if (syntax != null) {
- sb.append(syntax);
- }
+ sb.append(syntax);
if (!copy.isEmpty()) {
boolean hasQuestionmark = sb.toString().contains("?");
http://git-wip-us.apache.org/repos/asf/camel/blob/48317c28/platforms/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
----------------------------------------------------------------------
diff --git a/platforms/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java b/platforms/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
index 3b9952c..2d35cf4 100644
--- a/platforms/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
+++ b/platforms/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
@@ -458,6 +458,15 @@ public class CamelCatalogTest {
}
@Test
+ public void testAsEndpointUriStream() throws Exception {
+ Map<String, String> map = new LinkedHashMap<>();
+ map.put("kind", "url");
+ map.put("url", "http://camel.apache.org");
+
+ assertEquals("stream:url?url=http://camel.apache.org", catalog.asEndpointUri("stream", map, false));
+ }
+
+ @Test
public void testEndpointPropertiesJms() throws Exception {
Map<String, String> map = catalog.endpointProperties("jms:queue:foo");
assertNotNull(map);