Repository: camel
Updated Branches:
  refs/heads/master 629d63a2e -> 34950ceee


CAMEL-9482: Generate json schema model for camel-spring


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

Branch: refs/heads/master
Commit: 34950ceee931f9a9e92d45f1c8b29d52254992cd
Parents: 532371a
Author: Claus Ibsen <[email protected]>
Authored: Wed Aug 10 19:08:00 2016 +0200
Committer: Claus Ibsen <[email protected]>
Committed: Wed Aug 10 19:08:13 2016 +0200

----------------------------------------------------------------------
 .../org/apache/camel/spi/ThreadPoolProfile.java |  2 +-
 ...bstractCamelConsumerTemplateFactoryBean.java |  3 +-
 .../xml/AbstractCamelEndpointFactoryBean.java   |  7 ++++-
 .../core/xml/AbstractCamelFactoryBean.java      |  3 +-
 ...bstractCamelProducerTemplateFactoryBean.java |  5 ++--
 ...bstractCamelRedeliveryPolicyFactoryBean.java | 24 ++++++++++++++++
 .../xml/AbstractCamelThreadPoolFactoryBean.java | 10 +++++++
 .../apt/CamelContextAnnotationProcessor.java    | 29 ++++++++++++++++----
 8 files changed, 71 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/34950cee/camel-core/src/main/java/org/apache/camel/spi/ThreadPoolProfile.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/spi/ThreadPoolProfile.java 
b/camel-core/src/main/java/org/apache/camel/spi/ThreadPoolProfile.java
index 429af5b..2f84c63 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/ThreadPoolProfile.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/ThreadPoolProfile.java
@@ -200,7 +200,7 @@ public class ThreadPoolProfile implements Serializable, 
Cloneable {
     }
 
     /**
-     * Sets whethre to allow core threads to timeout
+     * Sets whether to allow core threads to timeout
      *
      * @param allowCoreThreadTimeOut <tt>true</tt> to allow timeout
      */

http://git-wip-us.apache.org/repos/asf/camel/blob/34950cee/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelConsumerTemplateFactoryBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelConsumerTemplateFactoryBean.java
 
b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelConsumerTemplateFactoryBean.java
index 877b51a..971c415 100644
--- 
a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelConsumerTemplateFactoryBean.java
+++ 
b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelConsumerTemplateFactoryBean.java
@@ -23,6 +23,7 @@ import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.ConsumerTemplate;
 import org.apache.camel.impl.DefaultConsumerTemplate;
+import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.ServiceHelper;
 
 /**
@@ -36,7 +37,7 @@ public abstract class 
AbstractCamelConsumerTemplateFactoryBean extends AbstractC
 
     @XmlTransient
     private ConsumerTemplate template;
-    @XmlAttribute
+    @XmlAttribute @Metadata(description = "Sets a custom maximum cache size to 
use in the backing cache pools.")
     private Integer maximumCacheSize;
 
     public ConsumerTemplate getObject() throws Exception {

http://git-wip-us.apache.org/repos/asf/camel/blob/34950cee/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelEndpointFactoryBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelEndpointFactoryBean.java
 
b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelEndpointFactoryBean.java
index 72bd289..b7d68f1 100644
--- 
a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelEndpointFactoryBean.java
+++ 
b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelEndpointFactoryBean.java
@@ -30,19 +30,24 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.NoSuchEndpointException;
 import org.apache.camel.model.PropertyDefinition;
+import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.URISupport;
 
 @XmlAccessorType(XmlAccessType.FIELD)
 public abstract class AbstractCamelEndpointFactoryBean extends 
AbstractCamelFactoryBean<Endpoint> {
-    @XmlAttribute(required = false)
+    @XmlAttribute
     @Deprecated
+    @Metadata(description = "Not in use")
     private Boolean singleton;
     @XmlAttribute(required = true)
+    @Metadata(description = "Sets the URI to use to resolve the endpoint. 
Notice that additional options can be configured using a series of property.")
     private String uri;
     @XmlAttribute
     @Deprecated
+    @Metadata(description = "Sets the exchange pattern of the endpoint")
     private ExchangePattern pattern;
     @XmlElementRef
+    @Metadata(description = "To configure additional endpoint options using a 
XML style which is similar as configuring Spring or Blueprint beans.")
     private List<PropertyDefinition> properties = new 
ArrayList<PropertyDefinition>();
     @XmlTransient
     private Endpoint endpoint;

http://git-wip-us.apache.org/repos/asf/camel/blob/34950cee/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelFactoryBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelFactoryBean.java
 
b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelFactoryBean.java
index cae7a71..9689136 100644
--- 
a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelFactoryBean.java
+++ 
b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelFactoryBean.java
@@ -24,12 +24,13 @@ import javax.xml.bind.annotation.XmlTransient;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.model.IdentifiedType;
+import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.ObjectHelper;
 
 @XmlAccessorType(XmlAccessType.FIELD)
 public abstract class AbstractCamelFactoryBean<T> extends IdentifiedType 
implements CamelContextAware {
 
-    @XmlAttribute
+    @XmlAttribute @Metadata(description = "Id of CamelContext to use if there 
are multiple CamelContexts in the same JVM")
     private String camelContextId;
     @XmlTransient
     private CamelContext camelContext;

http://git-wip-us.apache.org/repos/asf/camel/blob/34950cee/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelProducerTemplateFactoryBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelProducerTemplateFactoryBean.java
 
b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelProducerTemplateFactoryBean.java
index 956ebba..8690be0 100644
--- 
a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelProducerTemplateFactoryBean.java
+++ 
b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelProducerTemplateFactoryBean.java
@@ -25,6 +25,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.impl.DefaultProducerTemplate;
+import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.ServiceHelper;
 
 /**
@@ -37,9 +38,9 @@ import org.apache.camel.util.ServiceHelper;
 public abstract class AbstractCamelProducerTemplateFactoryBean extends 
AbstractCamelFactoryBean<ProducerTemplate> {
     @XmlTransient
     private ProducerTemplate template;
-    @XmlAttribute(required = false)
+    @XmlAttribute @Metadata(description = "Sets the default endpoint URI used 
by default for sending message exchanges")
     private String defaultEndpoint;
-    @XmlAttribute
+    @XmlAttribute @Metadata(description = "Sets a custom maximum cache size to 
use in the backing cache pools.")
     private Integer maximumCacheSize;
 
     public ProducerTemplate getObject() throws Exception {

http://git-wip-us.apache.org/repos/asf/camel/blob/34950cee/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelRedeliveryPolicyFactoryBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelRedeliveryPolicyFactoryBean.java
 
b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelRedeliveryPolicyFactoryBean.java
index f353415..98b3813 100644
--- 
a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelRedeliveryPolicyFactoryBean.java
+++ 
b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelRedeliveryPolicyFactoryBean.java
@@ -23,6 +23,7 @@ import javax.xml.bind.annotation.XmlAttribute;
 import org.apache.camel.CamelContext;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.processor.RedeliveryPolicy;
+import org.apache.camel.spi.Metadata;
 import org.apache.camel.util.CamelContextHelper;
 
 /**
@@ -34,46 +35,69 @@ import org.apache.camel.util.CamelContextHelper;
 public abstract class AbstractCamelRedeliveryPolicyFactoryBean extends 
AbstractCamelFactoryBean<RedeliveryPolicy> {
 
     @XmlAttribute
+    @Metadata(description = "Sets the maximum number of times a message 
exchange will be redelivered. Setting a negative value will retry forever.")
     private String maximumRedeliveries;
     @XmlAttribute
+    @Metadata(defaultValue = "1000", description = "Sets the maximum 
redelivery delay. Use -1 if you wish to have no maximum")
     private String redeliveryDelay;
     @XmlAttribute
+    @Metadata(defaultValue = "false", description = "Sets whether asynchronous 
delayed redelivery is allowed. This is disabled by default. When enabled it 
allows Camel to schedule a future task for delayed"
+        + " redelivery which prevents current thread from blocking while 
waiting. Exchange which is transacted will however always use synchronous 
delayed redelivery because"
+        + " the transaction must execute in the same thread context.")
     private String asyncDelayedRedelivery;
     @XmlAttribute
+    @Metadata(defaultValue = "2", description = "Sets the multiplier used to 
increase the delay between redeliveries if useExponentialBackOff is enabled")
     private String backOffMultiplier;
     @XmlAttribute
+    @Metadata(defaultValue = "false", description = "Enables/disables 
exponential backoff using the backOffMultiplier to increase the time between 
retries")
     private String useExponentialBackOff;
     @XmlAttribute
+    @Metadata(defaultValue = "0.15", description = "Sets the factor used for 
collision avoidance if enabled via useCollisionAvoidance.")
     private String collisionAvoidanceFactor;
     @XmlAttribute
+    @Metadata(defaultValue = "false", description = "Enables/disables 
collision avoidance which adds some randomization to the backoff timings to 
reduce contention probability")
     private String useCollisionAvoidance;
     @XmlAttribute
+    @Metadata(defaultValue = "60000", description = "Sets the maximum 
redelivery delay. Use -1 if you wish to have no maximum")
     private String maximumRedeliveryDelay;
     @XmlAttribute
+    @Metadata(defaultValue = "ERROR", description = "Sets the logging level to 
use for log messages when retries have been exhausted.")
     private LoggingLevel retriesExhaustedLogLevel;
     @XmlAttribute
+    @Metadata(defaultValue = "DEBUG", description = "Sets the logging level to 
use for log messages when retries are attempted.")
     private LoggingLevel retryAttemptedLogLevel;
     @XmlAttribute
+    @Metadata(defaultValue = "true", description = "Sets whether to log retry 
attempts")
     private String logRetryAttempted;
     @XmlAttribute
+    @Metadata(defaultValue = "true", description = "Sets whether stack traces 
should be logged or not")
     private String logStackTrace;
     @XmlAttribute
+    @Metadata(defaultValue = "false", description = "Sets whether stack traces 
should be logged or not")
     private String logRetryStackTrace;
     @XmlAttribute
+    @Metadata(defaultValue = "false", description = "Sets whether errors 
should be logged even if its handled")
     private String logHandled;
     @XmlAttribute
+    @Metadata(defaultValue = "false", description = "Sets whether errors 
should be logged even if its continued")
     private String logContinued;
     @XmlAttribute
+    @Metadata(defaultValue = "true", description = "Sets whether exhausted 
exceptions should be logged or not")
     private String logExhausted;
     @XmlAttribute
+    @Metadata(defaultValue = "false", description = "Sets whether to log 
exhausted errors including message history")
     private String logExhaustedMessageHistory;
     @XmlAttribute
+    @Metadata(defaultValue = "false", description = "Disables redelivery by 
setting maximum redeliveries to 0.")
     private String disableRedelivery;
     @XmlAttribute
+    @Metadata(description = "Sets an optional delay pattern to use instead of 
fixed delay.")
     private String delayPattern;
     @XmlAttribute
+    @Metadata(defaultValue = "true", description = "Controls whether to allow 
redelivery while stopping/shutting down a route that uses error handling.")
     private String allowRedeliveryWhileStopping;
     @XmlAttribute
+    @Metadata(description = "Sets the reference of the instance of {@link 
org.apache.camel.spi.ExchangeFormatter} to generate the log message from 
exchange.")
     private String exchangeFormatterRef;
 
     public RedeliveryPolicy getObject() throws Exception {

http://git-wip-us.apache.org/repos/asf/camel/blob/34950cee/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelThreadPoolFactoryBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelThreadPoolFactoryBean.java
 
b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelThreadPoolFactoryBean.java
index 98439d6..f2f7f65 100644
--- 
a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelThreadPoolFactoryBean.java
+++ 
b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelThreadPoolFactoryBean.java
@@ -26,6 +26,7 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.apache.camel.ThreadPoolRejectedPolicy;
 import org.apache.camel.builder.ThreadPoolProfileBuilder;
 import org.apache.camel.builder.xml.TimeUnitAdapter;
+import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.ThreadPoolProfile;
 import org.apache.camel.util.CamelContextHelper;
 
@@ -38,23 +39,32 @@ import org.apache.camel.util.CamelContextHelper;
 public abstract class AbstractCamelThreadPoolFactoryBean extends 
AbstractCamelFactoryBean<ExecutorService> {
 
     @XmlAttribute(required = true)
+    @Metadata(description = "Sets the core pool size (threads to keep minimum 
in pool)")
     private String poolSize;
     @XmlAttribute
+    @Metadata(description = "Sets the maximum pool size")
     private String maxPoolSize;
     @XmlAttribute
+    @Metadata(description = "Sets the keep alive time for inactive threads")
     private String keepAliveTime;
     @XmlAttribute
     @XmlJavaTypeAdapter(TimeUnitAdapter.class)
+    @Metadata(description = "Sets the time unit used for keep alive time", 
defaultValue = "SECONDS")
     private TimeUnit timeUnit = TimeUnit.SECONDS;
     @XmlAttribute
+    @Metadata(description = "Sets the maximum number of tasks in the work 
queue. Use -1 for an unbounded queue")
     private String maxQueueSize;
     @XmlAttribute
+    @Metadata(description = "Sets whether to allow core threads to timeout")
     private String allowCoreThreadTimeOut;
     @XmlAttribute
+    @Metadata(description = "Sets the handler for tasks which cannot be 
executed by the thread pool.", defaultValue = "CallerRuns")
     private ThreadPoolRejectedPolicy rejectedPolicy = 
ThreadPoolRejectedPolicy.CallerRuns;
     @XmlAttribute(required = true)
+    @Metadata(description = "To use a custom thread name / pattern")
     private String threadName;
     @XmlAttribute
+    @Metadata(description = "Whether to use a scheduled thread pool", 
defaultValue = "false")
     private Boolean scheduled;
 
     public ExecutorService getObject() throws Exception {

http://git-wip-us.apache.org/repos/asf/camel/blob/34950cee/tooling/apt/src/main/java/org/apache/camel/tools/apt/CamelContextAnnotationProcessor.java
----------------------------------------------------------------------
diff --git 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/CamelContextAnnotationProcessor.java
 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/CamelContextAnnotationProcessor.java
index 9f10d0f..f8e6b71 100644
--- 
a/tooling/apt/src/main/java/org/apache/camel/tools/apt/CamelContextAnnotationProcessor.java
+++ 
b/tooling/apt/src/main/java/org/apache/camel/tools/apt/CamelContextAnnotationProcessor.java
@@ -36,6 +36,7 @@ import javax.lang.model.util.ElementFilter;
 import javax.lang.model.util.Elements;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementRef;
 import javax.xml.bind.annotation.XmlElements;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
@@ -237,6 +238,11 @@ public class CamelContextAnnotationProcessor extends 
AbstractAnnotationProcessor
                     processElements(roundEnv, classElement, elements, 
fieldElement, eipOptions, prefix);
                 }
 
+                XmlElementRef elementRef = 
fieldElement.getAnnotation(XmlElementRef.class);
+                if (elementRef != null) {
+                    processElement(roundEnv, classElement, null, elementRef, 
fieldElement, eipOptions, prefix);
+                }
+
                 XmlElement element = 
fieldElement.getAnnotation(XmlElement.class);
                 if (element != null) {
                     if ("rests".equals(fieldName)) {
@@ -244,7 +250,7 @@ public class CamelContextAnnotationProcessor extends 
AbstractAnnotationProcessor
                     } else if ("routes".equals(fieldName)) {
                         processRoutes(roundEnv, classElement, element, 
fieldElement, fieldName, eipOptions, prefix);
                     } else {
-                        processElement(roundEnv, classElement, element, 
fieldElement, eipOptions, prefix);
+                        processElement(roundEnv, classElement, element, null, 
fieldElement, eipOptions, prefix);
                     }
                 }
             }
@@ -284,6 +290,10 @@ public class CamelContextAnnotationProcessor extends 
AbstractAnnotationProcessor
 
         String defaultValue = findDefaultValue(fieldElement, fieldTypeName);
         String docComment = findJavaDoc(elementUtils, fieldElement, fieldName, 
name, classElement, true);
+        if (isNullOrEmpty(docComment)) {
+            Metadata metadata = fieldElement.getAnnotation(Metadata.class);
+            docComment = metadata != null ? metadata.description() : null;
+        }
         boolean required = attribute.required();
         // metadata may overrule element required
         required = findRequired(fieldElement, required);
@@ -352,16 +362,16 @@ public class CamelContextAnnotationProcessor extends 
AbstractAnnotationProcessor
         eipOptions.add(ep);
     }
 
-    private void processElement(RoundEnvironment roundEnv, TypeElement 
classElement, XmlElement element, VariableElement fieldElement,
+    private void processElement(RoundEnvironment roundEnv, TypeElement 
classElement, XmlElement element, XmlElementRef elementRef, VariableElement 
fieldElement,
                                 Set<EipOption> eipOptions, String prefix) {
         Elements elementUtils = processingEnv.getElementUtils();
 
         String fieldName;
         fieldName = fieldElement.getSimpleName().toString();
-        if (element != null) {
+        if (element != null || elementRef != null) {
 
             String kind = "element";
-            String name = element.name();
+            String name = element != null ? element.name() : elementRef.name();
             if (isNullOrEmpty(name) || "##default".equals(name)) {
                 name = fieldName;
             }
@@ -372,7 +382,11 @@ public class CamelContextAnnotationProcessor extends 
AbstractAnnotationProcessor
 
             String defaultValue = findDefaultValue(fieldElement, 
fieldTypeName);
             String docComment = findJavaDoc(elementUtils, fieldElement, 
fieldName, name, classElement, true);
-            boolean required = element.required();
+            if (isNullOrEmpty(docComment)) {
+                Metadata metadata = fieldElement.getAnnotation(Metadata.class);
+                docComment = metadata != null ? metadata.description() : null;
+            }
+            boolean required = element != null ? element.required() : 
elementRef.required();
             // metadata may overrule element required
             required = findRequired(fieldElement, required);
 
@@ -443,7 +457,10 @@ public class CamelContextAnnotationProcessor extends 
AbstractAnnotationProcessor
 
             String defaultValue = findDefaultValue(fieldElement, 
fieldTypeName);
             String docComment = findJavaDoc(elementUtils, fieldElement, 
fieldName, name, classElement, true);
-
+            if (isNullOrEmpty(docComment)) {
+                Metadata metadata = fieldElement.getAnnotation(Metadata.class);
+                docComment = metadata != null ? metadata.description() : null;
+            }
             boolean required = false;
             required = findRequired(fieldElement, required);
 

Reply via email to