Repository: camel
Updated Branches:
  refs/heads/master cabee0e90 -> 61839f228


Fix for CAMEL-7569 Expose the component options for Camel GAE


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

Branch: refs/heads/master
Commit: fe3de4af7162dff3a1fda227536cdd629c4f68a3
Parents: 9d661ab
Author: Kevin Earls <ke...@kevinearls.com>
Authored: Wed Jul 2 18:20:14 2014 +0200
Committer: Kevin Earls <ke...@kevinearls.com>
Committed: Wed Jul 2 18:20:14 2014 +0200

----------------------------------------------------------------------
 .../apache/camel/impl/DefaultCamelContext.java  |  3 +
 .../component/gae/auth/GAuthComponent.java      |  8 +--
 .../camel/component/gae/auth/GAuthEndpoint.java |  8 +++
 .../component/gae/http/GHttpComponent.java      |  3 +
 .../camel/component/gae/http/GHttpEndpoint.java |  9 ++-
 .../component/gae/login/GLoginComponent.java    |  8 +--
 .../component/gae/login/GLoginEndpoint.java     | 10 ++++
 .../component/gae/mail/GMailComponent.java      |  8 ++-
 .../camel/component/gae/mail/GMailEndpoint.java |  8 +++
 .../component/gae/task/GTaskComponent.java      |  3 +
 .../camel/component/gae/task/GTaskEndpoint.java |  4 ++
 ...ponentConfigurationAndDocumentationTest.java | 57 +++++++++++++++++++
 ...ponentConfigurationAndDocumentationTest.java | 58 ++++++++++++++++++++
 ...ponentConfigurationAndDocumentationTest.java | 57 +++++++++++++++++++
 ...ponentConfigurationAndDocumentationTest.java | 57 +++++++++++++++++++
 ...ponentConfigurationAndDocumentationTest.java | 56 +++++++++++++++++++
 .../component/servlet/ServletComponent.java     |  6 ++
 17 files changed, 352 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/fe3de4af/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java 
b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 7437990..4b0b814 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -1057,6 +1057,9 @@ public class DefaultCamelContext extends ServiceSupport 
implements ModelCamelCon
             return "file/remote";
         } else if ("cxfrs".equals(componentName)) {
             return "cxf/jaxrs";
+        } else if ("gauth".equals(componentName) || 
"ghttp".equals(componentName) || "glogin".equals(componentName)
+                ||"gmail".equals(componentName) || 
"gtask".equals(componentName) ) {
+            return "gae/" + componentName.substring(1);
         }
         return componentName.replaceAll("-", "");
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/fe3de4af/components/camel-gae/src/main/java/org/apache/camel/component/gae/auth/GAuthComponent.java
----------------------------------------------------------------------
diff --git 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/auth/GAuthComponent.java
 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/auth/GAuthComponent.java
index 73119a1..d140b3b 100644
--- 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/auth/GAuthComponent.java
+++ 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/auth/GAuthComponent.java
@@ -22,7 +22,7 @@ import 
com.google.gdata.client.authn.oauth.GoogleOAuthParameters;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.gae.bind.OutboundBinding;
-import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.impl.UriEndpointComponent;
 
 /**
  * The <a href="http://camel.apache.org/gauth.html";>GAuth Component</a>
@@ -33,18 +33,18 @@ import org.apache.camel.impl.DefaultComponent;
  * href="http://code.google.com/apis/gdata/docs/auth/oauth.html";>GData 
developer
  * guide for OAuth.</a>.
  */
-public class GAuthComponent extends DefaultComponent {
+public class GAuthComponent extends UriEndpointComponent {
 
     private String consumerKey;
     private String consumerSecret;
     private GAuthKeyLoader keyLoader;
 
     public GAuthComponent() {
-        this(null);
+        super(GAuthEndpoint.class);
     }
 
     public GAuthComponent(CamelContext context) {
-        super(context);
+        super(context, GAuthEndpoint.class);
     }
 
     public String getConsumerKey() {

http://git-wip-us.apache.org/repos/asf/camel/blob/fe3de4af/components/camel-gae/src/main/java/org/apache/camel/component/gae/auth/GAuthEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/auth/GAuthEndpoint.java
 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/auth/GAuthEndpoint.java
index ac24432..8513a0e 100644
--- 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/auth/GAuthEndpoint.java
+++ 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/auth/GAuthEndpoint.java
@@ -31,6 +31,8 @@ import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.component.gae.bind.OutboundBinding;
 import org.apache.camel.impl.DefaultEndpoint;
+import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
 
 /**
  * Represents a <a href="http://camel.apache.org/gauth.html";>GAuth 
Endpoint</a>.
@@ -40,6 +42,7 @@ import org.apache.camel.impl.DefaultEndpoint;
  * endpoint URIs are <code>gauth:authorize</code> and 
<code>gauth:upgrade</code>
  * , respectively.
  */
+@UriEndpoint(scheme = "gauth")
 public class GAuthEndpoint  extends DefaultEndpoint {
 
     public static enum Name {
@@ -59,10 +62,15 @@ public class GAuthEndpoint  extends DefaultEndpoint {
     
     private OutboundBinding<GAuthEndpoint, GoogleOAuthParameters, 
GoogleOAuthParameters> authorizeBinding;
     private OutboundBinding<GAuthEndpoint, GoogleOAuthParameters, 
GoogleOAuthParameters> upgradeBinding;
+    @UriParam
     private Name name;
+    @UriParam
     private String callback;
+    @UriParam
     private String scope;
+    @UriParam
     private String consumerKey;
+    @UriParam
     private String consumerSecret;
     private GAuthKeyLoader keyLoader;
     private GAuthService service;

http://git-wip-us.apache.org/repos/asf/camel/blob/fe3de4af/components/camel-gae/src/main/java/org/apache/camel/component/gae/http/GHttpComponent.java
----------------------------------------------------------------------
diff --git 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/http/GHttpComponent.java
 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/http/GHttpComponent.java
index 132ffca..1aaa6b1 100644
--- 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/http/GHttpComponent.java
+++ 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/http/GHttpComponent.java
@@ -43,6 +43,9 @@ import org.apache.commons.httpclient.params.HttpClientParams;
  * Engine.
  */
 public class GHttpComponent extends ServletComponent {
+    public GHttpComponent() {
+        super(GHttpEndpoint.class);
+    }
 
     @Override
     @SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/camel/blob/fe3de4af/components/camel-gae/src/main/java/org/apache/camel/component/gae/http/GHttpEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/http/GHttpEndpoint.java
 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/http/GHttpEndpoint.java
index c2a6449..98192fa 100644
--- 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/http/GHttpEndpoint.java
+++ 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/http/GHttpEndpoint.java
@@ -40,6 +40,8 @@ import org.apache.camel.component.http.HttpBinding;
 import org.apache.camel.component.http.HttpClientConfigurer;
 import org.apache.camel.component.servlet.ServletComponent;
 import org.apache.camel.component.servlet.ServletEndpoint;
+import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
 import org.apache.camel.util.URISupport;
 import org.apache.camel.util.UnsafeUriCharactersEncoder;
 import org.apache.commons.httpclient.HttpConnectionManager;
@@ -49,12 +51,17 @@ import 
org.apache.commons.httpclient.params.HttpClientParams;
  * Represents a <a href="http://camel.apache.org/ghttp.html";>Google App Engine
  * HTTP endpoint</a>.
  */
+@UriEndpoint(scheme = "ghttp")
 public class GHttpEndpoint extends ServletEndpoint implements 
OutboundBindingSupport<GHttpEndpoint, HTTPRequest, HTTPResponse> {
 
+    @UriParam
     public static final String GHTTP_SCHEME = "ghttp";
+    @UriParam
     public static final String GHTTPS_SCHEME = "ghttps";
-    
+
+    @UriParam
     public static final String HTTP_SCHEME = "http";
+    @UriParam
     public static final String HTTPS_SCHEME = "https";
     
     private URLFetchService urlFetchService;

http://git-wip-us.apache.org/repos/asf/camel/blob/fe3de4af/components/camel-gae/src/main/java/org/apache/camel/component/gae/login/GLoginComponent.java
----------------------------------------------------------------------
diff --git 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/login/GLoginComponent.java
 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/login/GLoginComponent.java
index 5c0f79f..9504aed 100644
--- 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/login/GLoginComponent.java
+++ 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/login/GLoginComponent.java
@@ -22,7 +22,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.gae.auth.GAuthComponent;
 import org.apache.camel.component.gae.bind.OutboundBinding;
-import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.impl.UriEndpointComponent;
 
 /**
  * The <a href="http://camel.apache.org/glogin.html";>GLogin Component</a>
@@ -36,14 +36,14 @@ import org.apache.camel.impl.DefaultComponent;
  * do a programmatic login to GAE applications. Web applications should use the
  * {@link GAuthComponent} for access authorization to other web applications.
  */
-public class GLoginComponent extends DefaultComponent {
+public class GLoginComponent extends UriEndpointComponent {
 
     public GLoginComponent() {
-        this(null);
+        super(GLoginEndpoint.class);
     }
 
     public GLoginComponent(CamelContext context) {
-        super(context);
+        super(context, GLoginEndpoint.class);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/camel/blob/fe3de4af/components/camel-gae/src/main/java/org/apache/camel/component/gae/login/GLoginEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/login/GLoginEndpoint.java
 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/login/GLoginEndpoint.java
index 2b25816..eef74d9 100644
--- 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/login/GLoginEndpoint.java
+++ 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/login/GLoginEndpoint.java
@@ -22,21 +22,31 @@ import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.component.gae.bind.OutboundBinding;
 import org.apache.camel.impl.DefaultEndpoint;
+import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
 
 /**
  * Represents a <a href="http://camel.apache.org/glogin.html";>GLogin
  * Endpoint</a>.
  */
+@UriEndpoint(scheme = "glogin")
 public class GLoginEndpoint extends DefaultEndpoint {
 
     private OutboundBinding<GLoginEndpoint, GLoginData, GLoginData> 
outboundBinding;
 
+    @UriParam
     private String hostName;
+    @UriParam
     private String clientName;
+    @UriParam
     private String userName;
+    @UriParam
     private String password;
+    @UriParam
     private int devPort;
+    @UriParam
     private boolean devAdmin;
+    @UriParam
     private boolean devMode;
     private GLoginService service;
 

http://git-wip-us.apache.org/repos/asf/camel/blob/fe3de4af/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailComponent.java
----------------------------------------------------------------------
diff --git 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailComponent.java
 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailComponent.java
index 66decb5..4c4115b 100644
--- 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailComponent.java
+++ 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailComponent.java
@@ -22,14 +22,18 @@ import com.google.appengine.api.mail.MailService.Message;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.component.gae.bind.OutboundBinding;
-import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.impl.UriEndpointComponent;
 
 /**
  * The <a href="http://camel.apache.org/gmail.html";>Google App Engine Mail
  * Component</a> supports outbound mail communication. It makes use of the mail
  * service provided by Google App Engine.
  */
-public class GMailComponent extends DefaultComponent {
+public class GMailComponent extends UriEndpointComponent {
+
+    public GMailComponent() {
+        super(GMailEndpoint.class);
+    }
 
     @Override
     @SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/camel/blob/fe3de4af/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailEndpoint.java
 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailEndpoint.java
index 9a51274..bf63c83 100644
--- 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailEndpoint.java
+++ 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/mail/GMailEndpoint.java
@@ -27,18 +27,26 @@ import org.apache.camel.Producer;
 import org.apache.camel.component.gae.bind.OutboundBinding;
 import org.apache.camel.component.gae.bind.OutboundBindingSupport;
 import org.apache.camel.impl.DefaultEndpoint;
+import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
 
 /**
  * Represents a <a href="http://camel.apache.org/gmail.html";>Google App Engine 
Mail endpoint</a>.
  */
+@UriEndpoint(scheme = "gmail")
 public class GMailEndpoint extends DefaultEndpoint implements 
OutboundBindingSupport<GMailEndpoint, Message, Void> {
 
     private OutboundBinding<GMailEndpoint, Message, Void> outboundBinding;
     private MailService mailService;
+    @UriParam
     private String sender;
+    @UriParam
     private String subject;
+    @UriParam
     private String to;
+    @UriParam
     private String cc;
+    @UriParam
     private String bcc;
     
     public GMailEndpoint(String endpointUri, Component component, String 
sender) {

http://git-wip-us.apache.org/repos/asf/camel/blob/fe3de4af/components/camel-gae/src/main/java/org/apache/camel/component/gae/task/GTaskComponent.java
----------------------------------------------------------------------
diff --git 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/task/GTaskComponent.java
 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/task/GTaskComponent.java
index 2adcaf3..88ec833 100644
--- 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/task/GTaskComponent.java
+++ 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/task/GTaskComponent.java
@@ -44,6 +44,9 @@ import org.apache.commons.httpclient.params.HttpClientParams;
  * for installing a web hook.
  */
 public class GTaskComponent extends ServletComponent {
+    public GTaskComponent() {
+        super(GTaskEndpoint.class);
+    }
 
     @Override
     @SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/camel/blob/fe3de4af/components/camel-gae/src/main/java/org/apache/camel/component/gae/task/GTaskEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/task/GTaskEndpoint.java
 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/task/GTaskEndpoint.java
index 733f8c4..c789646 100644
--- 
a/components/camel-gae/src/main/java/org/apache/camel/component/gae/task/GTaskEndpoint.java
+++ 
b/components/camel-gae/src/main/java/org/apache/camel/component/gae/task/GTaskEndpoint.java
@@ -34,16 +34,20 @@ import org.apache.camel.component.http.HttpBinding;
 import org.apache.camel.component.http.HttpClientConfigurer;
 import org.apache.camel.component.servlet.ServletComponent;
 import org.apache.camel.component.servlet.ServletEndpoint;
+import org.apache.camel.spi.UriEndpoint;
+import org.apache.camel.spi.UriParam;
 import org.apache.commons.httpclient.HttpConnectionManager;
 import org.apache.commons.httpclient.params.HttpClientParams;
 
 /**
  * Represents a <a href="http://camel.apache.org/gtask.html";>Google App Engine 
Task Queueing endpoint</a>.
  */
+@UriEndpoint(scheme = "gtask")
 public class GTaskEndpoint extends ServletEndpoint implements 
OutboundBindingSupport<GTaskEndpoint, TaskOptions, Void> {
 
     private OutboundBinding<GTaskEndpoint, TaskOptions, Void> outboundBinding;
     private InboundBinding<GTaskEndpoint, HttpServletRequest, 
HttpServletResponse> inboundBinding;
+    @UriParam
     private String workerRoot;
     private Queue queue;
     

http://git-wip-us.apache.org/repos/asf/camel/blob/fe3de4af/components/camel-gae/src/test/java/org/apache/camel/component/gae/auth/GAuthComponentConfigurationAndDocumentationTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-gae/src/test/java/org/apache/camel/component/gae/auth/GAuthComponentConfigurationAndDocumentationTest.java
 
b/components/camel-gae/src/test/java/org/apache/camel/component/gae/auth/GAuthComponentConfigurationAndDocumentationTest.java
new file mode 100644
index 0000000..7e9e9fd
--- /dev/null
+++ 
b/components/camel-gae/src/test/java/org/apache/camel/component/gae/auth/GAuthComponentConfigurationAndDocumentationTest.java
@@ -0,0 +1,57 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.gae.auth;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ComponentConfiguration;
+import org.apache.camel.EndpointConfiguration;
+import org.apache.camel.component.servlet.ServletComponent;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+public class GAuthComponentConfigurationAndDocumentationTest extends 
CamelTestSupport {
+
+    @Override
+    public boolean isUseRouteBuilder() {
+        return false;
+    }
+
+    @Test
+    public void testComponentConfiguration() throws Exception {
+        GAuthComponent comp = context.getComponent("gauth", 
GAuthComponent.class);
+        EndpointConfiguration conf = 
comp.createConfiguration("gauth://authorize?scope=foo&name=fred");
+
+        assertEquals("foo", conf.getParameter("scope"));
+        assertEquals("fred", conf.getParameter("name"));
+
+        ComponentConfiguration compConf = comp.createComponentConfiguration();
+        String json = compConf.createParameterJsonSchema();
+        assertNotNull(json);
+
+        assertTrue(json.contains("\"consumerKey\": { \"type\": 
\"java.lang.String\" }"));
+        assertTrue(json.contains("\"scope\": { \"type\": \"java.lang.String\" 
}"));
+    }
+
+    @Test
+    public void testComponentDocumentation() throws Exception {
+        CamelContext context = new DefaultCamelContext();
+        String html = context.getComponentDocumentation("gauth");
+        assertNotNull("Should have found some auto-generated HTML if on Java 
7", html);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/fe3de4af/components/camel-gae/src/test/java/org/apache/camel/component/gae/http/GHttpComponentConfigurationAndDocumentationTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-gae/src/test/java/org/apache/camel/component/gae/http/GHttpComponentConfigurationAndDocumentationTest.java
 
b/components/camel-gae/src/test/java/org/apache/camel/component/gae/http/GHttpComponentConfigurationAndDocumentationTest.java
new file mode 100644
index 0000000..b903ceb
--- /dev/null
+++ 
b/components/camel-gae/src/test/java/org/apache/camel/component/gae/http/GHttpComponentConfigurationAndDocumentationTest.java
@@ -0,0 +1,58 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.gae.http;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ComponentConfiguration;
+import org.apache.camel.EndpointConfiguration;
+import org.apache.camel.component.gae.auth.GAuthComponent;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+public class GHttpComponentConfigurationAndDocumentationTest extends 
CamelTestSupport {
+
+    @Override
+    public boolean isUseRouteBuilder() {
+        return false;
+    }
+
+    @Test
+    public void testComponentConfiguration() throws Exception {
+        GHttpComponent comp = context.getComponent("ghttp", 
GHttpComponent.class);
+        EndpointConfiguration conf = 
comp.createConfiguration("ghttp://somewhere.com:9090/path?"; +
+                "bridgeEndpoint=false&throwExceptionOnFailure=false");
+
+        assertEquals("false", conf.getParameter("bridgeEndpoint"));
+        assertEquals("false", conf.getParameter("throwExceptionOnFailure"));
+
+        ComponentConfiguration compConf = comp.createComponentConfiguration();
+        String json = compConf.createParameterJsonSchema();
+        assertNotNull(json);
+
+        assertTrue(json.contains("\"GHTTP_SCHEME\": { \"type\": 
\"java.lang.String\" }"));
+        assertTrue(json.contains("\"HTTPS_SCHEME\": { \"type\": 
\"java.lang.String\" }"));
+    }
+
+    @Test
+    public void testComponentDocumentation() throws Exception {
+        CamelContext context = new DefaultCamelContext();
+        String html = context.getComponentDocumentation("ghttp");
+        assertNotNull("Should have found some auto-generated HTML if on Java 
7", html);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/fe3de4af/components/camel-gae/src/test/java/org/apache/camel/component/gae/login/GLoginComponentConfigurationAndDocumentationTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-gae/src/test/java/org/apache/camel/component/gae/login/GLoginComponentConfigurationAndDocumentationTest.java
 
b/components/camel-gae/src/test/java/org/apache/camel/component/gae/login/GLoginComponentConfigurationAndDocumentationTest.java
new file mode 100644
index 0000000..aea79f6
--- /dev/null
+++ 
b/components/camel-gae/src/test/java/org/apache/camel/component/gae/login/GLoginComponentConfigurationAndDocumentationTest.java
@@ -0,0 +1,57 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.gae.login;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ComponentConfiguration;
+import org.apache.camel.EndpointConfiguration;
+import org.apache.camel.component.gae.auth.GAuthComponent;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+public class GLoginComponentConfigurationAndDocumentationTest extends 
CamelTestSupport {
+
+    @Override
+    public boolean isUseRouteBuilder() {
+        return false;
+    }
+
+    @Test
+    public void testComponentConfiguration() throws Exception {
+        GLoginComponent comp = context.getComponent("glogin", 
GLoginComponent.class);
+        EndpointConfiguration conf = 
comp.createConfiguration("glogin:localhost?devMode=true&devAdmin=true");
+
+        assertEquals("true", conf.getParameter("devMode"));
+        assertEquals("true", conf.getParameter("devAdmin"));
+
+        ComponentConfiguration compConf = comp.createComponentConfiguration();
+        String json = compConf.createParameterJsonSchema();
+        assertNotNull(json);
+
+        assertTrue(json.contains("\"clientName\": { \"type\": 
\"java.lang.String\" }"));
+        assertTrue(json.contains("\"devMode\": { \"type\": \"boolean\" }"));
+    }
+
+    @Test
+    public void testComponentDocumentation() throws Exception {
+        CamelContext context = new DefaultCamelContext();
+        String html = context.getComponentDocumentation("glogin");
+        assertNotNull("Should have found some auto-generated HTML if on Java 
7", html);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/fe3de4af/components/camel-gae/src/test/java/org/apache/camel/component/gae/mail/GMailComponentConfigurationAndDocumentationTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-gae/src/test/java/org/apache/camel/component/gae/mail/GMailComponentConfigurationAndDocumentationTest.java
 
b/components/camel-gae/src/test/java/org/apache/camel/component/gae/mail/GMailComponentConfigurationAndDocumentationTest.java
new file mode 100644
index 0000000..44500ff
--- /dev/null
+++ 
b/components/camel-gae/src/test/java/org/apache/camel/component/gae/mail/GMailComponentConfigurationAndDocumentationTest.java
@@ -0,0 +1,57 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.gae.mail;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ComponentConfiguration;
+import org.apache.camel.EndpointConfiguration;
+import org.apache.camel.component.gae.login.GLoginComponent;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+public class GMailComponentConfigurationAndDocumentationTest extends 
CamelTestSupport {
+
+    @Override
+    public boolean isUseRouteBuilder() {
+        return false;
+    }
+
+    @Test
+    public void testComponentConfiguration() throws Exception {
+        GMailComponent comp = context.getComponent("gmail", 
GMailComponent.class);
+        EndpointConfiguration conf = 
comp.createConfiguration("gmail:te...@example.org?to=te...@example.org&subject=testSubject");
+
+        assertEquals("te...@example.org", conf.getParameter("to"));
+        assertEquals("testSubject", conf.getParameter("subject"));
+
+        ComponentConfiguration compConf = comp.createComponentConfiguration();
+        String json = compConf.createParameterJsonSchema();
+        assertNotNull(json);
+
+        assertTrue(json.contains("\"sender\": { \"type\": \"java.lang.String\" 
}"));
+        assertTrue(json.contains("\"bcc\": { \"type\": \"java.lang.String\" 
}"));
+    }
+
+    @Test
+    public void testComponentDocumentation() throws Exception {
+        CamelContext context = new DefaultCamelContext();
+        String html = context.getComponentDocumentation("gmail");
+        assertNotNull("Should have found some auto-generated HTML if on Java 
7", html);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/fe3de4af/components/camel-gae/src/test/java/org/apache/camel/component/gae/task/GTaskComponentConfigurationAndDocumentationTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-gae/src/test/java/org/apache/camel/component/gae/task/GTaskComponentConfigurationAndDocumentationTest.java
 
b/components/camel-gae/src/test/java/org/apache/camel/component/gae/task/GTaskComponentConfigurationAndDocumentationTest.java
new file mode 100644
index 0000000..5276795
--- /dev/null
+++ 
b/components/camel-gae/src/test/java/org/apache/camel/component/gae/task/GTaskComponentConfigurationAndDocumentationTest.java
@@ -0,0 +1,56 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.gae.task;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ComponentConfiguration;
+import org.apache.camel.EndpointConfiguration;
+import org.apache.camel.component.gae.mail.GMailComponent;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Test;
+
+public class GTaskComponentConfigurationAndDocumentationTest extends 
CamelTestSupport {
+
+    @Override
+    public boolean isUseRouteBuilder() {
+        return false;
+    }
+
+    @Test
+    public void testComponentConfiguration() throws Exception {
+        GTaskComponent comp = context.getComponent("gtask", 
GTaskComponent.class);
+        EndpointConfiguration conf = 
comp.createConfiguration("gtask:default?workerRoot=camel");
+
+        assertEquals("camel", conf.getParameter("workerRoot"));
+
+        ComponentConfiguration compConf = comp.createComponentConfiguration();
+        String json = compConf.createParameterJsonSchema();
+        assertNotNull(json);
+
+        assertTrue(json.contains("\"workerRoot\": { \"type\": 
\"java.lang.String\" }"));
+        assertTrue(json.contains("\"disableStreamCache\": { \"type\": 
\"boolean\" }"));
+    }
+
+    @Test
+    public void testComponentDocumentation() throws Exception {
+        CamelContext context = new DefaultCamelContext();
+        String html = context.getComponentDocumentation("gtask");
+        assertNotNull("Should have found some auto-generated HTML if on Java 
7", html);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/fe3de4af/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/ServletComponent.java
----------------------------------------------------------------------
diff --git 
a/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/ServletComponent.java
 
b/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/ServletComponent.java
index 15aec3e..789538c 100644
--- 
a/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/ServletComponent.java
+++ 
b/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/ServletComponent.java
@@ -27,6 +27,7 @@ import org.apache.camel.component.http.HttpBinding;
 import org.apache.camel.component.http.HttpClientConfigurer;
 import org.apache.camel.component.http.HttpComponent;
 import org.apache.camel.component.http.HttpConsumer;
+import org.apache.camel.component.http.HttpEndpoint;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.URISupport;
@@ -43,6 +44,11 @@ public class ServletComponent extends HttpComponent {
         super(ServletEndpoint.class);
     }
 
+    public ServletComponent(Class<? extends HttpEndpoint> endpointClass) {
+        super(endpointClass);
+    }
+
+
     @Override
     protected Endpoint createEndpoint(String uri, String remaining, 
Map<String, Object> parameters) throws Exception {
         HttpClientParams params = new HttpClientParams();

Reply via email to