Camel catalog - Add api to validate endpoint uri
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/cbf31791
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/cbf31791
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/cbf31791
Branch: refs/heads/camel-2.16.x
Commit: cbf317918742ce68bd5e744d0299c01a4f3c99f8
Parents: 9aeccdb
Author: Claus Ibsen <davsclaus@apache.org>
Authored: Tue Dec 22 10:08:44 2015 +0100
Committer: Claus Ibsen <davsclaus@apache.org>
Committed: Wed Dec 23 09:42:56 2015 +0100
----------------------------------------------------------------------
.../camel/catalog/DefaultCamelCatalog.java | 13 ++++++++---
.../camel/catalog/EndpointValidationResult.java | 23 +++++++++++++++++++-
.../apache/camel/catalog/JSonSchemaHelper.java | 17 +++++++++++++++
.../apache/camel/catalog/CamelCatalogTest.java | 11 +++++++++-
4 files changed, 59 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/cbf31791/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 9ad91bd..d9aebec 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
@@ -47,6 +47,7 @@ import static org.apache.camel.catalog.JSonSchemaHelper.getRow;
import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyBoolean;
import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyInteger;
import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyNumber;
+import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyObject;
import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyRequired;
import static org.apache.camel.catalog.URISupport.createQueryString;
import static org.apache.camel.catalog.URISupport.isEmpty;
@@ -675,12 +676,10 @@ public class DefaultCamelCatalog implements CamelCatalog {
boolean placeholder = value.startsWith("{{") || value.startsWith("${") || value.startsWith("$simple{");
Map<String, String> row = getRow(rows, name);
- // unknown option
if (row == null) {
+ // unknown option
result.addUnknown(name);
} else {
- // invalid value/type
-
// is required but the value is empty
boolean required = isPropertyRequired(rows, name);
if (required && isEmpty(value)) {
@@ -705,6 +704,14 @@ public class DefaultCamelCatalog implements CamelCatalog {
}
}
+ // is reference lookup of bean
+ if (isPropertyObject(rows, name)) {
+ // must start with # and be at least 2 characters
+ if (!value.startsWith("#") || value.length() <= 1) {
+ result.addInvalidReference(name, value);
+ }
+ }
+
// is boolean
if (!placeholder && isPropertyBoolean(rows, name)) {
// value must be a boolean
http://git-wip-us.apache.org/repos/asf/camel/blob/cbf31791/platforms/catalog/src/main/java/org/apache/camel/catalog/EndpointValidationResult.java
----------------------------------------------------------------------
diff --git a/platforms/catalog/src/main/java/org/apache/camel/catalog/EndpointValidationResult.java
b/platforms/catalog/src/main/java/org/apache/camel/catalog/EndpointValidationResult.java
index 413aaa5..7bb33e1 100644
--- a/platforms/catalog/src/main/java/org/apache/camel/catalog/EndpointValidationResult.java
+++ b/platforms/catalog/src/main/java/org/apache/camel/catalog/EndpointValidationResult.java
@@ -39,6 +39,7 @@ public class EndpointValidationResult implements Serializable {
private Set<String> required;
private Map<String, String> invalidEnum;
private Map<String, String[]> invalidEnumChoices;
+ private Map<String, String> invalidReference;
private Map<String, String> invalidBoolean;
private Map<String, String> invalidInteger;
private Map<String, String> invalidNumber;
@@ -50,7 +51,7 @@ public class EndpointValidationResult implements Serializable {
public boolean isSuccess() {
return syntaxError == null && unknownComponent == null
&& unknown == null && required == null && invalidEnum
== null && invalidEnumChoices == null
- && invalidBoolean == null && invalidInteger == null &&
invalidNumber == null;
+ && invalidReference == null && invalidBoolean == null &&
invalidInteger == null && invalidNumber == null;
}
public void addSyntaxError(String syntaxError) {
@@ -89,6 +90,13 @@ public class EndpointValidationResult implements Serializable {
invalidEnumChoices.put(name, choices);
}
+ public void addInvalidReference(String name, String value) {
+ if (invalidReference == null) {
+ invalidReference = new LinkedHashMap<String, String>();
+ }
+ invalidReference.put(name, value);
+ }
+
public void addInvalidBoolean(String name, String value) {
if (invalidBoolean == null) {
invalidBoolean = new LinkedHashMap<String, String>();;
@@ -130,6 +138,10 @@ public class EndpointValidationResult implements Serializable {
return invalidEnum;
}
+ public Map<String, String> getInvalidReference() {
+ return invalidReference;
+ }
+
public Map<String, String> getInvalidBoolean() {
return invalidBoolean;
}
@@ -177,6 +189,15 @@ public class EndpointValidationResult implements Serializable {
options.put(entry.getKey(), "Invalid enum value: " + entry.getValue() + ".
Possible values: " + str);
}
}
+ if (invalidReference != null) {
+ for (Map.Entry<String, String> entry : invalidReference.entrySet()) {
+ if (!entry.getValue().startsWith("#")) {
+ options.put(entry.getKey(), "Invalid reference value: " + entry.getValue()
+ " must start with #");
+ } else {
+ options.put(entry.getKey(), "Invalid reference value: " + entry.getValue()
+ " must not be empty");
+ }
+ }
+ }
if (invalidBoolean != null) {
for (Map.Entry<String, String> entry : invalidBoolean.entrySet()) {
options.put(entry.getKey(), "Invalid boolean value: " + entry.getValue());
http://git-wip-us.apache.org/repos/asf/camel/blob/cbf31791/platforms/catalog/src/main/java/org/apache/camel/catalog/JSonSchemaHelper.java
----------------------------------------------------------------------
diff --git a/platforms/catalog/src/main/java/org/apache/camel/catalog/JSonSchemaHelper.java
b/platforms/catalog/src/main/java/org/apache/camel/catalog/JSonSchemaHelper.java
index e3e4beb..f0755ef 100644
--- a/platforms/catalog/src/main/java/org/apache/camel/catalog/JSonSchemaHelper.java
+++ b/platforms/catalog/src/main/java/org/apache/camel/catalog/JSonSchemaHelper.java
@@ -180,6 +180,23 @@ public final class JSonSchemaHelper {
return false;
}
+ public static boolean isPropertyObject(List<Map<String, String>> rows, String
name) {
+ for (Map<String, String> row : rows) {
+ String type = null;
+ boolean found = false;
+ if (row.containsKey("name")) {
+ found = name.equals(row.get("name"));
+ }
+ if (row.containsKey("type")) {
+ type = row.get("type");
+ }
+ if (found) {
+ return "object".equals(type);
+ }
+ }
+ return false;
+ }
+
public static String getPropertyDefaultValue(List<Map<String, String>> rows,
String name) {
for (Map<String, String> row : rows) {
String defaultValue = null;
http://git-wip-us.apache.org/repos/asf/camel/blob/cbf31791/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 74776b5..08b0979 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
@@ -407,6 +407,15 @@ public class CamelCatalogTest {
assertFalse(result.isSuccess());
assertEquals("unknown", result.getInvalidEnum().get("destinationType"));
+ // reference okay
+ result = catalog.validateEndpointProperties("jms:queue:myqueue?jmsKeyFormatStrategy=#key");
+ assertTrue(result.isSuccess());
+
+ // reference
+ result = catalog.validateEndpointProperties("jms:queue:myqueue?jmsKeyFormatStrategy=key");
+ assertFalse(result.isSuccess());
+ assertEquals("key", result.getInvalidReference().get("jmsKeyFormatStrategy"));
+
// okay
result = catalog.validateEndpointProperties("yammer:MESSAGES?accessToken=aaa&consumerKey=bbb&consumerSecret=ccc&useJson=true&initialDelay=500");
assertTrue(result.isSuccess());
@@ -436,7 +445,7 @@ public class CamelCatalogTest {
@Test
public void validatePropertiesSummary() throws Exception {
- EndpointValidationResult result = catalog.validateEndpointProperties("yammer:MESSAGES?blah=yada&accessToken=aaa&consumerKey=&useJson=no&initialDelay=five");
+ EndpointValidationResult result = catalog.validateEndpointProperties("yammer:MESSAGES?blah=yada&accessToken=aaa&consumerKey=&useJson=no&initialDelay=five&pollStrategy=myStrategy");
assertFalse(result.isSuccess());
String reason = result.summaryErrorMessage();
LOG.info(reason);
|