Repository: camel
Updated Branches:
  refs/heads/master 722a588e7 -> e20ae861b


Component docs


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

Branch: refs/heads/master
Commit: be7552085c875dc8871ce5f39c61e615163ef185
Parents: 722a588
Author: Claus Ibsen <davscl...@apache.org>
Authored: Sun Jun 14 09:46:35 2015 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Sun Jun 14 13:08:06 2015 +0200

----------------------------------------------------------------------
 .../camel/component/ahc/ws/WsEndpoint.java      |  3 +-
 .../camel/component/amqp/AMQPEndpoint.java      |  3 +-
 .../atmosphere/websocket/WebsocketEndpoint.java |  3 +-
 .../component/file/remote/FtpEndpoint.java      |  3 +-
 .../component/file/remote/FtpsEndpoint.java     |  3 +-
 .../component/file/remote/SftpEndpoint.java     |  3 +-
 .../camel/component/gae/http/GHttpEndpoint.java |  3 +-
 .../camel/component/gae/task/GTaskEndpoint.java |  3 +-
 .../component/jetty8/JettyHttpEndpoint8.java    |  3 +-
 .../component/jetty9/JettyHttpEndpoint9.java    |  3 +-
 .../apache/camel/component/scp/ScpEndpoint.java |  3 +-
 .../component/netty/http/NettyHttpEndpoint.java |  3 +-
 .../netty4/http/NettyHttpEndpoint.java          |  3 +-
 .../apache/camel/component/rss/RssEndpoint.java |  3 +-
 .../component/servlet/ServletEndpoint.java      |  3 +-
 .../camel/tools/apt/DocumentationHelper.java    | 63 ++++++++++++++++++++
 .../tools/apt/EndpointAnnotationProcessor.java  | 16 +++++
 .../java/org/apache/camel/spi/UriEndpoint.java  | 11 ++++
 18 files changed, 120 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/be755208/components/camel-ahc-ws/src/main/java/org/apache/camel/component/ahc/ws/WsEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-ahc-ws/src/main/java/org/apache/camel/component/ahc/ws/WsEndpoint.java
 
b/components/camel-ahc-ws/src/main/java/org/apache/camel/component/ahc/ws/WsEndpoint.java
index ec37304..e0d0b88 100644
--- 
a/components/camel-ahc-ws/src/main/java/org/apache/camel/component/ahc/ws/WsEndpoint.java
+++ 
b/components/camel-ahc-ws/src/main/java/org/apache/camel/component/ahc/ws/WsEndpoint.java
@@ -38,7 +38,8 @@ import org.apache.camel.spi.UriParam;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@UriEndpoint(scheme = "ahc-ws,ahc-wss", title = "AHC Websocket,AHC Secure 
Websocket", syntax = "ahc-ws:httpUri", consumerClass = WsConsumer.class, label 
= "websocket")
+@UriEndpoint(scheme = "ahc-ws,ahc-wss", extendsScheme = "ahc,ahc", title = 
"AHC Websocket,AHC Secure Websocket",
+        syntax = "ahc-ws:httpUri", consumerClass = WsConsumer.class, label = 
"websocket")
 public class WsEndpoint extends AhcEndpoint {
     private static final transient Logger LOG = 
LoggerFactory.getLogger(WsEndpoint.class);
 

http://git-wip-us.apache.org/repos/asf/camel/blob/be755208/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPEndpoint.java
 
b/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPEndpoint.java
index 109a393..ce630f6 100644
--- 
a/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPEndpoint.java
+++ 
b/components/camel-amqp/src/main/java/org/apache/camel/component/amqp/AMQPEndpoint.java
@@ -20,7 +20,8 @@ import org.apache.camel.component.jms.JmsConsumer;
 import org.apache.camel.component.jms.JmsEndpoint;
 import org.apache.camel.spi.UriEndpoint;
 
-@UriEndpoint(scheme = "amqp", title = "AMQP", syntax = 
"amqp:destinationType:destinationName", consumerClass = JmsConsumer.class, 
label = "messaging")
+@UriEndpoint(scheme = "amqp", extendsScheme = "jms", title = "AMQP",
+        syntax = "amqp:destinationType:destinationName", consumerClass = 
JmsConsumer.class, label = "messaging")
 public class AMQPEndpoint extends JmsEndpoint {
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/be755208/components/camel-atmosphere-websocket/src/main/java/org/apache/camel/component/atmosphere/websocket/WebsocketEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-atmosphere-websocket/src/main/java/org/apache/camel/component/atmosphere/websocket/WebsocketEndpoint.java
 
b/components/camel-atmosphere-websocket/src/main/java/org/apache/camel/component/atmosphere/websocket/WebsocketEndpoint.java
index 9b5abe8..77a6306 100644
--- 
a/components/camel-atmosphere-websocket/src/main/java/org/apache/camel/component/atmosphere/websocket/WebsocketEndpoint.java
+++ 
b/components/camel-atmosphere-websocket/src/main/java/org/apache/camel/component/atmosphere/websocket/WebsocketEndpoint.java
@@ -34,7 +34,8 @@ import org.apache.commons.httpclient.params.HttpClientParams;
 /**
  *
  */
-@UriEndpoint(scheme = "atmosphere-websocket", title = "Atmosphere Websocket", 
syntax = "atmosphere-websocket:servicePath", consumerClass = 
WebsocketConsumer.class, label = "websocket")
+@UriEndpoint(scheme = "atmosphere-websocket", extendsScheme = "websocket", 
title = "Atmosphere Websocket",
+        syntax = "atmosphere-websocket:servicePath", consumerClass = 
WebsocketConsumer.class, label = "websocket")
 public class WebsocketEndpoint extends ServletEndpoint {
 
     private WebSocketStore store;

http://git-wip-us.apache.org/repos/asf/camel/blob/be755208/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpEndpoint.java
 
b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpEndpoint.java
index 19d65f6..24a0d82 100644
--- 
a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpEndpoint.java
+++ 
b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpEndpoint.java
@@ -34,7 +34,8 @@ import org.apache.commons.net.ftp.FTPFile;
 /**
  * FTP endpoint
  */
-@UriEndpoint(scheme = "ftp", title = "FTP", syntax = 
"ftp:host:port/directoryName", consumerClass = FtpConsumer.class, label = 
"file")
+@UriEndpoint(scheme = "ftp", extendsScheme = "file", title = "FTP",
+        syntax = "ftp:host:port/directoryName", consumerClass = 
FtpConsumer.class, label = "file")
 public class FtpEndpoint<T extends FTPFile> extends 
RemoteFileEndpoint<FTPFile> {
 
     protected FTPClient ftpClient;

http://git-wip-us.apache.org/repos/asf/camel/blob/be755208/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsEndpoint.java
 
b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsEndpoint.java
index 1e2ab96..ba90af0 100644
--- 
a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsEndpoint.java
+++ 
b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/FtpsEndpoint.java
@@ -41,7 +41,8 @@ import org.apache.commons.net.ftp.FTPSClient;
  * 
  * @version 
  */
-@UriEndpoint(scheme = "ftps", title = "FTPS", syntax = 
"ftps:host:port/directoryName", consumerClass = FtpConsumer.class, label = 
"file")
+@UriEndpoint(scheme = "ftps", extendsScheme = "file", title = "FTPS",
+        syntax = "ftps:host:port/directoryName", consumerClass = 
FtpConsumer.class, label = "file")
 public class FtpsEndpoint extends FtpEndpoint<FTPFile> {
     @UriParam
     protected FtpsConfiguration configuration;

http://git-wip-us.apache.org/repos/asf/camel/blob/be755208/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpEndpoint.java
 
b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpEndpoint.java
index 9cd33eb..b8f8db3 100644
--- 
a/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpEndpoint.java
+++ 
b/components/camel-ftp/src/main/java/org/apache/camel/component/file/remote/SftpEndpoint.java
@@ -27,7 +27,8 @@ import org.apache.camel.spi.UriParam;
 /**
  * Secure FTP endpoint
  */
-@UriEndpoint(scheme = "sftp", title = "SFTP", syntax = 
"sftp:host:port/directoryName", consumerClass = SftpConsumer.class, label = 
"file")
+@UriEndpoint(scheme = "sftp", extendsScheme = "file", title = "SFTP",
+        syntax = "sftp:host:port/directoryName", consumerClass = 
SftpConsumer.class, label = "file")
 public class SftpEndpoint extends RemoteFileEndpoint<ChannelSftp.LsEntry> {
 
     @UriParam

http://git-wip-us.apache.org/repos/asf/camel/blob/be755208/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 a054b6d..897a09b 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
@@ -48,7 +48,8 @@ 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", title = "Google HTTP", syntax = 
"ghttp:httpUri", producerOnly = true, label = "cloud")
+@UriEndpoint(scheme = "ghttp", extendsScheme = "servlet", title = "Google 
HTTP",
+        syntax = "ghttp:httpUri", producerOnly = true, label = "cloud")
 public class GHttpEndpoint extends ServletEndpoint implements 
OutboundBindingSupport<GHttpEndpoint, HTTPRequest, HTTPResponse> {
 
     public static final String GHTTP_SCHEME = "ghttp";

http://git-wip-us.apache.org/repos/asf/camel/blob/be755208/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 4944083..0e4a801 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
@@ -44,7 +44,8 @@ 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", title = "Google Task", syntax = 
"gtask:queueName", producerOnly = true, label = "cloud")
+@UriEndpoint(scheme = "gtask", extendsScheme = "servlet", title = "Google 
Task",
+        syntax = "gtask:queueName", producerOnly = true, label = "cloud")
 public class GTaskEndpoint extends ServletEndpoint implements 
OutboundBindingSupport<GTaskEndpoint, TaskOptions, Void> {
 
     private OutboundBinding<GTaskEndpoint, TaskOptions, Void> outboundBinding;

http://git-wip-us.apache.org/repos/asf/camel/blob/be755208/components/camel-jetty8/src/main/java/org/apache/camel/component/jetty8/JettyHttpEndpoint8.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jetty8/src/main/java/org/apache/camel/component/jetty8/JettyHttpEndpoint8.java
 
b/components/camel-jetty8/src/main/java/org/apache/camel/component/jetty8/JettyHttpEndpoint8.java
index 4810bdc..2efd975 100644
--- 
a/components/camel-jetty8/src/main/java/org/apache/camel/component/jetty8/JettyHttpEndpoint8.java
+++ 
b/components/camel-jetty8/src/main/java/org/apache/camel/component/jetty8/JettyHttpEndpoint8.java
@@ -25,7 +25,8 @@ import org.apache.camel.component.jetty.JettyHttpComponent;
 import org.apache.camel.component.jetty.JettyHttpEndpoint;
 import org.apache.camel.spi.UriEndpoint;
 
-@UriEndpoint(scheme = "jetty", title = "Jetty", syntax = "jetty:httpUri", 
consumerClass = HttpConsumer.class, label = "http")
+@UriEndpoint(scheme = "jetty", extendsScheme = "http", title = "Jetty",
+        syntax = "jetty:httpUri", consumerClass = HttpConsumer.class, label = 
"http")
 public class JettyHttpEndpoint8 extends JettyHttpEndpoint {
 
     public JettyHttpEndpoint8(JettyHttpComponent component, String uri, URI 
httpURL) throws URISyntaxException {

http://git-wip-us.apache.org/repos/asf/camel/blob/be755208/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpEndpoint9.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpEndpoint9.java
 
b/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpEndpoint9.java
index a29ad1a..342353e 100644
--- 
a/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpEndpoint9.java
+++ 
b/components/camel-jetty9/src/main/java/org/apache/camel/component/jetty9/JettyHttpEndpoint9.java
@@ -26,7 +26,8 @@ import org.apache.camel.component.jetty.JettyHttpComponent;
 import org.apache.camel.component.jetty.JettyHttpEndpoint;
 import org.apache.camel.spi.UriEndpoint;
 
-@UriEndpoint(scheme = "jetty", title = "Jetty 9", syntax = "jetty:httpUri", 
consumerClass = HttpConsumer.class, label = "http")
+@UriEndpoint(scheme = "jetty", extendsScheme = "http", title = "Jetty 9",
+        syntax = "jetty:httpUri", consumerClass = HttpConsumer.class, label = 
"http")
 public class JettyHttpEndpoint9 extends JettyHttpEndpoint {
     private HttpBinding binding;
 

http://git-wip-us.apache.org/repos/asf/camel/blob/be755208/components/camel-jsch/src/main/java/org/apache/camel/component/scp/ScpEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jsch/src/main/java/org/apache/camel/component/scp/ScpEndpoint.java
 
b/components/camel-jsch/src/main/java/org/apache/camel/component/scp/ScpEndpoint.java
index 5a143c0..80bb6fb 100644
--- 
a/components/camel-jsch/src/main/java/org/apache/camel/component/scp/ScpEndpoint.java
+++ 
b/components/camel-jsch/src/main/java/org/apache/camel/component/scp/ScpEndpoint.java
@@ -28,7 +28,8 @@ import org.apache.camel.spi.UriParam;
 /**
  * Secure Copy Endpoint
  */
-@UriEndpoint(scheme = "scp", title = "SCP", syntax = 
"scp:host:port/directoryName", producerOnly = true, label = "file")
+@UriEndpoint(scheme = "scp", extendsScheme = "ftp", title = "SCP",
+        syntax = "scp:host:port/directoryName", producerOnly = true, label = 
"file")
 public class ScpEndpoint extends RemoteFileEndpoint<ScpFile> {
 
     @UriParam

http://git-wip-us.apache.org/repos/asf/camel/blob/be755208/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpEndpoint.java
 
b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpEndpoint.java
index 9455be9..c3c253a 100644
--- 
a/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpEndpoint.java
+++ 
b/components/camel-netty-http/src/main/java/org/apache/camel/component/netty/http/NettyHttpEndpoint.java
@@ -39,7 +39,8 @@ import org.slf4j.LoggerFactory;
 /**
  * HTTP based {@link NettyEndpoint}
  */
-@UriEndpoint(scheme = "netty-http", title = "Netty HTTP", syntax = 
"netty-http:host:port/path", consumerClass = NettyHttpConsumer.class, label = 
"http")
+@UriEndpoint(scheme = "netty-http", extendsScheme = "netty", title = "Netty 
HTTP",
+        syntax = "netty-http:host:port/path", consumerClass = 
NettyHttpConsumer.class, label = "http")
 public class NettyHttpEndpoint extends NettyEndpoint implements 
HeaderFilterStrategyAware {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(NettyHttpEndpoint.class);

http://git-wip-us.apache.org/repos/asf/camel/blob/be755208/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpEndpoint.java
 
b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpEndpoint.java
index 310f9d5..ac43fdd 100644
--- 
a/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpEndpoint.java
+++ 
b/components/camel-netty4-http/src/main/java/org/apache/camel/component/netty4/http/NettyHttpEndpoint.java
@@ -38,7 +38,8 @@ import org.slf4j.LoggerFactory;
 /**
  * HTTP based {@link NettyEndpoint}
  */
-@UriEndpoint(scheme = "netty4-http", title = "Netty4 HTTP", syntax = 
"netty4-http:host:port/path", consumerClass = NettyHttpConsumer.class, label = 
"http")
+@UriEndpoint(scheme = "netty4-http", extendsScheme = "netty4", title = "Netty4 
HTTP",
+        syntax = "netty4-http:host:port/path", consumerClass = 
NettyHttpConsumer.class, label = "http")
 public class NettyHttpEndpoint extends NettyEndpoint implements 
HeaderFilterStrategyAware {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(NettyHttpEndpoint.class);

http://git-wip-us.apache.org/repos/asf/camel/blob/be755208/components/camel-rss/src/main/java/org/apache/camel/component/rss/RssEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-rss/src/main/java/org/apache/camel/component/rss/RssEndpoint.java
 
b/components/camel-rss/src/main/java/org/apache/camel/component/rss/RssEndpoint.java
index dda7781..c4cc6d0 100644
--- 
a/components/camel-rss/src/main/java/org/apache/camel/component/rss/RssEndpoint.java
+++ 
b/components/camel-rss/src/main/java/org/apache/camel/component/rss/RssEndpoint.java
@@ -33,7 +33,8 @@ import org.slf4j.LoggerFactory;
 /**
  * Is used for polling rss feeds.
  */
-@UriEndpoint(scheme = "rss", title = "RSS", syntax = "rss:feedUri", 
consumerOnly = true, consumerClass = RssEntryPollingConsumer.class, label = 
"feeds")
+@UriEndpoint(scheme = "rss", extendsScheme = "atom", title = "RSS",
+        syntax = "rss:feedUri", consumerOnly = true, consumerClass = 
RssEntryPollingConsumer.class, label = "feeds")
 public class RssEndpoint extends FeedEndpoint {
     protected static final Logger LOG = 
LoggerFactory.getLogger(RssEndpoint.class);
 

http://git-wip-us.apache.org/repos/asf/camel/blob/be755208/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/ServletEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/ServletEndpoint.java
 
b/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/ServletEndpoint.java
index c897d7a..7c43457 100644
--- 
a/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/ServletEndpoint.java
+++ 
b/components/camel-servlet/src/main/java/org/apache/camel/component/servlet/ServletEndpoint.java
@@ -30,7 +30,8 @@ import org.apache.camel.spi.UriPath;
 import org.apache.commons.httpclient.HttpConnectionManager;
 import org.apache.commons.httpclient.params.HttpClientParams;
 
-@UriEndpoint(scheme = "servlet", title = "Servlet", syntax = 
"servlet:servletName", consumerOnly = true, consumerClass = 
ServletConsumer.class, label = "http")
+@UriEndpoint(scheme = "servlet", extendsScheme = "http", title = "Servlet",
+        syntax = "servlet:servletName", consumerOnly = true, consumerClass = 
ServletConsumer.class, label = "http")
 public class ServletEndpoint extends HttpEndpoint {
 
     @UriPath @Metadata(required = "true")

http://git-wip-us.apache.org/repos/asf/camel/blob/be755208/tooling/apt/src/main/java/org/apache/camel/tools/apt/DocumentationHelper.java
----------------------------------------------------------------------
diff --git 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/DocumentationHelper.java 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/DocumentationHelper.java
new file mode 100644
index 0000000..93a7ae5
--- /dev/null
+++ 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/DocumentationHelper.java
@@ -0,0 +1,63 @@
+/**
+ * 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.tools.apt;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.LineNumberReader;
+
+/**
+ * Helper to find documentation for inherited options when a component extends 
another.
+ */
+public final class DocumentationHelper {
+
+    public static String findJavaDoc(String scheme, String fieldName) {
+        return null;
+    }
+
+    /**
+     * Loads the entire stream into memory as a String and returns it.
+     * <p/>
+     * <b>Notice:</b> This implementation appends a <tt>\n</tt> as line
+     * terminator at the of the text.
+     * <p/>
+     * Warning, don't use for crazy big streams :)
+     */
+    private static String loadText(InputStream in) throws IOException {
+        StringBuilder builder = new StringBuilder();
+        InputStreamReader isr = new InputStreamReader(in);
+        try {
+            BufferedReader reader = new LineNumberReader(isr);
+            while (true) {
+                String line = reader.readLine();
+                if (line != null) {
+                    builder.append(line);
+                    builder.append("\n");
+                } else {
+                    break;
+                }
+            }
+            return builder.toString();
+        } finally {
+            isr.close();
+            in.close();
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/be755208/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java
----------------------------------------------------------------------
diff --git 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java
 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java
index 9e583a0..6cb7973 100644
--- 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java
+++ 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java
@@ -189,6 +189,7 @@ public class EndpointAnnotationProcessor extends 
AbstractAnnotationProcessor {
         buffer.append("\n \"component\": {");
         buffer.append("\n    \"kind\": \"").append("component").append("\",");
         buffer.append("\n    \"scheme\": 
\"").append(componentModel.getScheme()).append("\",");
+        buffer.append("\n    \"extendsScheme\": 
\"").append(componentModel.getExtendsScheme()).append("\",");
         buffer.append("\n    \"syntax\": 
\"").append(componentModel.getSyntax()).append("\",");
         buffer.append("\n    \"title\": 
\"").append(componentModel.getTitle()).append("\",");
         buffer.append("\n    \"description\": 
\"").append(componentModel.getDescription()).append("\",");
@@ -283,6 +284,11 @@ public class EndpointAnnotationProcessor extends 
AbstractAnnotationProcessor {
             buffer.append("\n    ");
             // as its json we need to sanitize the docs
             String doc = entry.getDocumentationWithNotes();
+
+            if (Strings.isNullOrEmpty(doc)) {
+                doc = 
DocumentationHelper.findJavaDoc(componentModel.getScheme(), entry.getName());
+            }
+
             doc = sanitizeDescription(doc, false);
             Boolean required = entry.getRequired() != null ? 
Boolean.valueOf(entry.getRequired()) : null;
             String defaultValue = entry.getDefaultValue();
@@ -361,6 +367,7 @@ public class EndpointAnnotationProcessor extends 
AbstractAnnotationProcessor {
         // if the scheme is an alias then replace the scheme name from the 
syntax with the alias
         String syntax = scheme + ":" + Strings.after(uriEndpoint.syntax(), 
":");
 
+        model.setExtendsScheme(uriEndpoint.extendsScheme());
         model.setSyntax(syntax);
         model.setTitle(title);
         model.setLabel(label);
@@ -671,6 +678,7 @@ public class EndpointAnnotationProcessor extends 
AbstractAnnotationProcessor {
     private static final class ComponentModel {
 
         private String scheme;
+        private String extendsScheme;
         private String syntax;
         private String javaType;
         private String title;
@@ -690,6 +698,14 @@ public class EndpointAnnotationProcessor extends 
AbstractAnnotationProcessor {
             return scheme;
         }
 
+        public String getExtendsScheme() {
+            return extendsScheme;
+        }
+
+        public void setExtendsScheme(String extendsScheme) {
+            this.extendsScheme = extendsScheme;
+        }
+
         public String getSyntax() {
             return syntax;
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/be755208/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriEndpoint.java
----------------------------------------------------------------------
diff --git 
a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriEndpoint.java 
b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriEndpoint.java
index 04997a4..772b140 100644
--- 
a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriEndpoint.java
+++ 
b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/UriEndpoint.java
@@ -37,10 +37,21 @@ public @interface UriEndpoint {
      * <p/>
      * Multiple scheme names can be defined as a comma separated value.
      * For example to associate <tt>http</tt> and <tt>https</tt> to the same 
endpoint implementation.
+     * <p/>
+     * The order of the scheme names here should be the same order as in 
{@link #extendsScheme()} so their are paired.
      */
     String scheme();
 
     /**
+     * Used when an endpoint is extending another endpoint
+     * <p/>
+     * Multiple scheme names can be defined as a comma separated value.
+     * For example to associate <tt>ftp</tt> and <tt>ftps</tt> to the same 
endpoint implementation.
+     * The order of the scheme names here should be the same order as in 
{@link #scheme()} so their are paired.
+     */
+    String extendsScheme() default "";
+
+    /**
      * Represent the URI syntax the endpoint must use.
      * <p/>
      * The syntax follows the patterns such as:

Reply via email to