Repository: camel
Updated Branches:
  refs/heads/camel-2.18.x 2e020ea2e -> 550e1f3ef
  refs/heads/master 1e7bdeed2 -> 1460a1ffc


camel-catalog - Components that cannot do both consumer and producer should 
allow to be lenient in endpoint properties.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/1460a1ff
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1460a1ff
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1460a1ff

Branch: refs/heads/master
Commit: 1460a1ffce5c6ab726536ccb73852447b997d84b
Parents: 1e7bdee
Author: Claus Ibsen <[email protected]>
Authored: Wed Jan 18 11:59:15 2017 +0100
Committer: Claus Ibsen <[email protected]>
Committed: Wed Jan 18 11:59:15 2017 +0100

----------------------------------------------------------------------
 .../apache/camel/catalog/DefaultCamelCatalog.java | 13 +++++++++++--
 .../apache/camel/catalog/JSonSchemaHelper.java    | 18 ++++++++++++++++++
 .../apache/camel/catalog/CamelCatalogTest.java    |  5 +++++
 3 files changed, 34 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/1460a1ff/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 8e763db..3e5826f 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
@@ -54,7 +54,9 @@ import static 
org.apache.camel.catalog.JSonSchemaHelper.getPropertyKind;
 import static 
org.apache.camel.catalog.JSonSchemaHelper.getPropertyNameFromNameWithPrefix;
 import static org.apache.camel.catalog.JSonSchemaHelper.getPropertyPrefix;
 import static org.apache.camel.catalog.JSonSchemaHelper.getRow;
+import static 
org.apache.camel.catalog.JSonSchemaHelper.isComponentConsumerOnly;
 import static 
org.apache.camel.catalog.JSonSchemaHelper.isComponentLenientProperties;
+import static 
org.apache.camel.catalog.JSonSchemaHelper.isComponentProducerOnly;
 import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyBoolean;
 import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyConsumerOnly;
 import static org.apache.camel.catalog.JSonSchemaHelper.isPropertyInteger;
@@ -1143,8 +1145,15 @@ public class DefaultCamelCatalog implements CamelCatalog 
{
             }
 
             rows = JSonSchemaHelper.parseJsonSchema("component", json, false);
-            if (consumerOnly) {
-                // lenient properties is not support in consumer only mode
+
+            // is the component capable of both consumer and producer?
+            boolean canConsumeAndProduce = false;
+            if (!isComponentConsumerOnly(rows) && 
!isComponentProducerOnly(rows)) {
+                canConsumeAndProduce = true;
+            }
+
+            if (canConsumeAndProduce && consumerOnly) {
+                // lenient properties is not support in consumer only mode if 
the component can do both of them
                 lenientProperties = false;
             } else {
                 // only enable lenient properties if we should not ignore

http://git-wip-us.apache.org/repos/asf/camel/blob/1460a1ff/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 3acffdf..daaf3cd 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
@@ -123,6 +123,24 @@ public final class JSonSchemaHelper {
         return false;
     }
 
+    public static boolean isComponentConsumerOnly(List<Map<String, String>> 
rows) {
+        for (Map<String, String> row : rows) {
+            if (row.containsKey("consumerOnly")) {
+                return "true".equals(row.get("consumerOnly"));
+            }
+        }
+        return false;
+    }
+
+    public static boolean isComponentProducerOnly(List<Map<String, String>> 
rows) {
+        for (Map<String, String> row : rows) {
+            if (row.containsKey("producerOnly")) {
+                return "true".equals(row.get("producerOnly"));
+            }
+        }
+        return false;
+    }
+
     public static boolean isPropertyConsumerOnly(List<Map<String, String>> 
rows, String name) {
         for (Map<String, String> row : rows) {
             String labels = null;

http://git-wip-us.apache.org/repos/asf/camel/blob/1460a1ff/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 c5242d3..8efeed3 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
@@ -649,6 +649,11 @@ public class CamelCatalogTest {
         assertEquals("foo", result.getUnknown().iterator().next());
         assertNull(result.getLenient());
 
+        // lenient on rss consumer only
+        result = 
catalog.validateEndpointProperties("rss:file:src/test/data/rss20.xml?splitEntries=true&sortEntries=true&consumer.delay=50&foo=bar",
 false, true, false);
+        assertTrue(result.isSuccess());
+        assertEquals("foo", result.getLenient().iterator().next());
+
         // data format
         result = 
catalog.validateEndpointProperties("dataformat:string:marshal?charset=utf-8", 
true);
         assertTrue(result.isSuccess());

Reply via email to