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 2016/01/05 09:32:55 UTC

[1/5] camel git commit: CAMEL-9479: bean/class component - Should use bean. prefix for bean options

Repository: camel
Updated Branches:
  refs/heads/camel-2.16.x d11b039c5 -> 0e77534ba
  refs/heads/master 7336d59d9 -> 6742fb77f


CAMEL-9479: bean/class component - Should use bean. prefix for bean options


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

Branch: refs/heads/master
Commit: e53d8a7265859f07d1cdc9a4c4ac04eaee8e08ce
Parents: 7336d59
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Jan 4 22:10:46 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Jan 4 22:10:46 2016 +0100

----------------------------------------------------------------------
 .../java/org/apache/camel/component/bean/BeanComponent.java  | 7 +++++--
 .../java/org/apache/camel/component/bean/BeanEndpoint.java   | 2 +-
 .../org/apache/camel/component/beanclass/ClassComponent.java | 8 +++++++-
 .../org/apache/camel/component/beanclass/ClassEndpoint.java  | 6 +-----
 .../bean/ClassComponentInvalidConfigurationTest.java         | 2 +-
 ...lassComponentWithPropertiesLookupSetFromEndpointTest.java | 2 +-
 .../ClassComponentWithPropertiesSetFromEndpointTest.java     | 2 +-
 7 files changed, 17 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/e53d8a72/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
index 6e54402..fb3ecb4 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanComponent.java
@@ -20,6 +20,7 @@ import java.util.Map;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.impl.UriEndpointComponent;
+import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.LRUSoftCache;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -48,8 +49,10 @@ public class BeanComponent extends UriEndpointComponent {
         BeanEndpoint endpoint = new BeanEndpoint(uri, this);
         endpoint.setBeanName(remaining);
         setProperties(endpoint, parameters);
-        // any remaining parameters are parameters for the bean
-        endpoint.setParameters(parameters);
+
+        // the bean.xxx options is for the bean
+        Map<String, Object> options = IntrospectionSupport.extractProperties(parameters, "bean.");
+        endpoint.setParameters(options);
         return endpoint;
     }
     

http://git-wip-us.apache.org/repos/asf/camel/blob/e53d8a72/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
index 2de7d53..cbad9f4 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
@@ -47,7 +47,7 @@ public class BeanEndpoint extends DefaultEndpoint {
             + "true means the message body should be an array of parameters. Note: This option is used internally by Camel, and is not intended for end users to use.")
     @Deprecated
     private boolean multiParameterArray;
-    @UriParam(label = "advanced", description = "Used for configuring additional properties on the bean")
+    @UriParam(prefix = "bean.", label = "advanced", description = "Used for configuring additional properties on the bean", multiValue = true)
     private Map<String, Object> parameters;
 
     public BeanEndpoint() {

http://git-wip-us.apache.org/repos/asf/camel/blob/e53d8a72/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java b/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
index 34b36b3..5372c0f 100644
--- a/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
+++ b/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassComponent.java
@@ -22,6 +22,7 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.component.bean.BeanComponent;
 import org.apache.camel.component.bean.BeanHolder;
 import org.apache.camel.component.bean.ConstantBeanHolder;
+import org.apache.camel.util.IntrospectionSupport;
 
 /**
  * The <a href="http://camel.apache.org/class.html">Class Component</a> is for binding JavaBeans to Camel message exchanges based on class name.
@@ -46,8 +47,13 @@ public class ClassComponent extends BeanComponent {
         // create bean
         Object bean = getCamelContext().getInjector().newInstance(clazz);
 
+        // the bean.xxx options is for the bean
+        Map<String, Object> options = IntrospectionSupport.extractProperties(parameters, "bean.");
+        endpoint.setParameters(options);
+
         // now set additional properties on it
-        setProperties(bean, parameters);
+        setProperties(bean, options);
+        validateParameters(uri, options, null);
 
         // and register the bean as a holder on the endpoint
         BeanHolder holder = new ConstantBeanHolder(bean, getCamelContext());

http://git-wip-us.apache.org/repos/asf/camel/blob/e53d8a72/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassEndpoint.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassEndpoint.java
index aa30a38..23b1807 100644
--- a/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/beanclass/ClassEndpoint.java
@@ -23,15 +23,11 @@ import org.apache.camel.spi.UriEndpoint;
 /**
  * The <a href="http://camel.apache.org/class.html">Class Component</a> is for invoking Java Classes (Java beans) from Camel.
  */
-@UriEndpoint(scheme = "class", title = "Class", syntax = "class:beanName", label = "core,java", lenientProperties = true)
+@UriEndpoint(scheme = "class", title = "Class", syntax = "class:beanName", label = "core,java")
 public class ClassEndpoint extends BeanEndpoint {
 
     public ClassEndpoint(String endpointUri, Component component) {
         super(endpointUri, component);
     }
 
-    @Override
-    public boolean isLenientProperties() {
-        return true;
-    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/e53d8a72/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentInvalidConfigurationTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentInvalidConfigurationTest.java b/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentInvalidConfigurationTest.java
index ae08b89..b3e35c7 100644
--- a/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentInvalidConfigurationTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentInvalidConfigurationTest.java
@@ -55,7 +55,7 @@ public class ClassComponentInvalidConfigurationTest extends ContextTestSupport {
             @Override
             public void configure() throws Exception {
                 from("direct:start")
-                    .to("class:org.apache.camel.component.bean.MyPrefixBean?foo=bar")
+                    .to("class:org.apache.camel.component.bean.MyPrefixBean?bean.foo=bar")
                     .to("mock:result");
             }
         });

http://git-wip-us.apache.org/repos/asf/camel/blob/e53d8a72/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentWithPropertiesLookupSetFromEndpointTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentWithPropertiesLookupSetFromEndpointTest.java b/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentWithPropertiesLookupSetFromEndpointTest.java
index d713c61..f87c7f4 100644
--- a/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentWithPropertiesLookupSetFromEndpointTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentWithPropertiesLookupSetFromEndpointTest.java
@@ -46,7 +46,7 @@ public class ClassComponentWithPropertiesLookupSetFromEndpointTest extends Conte
             @Override
             public void configure() throws Exception {
                 from("direct:start")
-                    .to("class:org.apache.camel.component.bean.MyPrefixBean?prefix=#foo")
+                    .to("class:org.apache.camel.component.bean.MyPrefixBean?bean.prefix=#foo")
                     .to("mock:result");
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/e53d8a72/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentWithPropertiesSetFromEndpointTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentWithPropertiesSetFromEndpointTest.java b/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentWithPropertiesSetFromEndpointTest.java
index a042f24..e3de4dc 100644
--- a/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentWithPropertiesSetFromEndpointTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/bean/ClassComponentWithPropertiesSetFromEndpointTest.java
@@ -38,7 +38,7 @@ public class ClassComponentWithPropertiesSetFromEndpointTest extends ContextTest
             @Override
             public void configure() throws Exception {
                 from("direct:start")
-                    .to("class:org.apache.camel.component.bean.MyPrefixBean?prefix=Bye")
+                    .to("class:org.apache.camel.component.bean.MyPrefixBean?bean.prefix=Bye")
                     .to("mock:result");
             }
         };


[5/5] camel git commit: Camel component docs - Should include information if an endpoint is lenient properties

Posted by da...@apache.org.
Camel component docs - Should include information if an endpoint is lenient properties


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

Branch: refs/heads/camel-2.16.x
Commit: 0e77534ba70a4f4c09c3f6664488003f0df8ea2e
Parents: f1aaabd
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Jan 5 09:31:57 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Jan 5 09:32:44 2016 +0100

----------------------------------------------------------------------
 .../java/org/apache/camel/component/stub/StubEndpoint.java    | 6 +-----
 .../java/org/apache/camel/catalog/DefaultCamelCatalog.java    | 7 ++++---
 .../test/java/org/apache/camel/catalog/CamelCatalogTest.java  | 6 +++++-
 3 files changed, 10 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/0e77534b/camel-core/src/main/java/org/apache/camel/component/stub/StubEndpoint.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/stub/StubEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/stub/StubEndpoint.java
index 9a96e9d..cd24eba 100644
--- a/camel-core/src/main/java/org/apache/camel/component/stub/StubEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/stub/StubEndpoint.java
@@ -36,7 +36,7 @@ import org.apache.camel.spi.UriEndpoint;
  * query arguments will usually fail. Stub won't though, as it basically ignores all query parameters
  * to let you quickly stub out one or more endpoints in your route temporarily.
  */
-@UriEndpoint(scheme = "stub", title = "Stub", syntax = "stub:name", consumerClass = VmConsumer.class, label = "core,testing", lenientProperties = true)
+@UriEndpoint(scheme = "stub", title = "Stub", syntax = "stub:name", consumerClass = VmConsumer.class, label = "core,testing")
 public class StubEndpoint extends VmEndpoint {
 
     public StubEndpoint(String endpointUri, Component component, BlockingQueue<Exchange> queue) {
@@ -56,8 +56,4 @@ public class StubEndpoint extends VmEndpoint {
         return new StubConsumer(this, processor);
     }
 
-    @Override
-    public boolean isLenientProperties() {
-        return true;
-    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/0e77534b/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 83b9c58..5a023c9 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
@@ -738,11 +738,12 @@ public class DefaultCamelCatalog implements CamelCatalog {
         Map<String, String> properties;
         List<Map<String, String>> rows;
         boolean lenientProperties;
+        String scheme;
 
         try {
             // parse the uri
             URI u = normalizeUri(uri);
-            String scheme = u.getScheme();
+            scheme = u.getScheme();
             String json = componentJSonSchema(scheme);
             if (json == null) {
                 result.addUnknownComponent(scheme);
@@ -785,9 +786,9 @@ public class DefaultCamelCatalog implements CamelCatalog {
             if (row == null) {
                 // unknown option
 
-                // only add as error if the component is not lenient properties
+                // only add as error if the component is not lenient properties, or not stub component
                 // as if we are lenient then the option is a dynamic extra option which we cannot validate
-                if (!lenientProperties) {
+                if (!lenientProperties && !"stub".equals(scheme)) {
                     result.addUnknown(name);
                     if (suggestionStrategy != null) {
                         String[] suggestions = suggestionStrategy.suggestEndpointOptions(getNames(rows), name);

http://git-wip-us.apache.org/repos/asf/camel/blob/0e77534b/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 fc804aa..f32597a 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
@@ -485,9 +485,13 @@ public class CamelCatalogTest {
         result = catalog.validateEndpointProperties("file:inbox?delay=5000&scheduler.foo=123&scheduler.bar=456");
         assertTrue(result.isSuccess());
 
-        // lenient
+        // stub
         result = catalog.validateEndpointProperties("stub:foo?me=123&you=456");
         assertTrue(result.isSuccess());
+
+        // lenient
+        result = catalog.validateEndpointProperties("dataformat:string:marshal?foo=bar");
+        assertTrue(result.isSuccess());
     }
 
     @Test


[2/5] camel git commit: Polished

Posted by da...@apache.org.
Polished


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

Branch: refs/heads/master
Commit: e1782180b410785c956e8ac296ae08f26c2ee420
Parents: e53d8a7
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Jan 4 22:11:23 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Jan 4 22:11:23 2016 +0100

----------------------------------------------------------------------
 .../mock/MockComponentConfigurationAndDocumentationTest.java        | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/e1782180/camel-core/src/test/java/org/apache/camel/component/mock/MockComponentConfigurationAndDocumentationTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/mock/MockComponentConfigurationAndDocumentationTest.java b/camel-core/src/test/java/org/apache/camel/component/mock/MockComponentConfigurationAndDocumentationTest.java
index e321ed8..e257dba 100644
--- a/camel-core/src/test/java/org/apache/camel/component/mock/MockComponentConfigurationAndDocumentationTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/mock/MockComponentConfigurationAndDocumentationTest.java
@@ -40,7 +40,6 @@ public class MockComponentConfigurationAndDocumentationTest extends ContextTestS
         ComponentConfiguration compConf = comp.createComponentConfiguration();
         String json = compConf.createParameterJsonSchema();
         assertNotNull(json);
-        System.out.println(json);
 
         assertTrue(json.contains("\"name\": { \"kind\": \"path\", \"group\": \"producer\", \"required\": \"true\""));
         assertTrue(json.contains("\"expectedCount\": { \"kind\": \"parameter\", \"group\": \"producer\", \"label\": \"producer\""));


[4/5] camel git commit: Polished

Posted by da...@apache.org.
Polished


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

Branch: refs/heads/camel-2.16.x
Commit: f1aaabd0084d045d20c2e4413aecd11ef16e659c
Parents: d11b039
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Jan 4 22:11:23 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Jan 5 09:32:36 2016 +0100

----------------------------------------------------------------------
 .../mock/MockComponentConfigurationAndDocumentationTest.java        | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/f1aaabd0/camel-core/src/test/java/org/apache/camel/component/mock/MockComponentConfigurationAndDocumentationTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/component/mock/MockComponentConfigurationAndDocumentationTest.java b/camel-core/src/test/java/org/apache/camel/component/mock/MockComponentConfigurationAndDocumentationTest.java
index e321ed8..e257dba 100644
--- a/camel-core/src/test/java/org/apache/camel/component/mock/MockComponentConfigurationAndDocumentationTest.java
+++ b/camel-core/src/test/java/org/apache/camel/component/mock/MockComponentConfigurationAndDocumentationTest.java
@@ -40,7 +40,6 @@ public class MockComponentConfigurationAndDocumentationTest extends ContextTestS
         ComponentConfiguration compConf = comp.createComponentConfiguration();
         String json = compConf.createParameterJsonSchema();
         assertNotNull(json);
-        System.out.println(json);
 
         assertTrue(json.contains("\"name\": { \"kind\": \"path\", \"group\": \"producer\", \"required\": \"true\""));
         assertTrue(json.contains("\"expectedCount\": { \"kind\": \"parameter\", \"group\": \"producer\", \"label\": \"producer\""));


[3/5] camel git commit: Camel component docs - Should include information if an endpoint is lenient properties

Posted by da...@apache.org.
Camel component docs - Should include information if an endpoint is lenient properties


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

Branch: refs/heads/master
Commit: 6742fb77f3e91811dad3bd6893692e2079ef15a8
Parents: e178218
Author: Claus Ibsen <da...@apache.org>
Authored: Tue Jan 5 09:31:57 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Jan 5 09:31:57 2016 +0100

----------------------------------------------------------------------
 .../java/org/apache/camel/component/stub/StubEndpoint.java    | 6 +-----
 .../java/org/apache/camel/catalog/DefaultCamelCatalog.java    | 7 ++++---
 .../test/java/org/apache/camel/catalog/CamelCatalogTest.java  | 6 +++++-
 3 files changed, 10 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/6742fb77/camel-core/src/main/java/org/apache/camel/component/stub/StubEndpoint.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/stub/StubEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/stub/StubEndpoint.java
index 9a96e9d..cd24eba 100644
--- a/camel-core/src/main/java/org/apache/camel/component/stub/StubEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/stub/StubEndpoint.java
@@ -36,7 +36,7 @@ import org.apache.camel.spi.UriEndpoint;
  * query arguments will usually fail. Stub won't though, as it basically ignores all query parameters
  * to let you quickly stub out one or more endpoints in your route temporarily.
  */
-@UriEndpoint(scheme = "stub", title = "Stub", syntax = "stub:name", consumerClass = VmConsumer.class, label = "core,testing", lenientProperties = true)
+@UriEndpoint(scheme = "stub", title = "Stub", syntax = "stub:name", consumerClass = VmConsumer.class, label = "core,testing")
 public class StubEndpoint extends VmEndpoint {
 
     public StubEndpoint(String endpointUri, Component component, BlockingQueue<Exchange> queue) {
@@ -56,8 +56,4 @@ public class StubEndpoint extends VmEndpoint {
         return new StubConsumer(this, processor);
     }
 
-    @Override
-    public boolean isLenientProperties() {
-        return true;
-    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/6742fb77/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 83b9c58..5a023c9 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
@@ -738,11 +738,12 @@ public class DefaultCamelCatalog implements CamelCatalog {
         Map<String, String> properties;
         List<Map<String, String>> rows;
         boolean lenientProperties;
+        String scheme;
 
         try {
             // parse the uri
             URI u = normalizeUri(uri);
-            String scheme = u.getScheme();
+            scheme = u.getScheme();
             String json = componentJSonSchema(scheme);
             if (json == null) {
                 result.addUnknownComponent(scheme);
@@ -785,9 +786,9 @@ public class DefaultCamelCatalog implements CamelCatalog {
             if (row == null) {
                 // unknown option
 
-                // only add as error if the component is not lenient properties
+                // only add as error if the component is not lenient properties, or not stub component
                 // as if we are lenient then the option is a dynamic extra option which we cannot validate
-                if (!lenientProperties) {
+                if (!lenientProperties && !"stub".equals(scheme)) {
                     result.addUnknown(name);
                     if (suggestionStrategy != null) {
                         String[] suggestions = suggestionStrategy.suggestEndpointOptions(getNames(rows), name);

http://git-wip-us.apache.org/repos/asf/camel/blob/6742fb77/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 fc804aa..f32597a 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
@@ -485,9 +485,13 @@ public class CamelCatalogTest {
         result = catalog.validateEndpointProperties("file:inbox?delay=5000&scheduler.foo=123&scheduler.bar=456");
         assertTrue(result.isSuccess());
 
-        // lenient
+        // stub
         result = catalog.validateEndpointProperties("stub:foo?me=123&you=456");
         assertTrue(result.isSuccess());
+
+        // lenient
+        result = catalog.validateEndpointProperties("dataformat:string:marshal?foo=bar");
+        assertTrue(result.isSuccess());
     }
 
     @Test