Repository: camel Updated Branches: refs/heads/master 84aab93c0 -> 9ceec2ba6
CAMEL-8195: Add javadoc to model classes so we have EIP documentation out of the box Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/9ceec2ba Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/9ceec2ba Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/9ceec2ba Branch: refs/heads/master Commit: 9ceec2ba6fa87a0b76e3cc19af184727a676b506 Parents: 84aab93 Author: Claus Ibsen <davscl...@apache.org> Authored: Tue Jan 20 13:40:21 2015 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Tue Jan 20 14:55:53 2015 +0100 ---------------------------------------------------------------------- .../apache/camel/model/MulticastDefinition.java | 71 ++++++++++----- .../camel/model/OnCompletionDefinition.java | 21 ++++- .../camel/model/OnExceptionDefinition.java | 51 ++++++++--- .../OptimisticLockRetryPolicyDefinition.java | 15 ++++ .../camel/model/PackageScanDefinition.java | 9 ++ .../camel/model/PollEnrichDefinition.java | 39 ++++++++ .../apache/camel/model/ProcessDefinition.java | 3 + .../camel/model/RecipientListDefinition.java | 69 ++++++++++---- .../camel/model/RedeliveryPolicyDefinition.java | 5 +- .../camel/model/RemoveHeaderDefinition.java | 3 + .../camel/model/RemoveHeadersDefinition.java | 9 ++ .../camel/model/RemovePropertiesDefinition.java | 9 ++ .../camel/model/RemovePropertyDefinition.java | 3 + .../camel/model/ResequenceDefinition.java | 3 + .../camel/model/RestContextRefDefinition.java | 3 + .../apache/camel/model/RollbackDefinition.java | 11 +++ .../camel/model/RouteBuilderDefinition.java | 3 + .../camel/model/RouteContextRefDefinition.java | 3 + .../apache/camel/model/SamplingDefinition.java | 9 ++ .../model/SetExchangePatternDefinition.java | 3 + .../apache/camel/model/SetHeaderDefinition.java | 3 + .../camel/model/SetOutHeaderDefinition.java | 4 + .../camel/model/SetPropertyDefinition.java | 3 + .../org/apache/camel/model/SplitDefinition.java | 94 +++++++++++++------- .../model/ThreadPoolProfileDefinition.java | 30 ++++++- .../apache/camel/model/ThreadsDefinition.java | 12 ++- .../camel/model/ThrowExceptionDefinition.java | 3 + .../apache/camel/model/UnmarshalDefinition.java | 6 ++ .../apache/camel/model/WireTapDefinition.java | 15 ++++ 29 files changed, 422 insertions(+), 90 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/MulticastDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/MulticastDefinition.java b/camel-core/src/main/java/org/apache/camel/model/MulticastDefinition.java index 0b7db00..dcf6a88 100644 --- a/camel-core/src/main/java/org/apache/camel/model/MulticastDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/MulticastDefinition.java @@ -105,20 +105,17 @@ public class MulticastDefinition extends OutputDefinition<MulticastDefinition> i // ------------------------------------------------------------------------- /** - * Set the multicasting aggregationStrategy - * - * @return the builder + * Sets the AggregationStrategy to be used to assemble the replies from the multicasts, into a single outgoing message from the Multicast. + * By default Camel will use the last reply as the outgoing message. You can also use a POJO as the AggregationStrategy */ public MulticastDefinition aggregationStrategy(AggregationStrategy aggregationStrategy) { setAggregationStrategy(aggregationStrategy); return this; } - + /** - * Set the aggregationStrategy - * - * @param aggregationStrategyRef a reference to a strategy to lookup - * @return the builder + * Sets a reference to the AggregationStrategy to be used to assemble the replies from the multicasts, into a single outgoing message from the Multicast. + * By default Camel will use the last reply as the outgoing message. You can also use a POJO as the AggregationStrategy */ public MulticastDefinition aggregationStrategyRef(String aggregationStrategyRef) { setStrategyRef(aggregationStrategyRef); @@ -126,7 +123,7 @@ public class MulticastDefinition extends OutputDefinition<MulticastDefinition> i } /** - * Sets the method name to use when using a POJO as {@link AggregationStrategy}. + * This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy. * * @param methodName the method name to call * @return the builder @@ -137,7 +134,8 @@ public class MulticastDefinition extends OutputDefinition<MulticastDefinition> i } /** - * Sets allowing null when using a POJO as {@link AggregationStrategy}. + * If this option is false then the aggregate method is not used if there was no data to enrich. + * If this option is true then null values is used as the oldExchange (when no data to enrich), when using POJOs as the AggregationStrategy * * @return the builder */ @@ -147,8 +145,10 @@ public class MulticastDefinition extends OutputDefinition<MulticastDefinition> i } /** - * Uses the {@link java.util.concurrent.ExecutorService} to do the multicasting work - * + * If enabled then sending messages to the multicasts occurs concurrently. + * Note the caller thread will still wait until all messages has been fully processed, before it continues. + * Its only the sending and processing the replies from the multicasts which happens concurrently. + * * @return the builder */ public MulticastDefinition parallelProcessing() { @@ -157,10 +157,10 @@ public class MulticastDefinition extends OutputDefinition<MulticastDefinition> i } /** - * Doing the aggregate work in parallel - * <p/> - * Notice that if enabled, then the {@link org.apache.camel.processor.aggregate.AggregationStrategy} in use - * must be implemented as thread safe, as concurrent threads can call the <tt>aggregate</tt> methods at the same time. + * If enabled then the aggregate method on AggregationStrategy can be called concurrently. + * Notice that this would require the implementation of AggregationStrategy to be implemented as thread-safe. + * By default this is false meaning that Camel synchronizes the call to the aggregate method. + * Though in some use-cases this can be used to archive higher performance when the AggregationStrategy is implemented as thread-safe. * * @return the builder */ @@ -170,7 +170,8 @@ public class MulticastDefinition extends OutputDefinition<MulticastDefinition> i } /** - * Aggregates the responses as the are done (e.g. out of order sequence) + * If enabled then Camel will process replies out-of-order, eg in the order they come back. + * If disabled, Camel will process replies in the same order as defined by the multicast. * * @return the builder */ @@ -196,12 +197,20 @@ public class MulticastDefinition extends OutputDefinition<MulticastDefinition> i setStopOnException(true); return this; } - + + /** + * To use a custom Thread Pool to be used for parallel processing. + * Notice if you set this option, then parallel processing is automatic implied, and you do not have to enable that option as well. + */ public MulticastDefinition executorService(ExecutorService executorService) { setExecutorService(executorService); return this; } - + + /** + * Refers to a custom Thread Pool to be used for parallel processing. + * Notice if you set this option, then parallel processing is automatic implied, and you do not have to enable that option as well. + */ public MulticastDefinition executorServiceRef(String executorServiceRef) { setExecutorServiceRef(executorServiceRef); return this; @@ -234,7 +243,12 @@ public class MulticastDefinition extends OutputDefinition<MulticastDefinition> i } /** - * Sets a timeout value in millis to use when using parallelProcessing. + * Sets a total timeout specified in millis, when using parallel processing. + * If the Multicast hasn't been able to send and process all replies within the given timeframe, + * then the timeout triggers and the Multicast breaks out and continues. + * Notice if you provide a TimeoutAwareAggregationStrategy then the timeout method is invoked before breaking out. + * If the timeout is reached with running tasks still remaining, certain tasks for which it is difficult for Camel + * to shut down in a graceful manner may continue to run. So use this option with a bit of care. * * @param timeout timeout in millis * @return the builder @@ -246,6 +260,8 @@ public class MulticastDefinition extends OutputDefinition<MulticastDefinition> i /** * Shares the {@link org.apache.camel.spi.UnitOfWork} with the parent and each of the sub messages. + * Multicast will by default not share unit of work between the parent exchange and each multicasted exchange. + * This means each sub exchange has its own individual unit of work. * * @return the builder. * @see org.apache.camel.spi.SubUnitOfWork @@ -367,6 +383,10 @@ public class MulticastDefinition extends OutputDefinition<MulticastDefinition> i return strategyRef; } + /** + * Refers to an AggregationStrategy to be used to assemble the replies from the multicasts, into a single outgoing message from the Multicast. + * By default Camel will use the last reply as the outgoing message. You can also use a POJO as the AggregationStrategy + */ public void setStrategyRef(String strategyRef) { this.strategyRef = strategyRef; } @@ -375,6 +395,9 @@ public class MulticastDefinition extends OutputDefinition<MulticastDefinition> i return strategyMethodName; } + /** + * This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy. + */ public void setStrategyMethodName(String strategyMethodName) { this.strategyMethodName = strategyMethodName; } @@ -383,6 +406,10 @@ public class MulticastDefinition extends OutputDefinition<MulticastDefinition> i return strategyMethodAllowNull; } + /** + * If this option is false then the aggregate method is not used if there was no data to enrich. + * If this option is true then null values is used as the oldExchange (when no data to enrich), when using POJOs as the AggregationStrategy + */ public void setStrategyMethodAllowNull(Boolean strategyMethodAllowNull) { this.strategyMethodAllowNull = strategyMethodAllowNull; } @@ -391,6 +418,10 @@ public class MulticastDefinition extends OutputDefinition<MulticastDefinition> i return executorServiceRef; } + /** + * Refers to a custom Thread Pool to be used for parallel processing. + * Notice if you set this option, then parallel processing is automatic implied, and you do not have to enable that option as well. + */ public void setExecutorServiceRef(String executorServiceRef) { this.executorServiceRef = executorServiceRef; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java b/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java index b815294..019dbd6 100644 --- a/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/OnCompletionDefinition.java @@ -259,18 +259,27 @@ public class OnCompletionDefinition extends ProcessorDefinition<OnCompletionDefi return this; } + /** + * To use a custom Thread Pool to be used for parallel processing. + * Notice if you set this option, then parallel processing is automatic implied, and you do not have to enable that option as well. + */ public OnCompletionDefinition executorService(ExecutorService executorService) { setExecutorService(executorService); return this; } + /** + * Refers to a custom Thread Pool to be used for parallel processing. + * Notice if you set this option, then parallel processing is automatic implied, and you do not have to enable that option as well. + */ public OnCompletionDefinition executorServiceRef(String executorServiceRef) { setExecutorServiceRef(executorServiceRef); return this; } /** - * Doing the on completion work in parallel + * If enabled then the on completion process will run asynchronously by a separate thread from a thread pool. + * By default this is false, meaning the on completion process will run synchronously using the same caller thread as from the route. * * @return the builder */ @@ -295,6 +304,11 @@ public class OnCompletionDefinition extends ProcessorDefinition<OnCompletionDefi return mode; } + /** + * Sets the on completion mode. + * <p/> + * The default value is AfterConsumer + */ public void setMode(OnCompletionMode mode) { this.mode = mode; } @@ -351,6 +365,11 @@ public class OnCompletionDefinition extends ProcessorDefinition<OnCompletionDefi return useOriginalMessagePolicy != null; } + /** + * Will use the original input body when an {@link org.apache.camel.Exchange} for this on completion. + * <p/> + * By default this feature is off. + */ public void setUseOriginalMessagePolicy(Boolean useOriginalMessagePolicy) { this.useOriginalMessagePolicy = useOriginalMessagePolicy; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java b/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java index e928f66..59df787 100644 --- a/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java @@ -21,7 +21,6 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; - import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; @@ -64,7 +63,7 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini @XmlElement(name = "retryWhile") private ExpressionSubElementDefinition retryWhile; @XmlElement(name = "redeliveryPolicy") - private RedeliveryPolicyDefinition redeliveryPolicy; + private RedeliveryPolicyDefinition redeliveryPolicyType; @XmlAttribute(name = "redeliveryPolicyRef") private String redeliveryPolicyRef; @XmlElement(name = "handled") @@ -92,6 +91,8 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini // TODO: in Camel 3.0 the OnExceptionDefinition should not contain state and ErrorHandler processors @XmlTransient private final Map<String, Processor> errorHandlers = new HashMap<String, Processor>(); + @XmlTransient + private RedeliveryPolicy redeliveryPolicy; public OnExceptionDefinition() { } @@ -147,10 +148,12 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini * for this exception handler. */ public RedeliveryPolicy createRedeliveryPolicy(CamelContext context, RedeliveryPolicy parentPolicy) { - if (redeliveryPolicyRef != null) { + if (redeliveryPolicy != null) { + return redeliveryPolicy; + } else if (redeliveryPolicyRef != null) { return CamelContextHelper.mandatoryLookup(context, redeliveryPolicyRef, RedeliveryPolicy.class); - } else if (redeliveryPolicy != null) { - return redeliveryPolicy.createRedeliveryPolicy(context, parentPolicy); + } else if (redeliveryPolicyType != null) { + return redeliveryPolicyType.createRedeliveryPolicy(context, parentPolicy); } else if (!outputs.isEmpty() && parentPolicy.getMaximumRedeliveries() != 0) { // if we have outputs, then do not inherit parent maximumRedeliveries // as you would have to explicit configure maximumRedeliveries on this onException to use it @@ -244,7 +247,7 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini if (outputs == null || getOutputs().isEmpty()) { // no outputs so there should be some sort of configuration if (handledPolicy == null && continuedPolicy == null && retryWhilePolicy == null - && redeliveryPolicy == null && useOriginalMessagePolicy == null && onRedelivery == null) { + && redeliveryPolicyType == null && useOriginalMessagePolicy == null && onRedelivery == null) { throw new IllegalArgumentException(this + " is not configured."); } } @@ -695,6 +698,17 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini } /** + * Set the {@link RedeliveryPolicy} to be used. + * + * @param redeliveryPolicy the redelivery policy + * @return the builder + */ + public OnExceptionDefinition redeliveryPolicy(RedeliveryPolicy redeliveryPolicy) { + this.redeliveryPolicy = redeliveryPolicy; + return this; + } + + /** * Sets a reference to a {@link RedeliveryPolicy} to lookup in the {@link org.apache.camel.spi.Registry} to be used. * * @param redeliveryPolicyRef reference to use for lookup @@ -756,6 +770,18 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini return this; } + /** + * Sets a reference to a processor that should be processed <b>before</b> a redelivery attempt. + * <p/> + * Can be used to change the {@link org.apache.camel.Exchange} <b>before</b> its being redelivered. + * + * @param ref reference to the processor + */ + public OnExceptionDefinition onRedeliveryRef(String ref) { + setOnRedeliveryRef(ref); + return this; + } + // Properties //------------------------------------------------------------------------- @Override @@ -783,6 +809,9 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini return exceptions; } + /** + * A set of exceptions to react upon. + */ public void setExceptions(List<String> exceptions) { this.exceptions = exceptions; } @@ -796,11 +825,11 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini } public RedeliveryPolicyDefinition getRedeliveryPolicy() { - return redeliveryPolicy; + return redeliveryPolicyType; } public void setRedeliveryPolicy(RedeliveryPolicyDefinition redeliveryPolicy) { - this.redeliveryPolicy = redeliveryPolicy; + this.redeliveryPolicyType = redeliveryPolicy; } public String getRedeliveryPolicyRef() { @@ -906,10 +935,10 @@ public class OnExceptionDefinition extends ProcessorDefinition<OnExceptionDefini //------------------------------------------------------------------------- protected RedeliveryPolicyDefinition getOrCreateRedeliveryPolicy() { - if (redeliveryPolicy == null) { - redeliveryPolicy = new RedeliveryPolicyDefinition(); + if (redeliveryPolicyType == null) { + redeliveryPolicyType = new RedeliveryPolicyDefinition(); } - return redeliveryPolicy; + return redeliveryPolicyType; } protected List<Class<? extends Throwable>> createExceptionClasses(ClassResolver resolver) throws ClassNotFoundException { http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/OptimisticLockRetryPolicyDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/OptimisticLockRetryPolicyDefinition.java b/camel-core/src/main/java/org/apache/camel/model/OptimisticLockRetryPolicyDefinition.java index 0a88d90..15584d7 100644 --- a/camel-core/src/main/java/org/apache/camel/model/OptimisticLockRetryPolicyDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/OptimisticLockRetryPolicyDefinition.java @@ -67,6 +67,9 @@ public class OptimisticLockRetryPolicyDefinition { return policy; } + /** + * Sets the maximum number of retries + */ public OptimisticLockRetryPolicyDefinition maximumRetries(int maximumRetries) { setMaximumRetries(maximumRetries); return this; @@ -80,6 +83,9 @@ public class OptimisticLockRetryPolicyDefinition { this.maximumRetries = maximumRetries; } + /** + * Sets the delay in millis between retries + */ public OptimisticLockRetryPolicyDefinition retryDelay(long retryDelay) { setRetryDelay(retryDelay); return this; @@ -93,6 +99,9 @@ public class OptimisticLockRetryPolicyDefinition { this.retryDelay = retryDelay; } + /** + * Sets the upper value of retry in millis between retries, when using exponential or random backoff + */ public OptimisticLockRetryPolicyDefinition maximumRetryDelay(long maximumRetryDelay) { setMaximumRetryDelay(maximumRetryDelay); return this; @@ -106,6 +115,9 @@ public class OptimisticLockRetryPolicyDefinition { this.maximumRetryDelay = maximumRetryDelay; } + /** + * Enable exponential backoff + */ public OptimisticLockRetryPolicyDefinition exponentialBackOff() { return exponentialBackOff(true); } @@ -127,6 +139,9 @@ public class OptimisticLockRetryPolicyDefinition { return randomBackOff(true); } + /** + * Enables random backoff + */ public OptimisticLockRetryPolicyDefinition randomBackOff(boolean randomBackOff) { setRandomBackOff(randomBackOff); return this; http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/PackageScanDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/PackageScanDefinition.java b/camel-core/src/main/java/org/apache/camel/model/PackageScanDefinition.java index b47c6d6..859bf63 100644 --- a/camel-core/src/main/java/org/apache/camel/model/PackageScanDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/PackageScanDefinition.java @@ -54,14 +54,23 @@ public class PackageScanDefinition { return packages; } + /** + * Sets the java package names to use for scanning for route builder classes + */ public void setPackages(List<String> packages) { this.packages = packages; } + /** + * Exclude finding route builder from these java package names. + */ public void setExcludes(List<String> excludes) { this.excludes = excludes; } + /** + * Include finding route builder from these java package names. + */ public void setIncludes(List<String> includes) { this.includes = includes; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java b/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java index 8f86f0c..46f39f2 100644 --- a/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/PollEnrichDefinition.java @@ -155,6 +155,9 @@ public class PollEnrichDefinition extends NoOutputDefinition<PollEnrichDefinitio return resourceUri; } + /** + * The endpoint uri for the external service to poll enrich from. You must use either uri or ref. + */ public void setResourceUri(String resourceUri) { this.resourceUri = resourceUri; } @@ -163,6 +166,9 @@ public class PollEnrichDefinition extends NoOutputDefinition<PollEnrichDefinitio return resourceRef; } + /** + * Refers to the endpoint for the external service to poll enrich from. You must use either uri or ref. + */ public void setResourceRef(String resourceRef) { this.resourceRef = resourceRef; } @@ -171,6 +177,17 @@ public class PollEnrichDefinition extends NoOutputDefinition<PollEnrichDefinitio return timeout; } + /** + * Timeout in millis when polling from the external service. + * <p/> + * The timeout has influence about the poll enrich behavior. It basically operations in three different modes: + * <ul> + * <li>negative value - Waits until a message is available and then returns it. Warning that this method could block indefinitely if no messages are available.</li> + * <li>0 - Attempts to receive a message exchange immediately without waiting and returning <tt>null</tt> if a message exchange is not available yet.</li> + * <li>positive value - Attempts to receive a message exchange, waiting up to the given timeout to expire if a message is not yet available. Returns <tt>null</tt> if timed out</li> + * </ul> + * The default value is -1 and therefore the method could block indefinitely, and therefore its recommended to use a timeout value + */ public void setTimeout(Long timeout) { this.timeout = timeout; } @@ -179,6 +196,10 @@ public class PollEnrichDefinition extends NoOutputDefinition<PollEnrichDefinitio return aggregationStrategyRef; } + /** + * Refers to an AggregationStrategy to be used to merge the reply from the external service, into a single outgoing message. + * By default Camel will use the reply from the external service as outgoing message. + */ public void setAggregationStrategyRef(String aggregationStrategyRef) { this.aggregationStrategyRef = aggregationStrategyRef; } @@ -187,6 +208,9 @@ public class PollEnrichDefinition extends NoOutputDefinition<PollEnrichDefinitio return aggregationStrategyMethodName; } + /** + * This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy. + */ public void setAggregationStrategyMethodName(String aggregationStrategyMethodName) { this.aggregationStrategyMethodName = aggregationStrategyMethodName; } @@ -195,6 +219,11 @@ public class PollEnrichDefinition extends NoOutputDefinition<PollEnrichDefinitio return aggregationStrategyMethodAllowNull; } + /** + * If this option is false then the aggregate method is not used if there was no data to enrich. + * If this option is true then null values is used as the oldExchange (when no data to enrich), + * when using POJOs as the AggregationStrategy. + */ public void setAggregationStrategyMethodAllowNull(Boolean aggregationStrategyMethodAllowNull) { this.aggregationStrategyMethodAllowNull = aggregationStrategyMethodAllowNull; } @@ -203,6 +232,10 @@ public class PollEnrichDefinition extends NoOutputDefinition<PollEnrichDefinitio return aggregationStrategy; } + /** + * Sets the AggregationStrategy to be used to merge the reply from the external service, into a single outgoing message. + * By default Camel will use the reply from the external service as outgoing message. + */ public void setAggregationStrategy(AggregationStrategy aggregationStrategy) { this.aggregationStrategy = aggregationStrategy; } @@ -211,6 +244,12 @@ public class PollEnrichDefinition extends NoOutputDefinition<PollEnrichDefinitio return aggregateOnException; } + /** + * If this option is false then the aggregate method is not used if there was an exception thrown while trying + * to retrieve the data to enrich from the resource. Setting this option to true allows end users to control what + * to do if there was an exception in the aggregate method. For example to suppress the exception + * or set a custom message body etc. + */ public void setAggregateOnException(Boolean aggregateOnException) { this.aggregateOnException = aggregateOnException; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/ProcessDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/ProcessDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ProcessDefinition.java index 8437855..da17852 100644 --- a/camel-core/src/main/java/org/apache/camel/model/ProcessDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/ProcessDefinition.java @@ -75,6 +75,9 @@ public class ProcessDefinition extends NoOutputDefinition<ProcessDefinition> { return ref; } + /** + * Reference to the {@link Processor} to lookup in the registry to use. + */ @Required public void setRef(String ref) { this.ref = ref; http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java index 9237f53..0117795 100644 --- a/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/RecipientListDefinition.java @@ -19,7 +19,6 @@ package org.apache.camel.model; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutorService; - import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; @@ -213,7 +212,9 @@ public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> ext } /** - * Set the delimiter + * Delimiter used if the Expression returned multiple endpoints. Can be turned off using the value <tt>false</tt>. + * <p/> + * The default value is , * * @param delimiter the delimiter * @return the builder @@ -224,10 +225,8 @@ public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> ext } /** - * Set the aggregationStrategy - * - * @param aggregationStrategy the strategy - * @return the builder + * Sets the AggregationStrategy to be used to assemble the replies from the recipients, into a single outgoing message from the RecipientList. + * By default Camel will use the last reply as the outgoing message. You can also use a POJO as the AggregationStrategy */ public RecipientListDefinition<Type> aggregationStrategy(AggregationStrategy aggregationStrategy) { setAggregationStrategy(aggregationStrategy); @@ -235,10 +234,8 @@ public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> ext } /** - * Set the aggregationStrategy - * - * @param aggregationStrategyRef a reference to a strategy to lookup - * @return the builder + * Sets a reference to the AggregationStrategy to be used to assemble the replies from the recipients, into a single outgoing message from the RecipientList. + * By default Camel will use the last reply as the outgoing message. You can also use a POJO as the AggregationStrategy */ public RecipientListDefinition<Type> aggregationStrategyRef(String aggregationStrategyRef) { setStrategyRef(aggregationStrategyRef); @@ -246,7 +243,7 @@ public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> ext } /** - * Sets the method name to use when using a POJO as {@link AggregationStrategy}. + * This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy. * * @param methodName the method name to call * @return the builder @@ -257,7 +254,8 @@ public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> ext } /** - * Sets allowing null when using a POJO as {@link AggregationStrategy}. + * If this option is false then the aggregate method is not used if there was no data to enrich. + * If this option is true then null values is used as the oldExchange (when no data to enrich), when using POJOs as the AggregationStrategy * * @return the builder */ @@ -277,7 +275,9 @@ public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> ext } /** - * Doing the recipient list work in parallel + * If enabled then sending messages to the recipients occurs concurrently. + * Note the caller thread will still wait until all messages has been fully processed, before it continues. + * Its only the sending and processing the replies from the recipients which happens concurrently. * * @return the builder */ @@ -287,10 +287,10 @@ public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> ext } /** - * Doing the aggregate work in parallel - * <p/> - * Notice that if enabled, then the {@link org.apache.camel.processor.aggregate.AggregationStrategy} in use - * must be implemented as thread safe, as concurrent threads can call the <tt>aggregate</tt> methods at the same time. + * If enabled then the aggregate method on AggregationStrategy can be called concurrently. + * Notice that this would require the implementation of AggregationStrategy to be implemented as thread-safe. + * By default this is false meaning that Camel synchronizes the call to the aggregate method. + * Though in some use-cases this can be used to archive higher performance when the AggregationStrategy is implemented as thread-safe. * * @return the builder */ @@ -300,7 +300,8 @@ public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> ext } /** - * Doing the recipient list work in streaming model + * If enabled then Camel will process replies out-of-order, eg in the order they come back. + * If disabled, Camel will process replies in the same order as defined by the recipient list. * * @return the builder */ @@ -327,11 +328,19 @@ public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> ext return this; } + /** + * To use a custom Thread Pool to be used for parallel processing. + * Notice if you set this option, then parallel processing is automatic implied, and you do not have to enable that option as well. + */ public RecipientListDefinition<Type> executorService(ExecutorService executorService) { setExecutorService(executorService); return this; } + /** + * Refers to a custom Thread Pool to be used for parallel processing. + * Notice if you set this option, then parallel processing is automatic implied, and you do not have to enable that option as well. + */ public RecipientListDefinition<Type> executorServiceRef(String executorServiceRef) { setExecutorServiceRef(executorServiceRef); return this; @@ -364,7 +373,12 @@ public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> ext } /** - * Sets a timeout value in millis to use when using parallelProcessing. + * Sets a total timeout specified in millis, when using parallel processing. + * If the Recipient List hasn't been able to send and process all replies within the given timeframe, + * then the timeout triggers and the Recipient List breaks out and continues. + * Notice if you provide a TimeoutAwareAggregationStrategy then the timeout method is invoked before breaking out. + * If the timeout is reached with running tasks still remaining, certain tasks for which it is difficult for Camel + * to shut down in a graceful manner may continue to run. So use this option with a bit of care. * * @param timeout timeout in millis * @return the builder @@ -376,6 +390,8 @@ public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> ext /** * Shares the {@link org.apache.camel.spi.UnitOfWork} with the parent and each of the sub messages. + * Recipient List will by default not share unit of work between the parent exchange and each recipient exchange. + * This means each sub exchange has its own individual unit of work. * * @return the builder. * @see org.apache.camel.spi.SubUnitOfWork @@ -424,6 +440,10 @@ public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> ext return strategyRef; } + /** + * Sets a reference to the AggregationStrategy to be used to assemble the replies from the recipients, into a single outgoing message from the RecipientList. + * By default Camel will use the last reply as the outgoing message. You can also use a POJO as the AggregationStrategy + */ public void setStrategyRef(String strategyRef) { this.strategyRef = strategyRef; } @@ -432,6 +452,9 @@ public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> ext return strategyMethodName; } + /** + * This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy. + */ public void setStrategyMethodName(String strategyMethodName) { this.strategyMethodName = strategyMethodName; } @@ -440,6 +463,10 @@ public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> ext return strategyMethodAllowNull; } + /** + * If this option is false then the aggregate method is not used if there was no data to enrich. + * If this option is true then null values is used as the oldExchange (when no data to enrich), when using POJOs as the AggregationStrategy + */ public void setStrategyMethodAllowNull(Boolean strategyMethodAllowNull) { this.strategyMethodAllowNull = strategyMethodAllowNull; } @@ -480,6 +507,10 @@ public class RecipientListDefinition<Type extends ProcessorDefinition<Type>> ext return aggregationStrategy; } + /** + * Sets the AggregationStrategy to be used to assemble the replies from the recipients, into a single outgoing message from the RecipientList. + * By default Camel will use the last reply as the outgoing message. You can also use a POJO as the AggregationStrategy + */ public void setAggregationStrategy(AggregationStrategy aggregationStrategy) { this.aggregationStrategy = aggregationStrategy; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyDefinition.java index 5501246..a8be550 100644 --- a/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/RedeliveryPolicyDefinition.java @@ -581,7 +581,7 @@ public class RedeliveryPolicyDefinition { /** * Sets the reference of the instance of {@link org.apache.camel.spi.ExchangeFormatter} to generate the log message from exchange. * - * @param reference name of the instance of {@link org.apache.camel.spi.ExchangeFormatter} + * @param exchangeFormatterRef name of the instance of {@link org.apache.camel.spi.ExchangeFormatter} * @return the builder */ public RedeliveryPolicyDefinition exchangeFormatterRef(String exchangeFormatterRef) { @@ -752,6 +752,9 @@ public class RedeliveryPolicyDefinition { return disableRedelivery; } + /** + * Disables redelivery (same as setting maximum redeliveries to 0) + */ public void setDisableRedelivery(String disableRedelivery) { this.disableRedelivery = disableRedelivery; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/RemoveHeaderDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/RemoveHeaderDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RemoveHeaderDefinition.java index cfd53bc..8bae696 100644 --- a/camel-core/src/main/java/org/apache/camel/model/RemoveHeaderDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/RemoveHeaderDefinition.java @@ -60,6 +60,9 @@ public class RemoveHeaderDefinition extends NoOutputDefinition<RemoveHeaderDefin return new RemoveHeaderProcessor(getHeaderName()); } + /** + * Name of header to remove + */ public void setHeaderName(String headerName) { this.headerName = headerName; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/RemoveHeadersDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/RemoveHeadersDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RemoveHeadersDefinition.java index 4484d64..88c193b 100644 --- a/camel-core/src/main/java/org/apache/camel/model/RemoveHeadersDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/RemoveHeadersDefinition.java @@ -77,6 +77,9 @@ public class RemoveHeadersDefinition extends NoOutputDefinition<RemoveHeadersDef } } + /** + * Name or pattern of headers to remove + */ public void setPattern(String pattern) { this.pattern = pattern; } @@ -89,6 +92,9 @@ public class RemoveHeadersDefinition extends NoOutputDefinition<RemoveHeadersDef return excludePatterns; } + /** + * Name or pattern of headers to not remove + */ public void setExcludePatterns(String[] excludePatterns) { this.excludePatterns = excludePatterns; } @@ -97,6 +103,9 @@ public class RemoveHeadersDefinition extends NoOutputDefinition<RemoveHeadersDef return excludePattern; } + /** + * Name or patter of headers to not remove + */ public void setExcludePattern(String excludePattern) { this.excludePattern = excludePattern; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/RemovePropertiesDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/RemovePropertiesDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RemovePropertiesDefinition.java index 153339c..6a7f397 100644 --- a/camel-core/src/main/java/org/apache/camel/model/RemovePropertiesDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/RemovePropertiesDefinition.java @@ -77,6 +77,9 @@ public class RemovePropertiesDefinition extends NoOutputDefinition<RemovePropert } } + /** + * Name or pattern of properties to remove + */ public void setPattern(String pattern) { this.pattern = pattern; } @@ -89,6 +92,9 @@ public class RemovePropertiesDefinition extends NoOutputDefinition<RemovePropert return excludePatterns; } + /** + * Name or pattern of properties to not remove + */ public void setExcludePatterns(String[] excludePatterns) { this.excludePatterns = excludePatterns; } @@ -97,6 +103,9 @@ public class RemovePropertiesDefinition extends NoOutputDefinition<RemovePropert return excludePattern; } + /** + * Name or pattern of properties to not remove + */ public void setExcludePattern(String excludePattern) { this.excludePattern = excludePattern; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/RemovePropertyDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/RemovePropertyDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RemovePropertyDefinition.java index a0158df..2859b45 100644 --- a/camel-core/src/main/java/org/apache/camel/model/RemovePropertyDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/RemovePropertyDefinition.java @@ -60,6 +60,9 @@ public class RemovePropertyDefinition extends NoOutputDefinition<RemovePropertyD return new RemovePropertyProcessor(getPropertyName()); } + /** + * Name of property to remove + */ public void setPropertyName(String propertyName) { this.propertyName = propertyName; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java index 8683a28..9180136 100644 --- a/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/ResequenceDefinition.java @@ -275,6 +275,9 @@ public class ResequenceDefinition extends ProcessorDefinition<ResequenceDefiniti return resequencerConfig; } + /** + * To configure the resequencer in using either batch or stream configuration + */ public void setResequencerConfig(ResequencerConfig resequencerConfig) { this.resequencerConfig = resequencerConfig; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinition.java index 19c9287..df3b112 100644 --- a/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/RestContextRefDefinition.java @@ -50,6 +50,9 @@ public class RestContextRefDefinition { return ref; } + /** + * Reference to the rest-dsl + */ public void setRef(String ref) { this.ref = ref; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java index 365b7bb..b2df9f3 100644 --- a/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java @@ -78,6 +78,9 @@ public class RollbackDefinition extends NoOutputDefinition<RollbackDefinition> { return message; } + /** + * Message to use in rollback exception + */ public void setMessage(String message) { this.message = message; } @@ -86,6 +89,9 @@ public class RollbackDefinition extends NoOutputDefinition<RollbackDefinition> { return markRollbackOnly; } + /** + * Mark the transaction for rollback only (cannot be overruled to commit) + */ public void setMarkRollbackOnly(Boolean markRollbackOnly) { this.markRollbackOnly = markRollbackOnly; } @@ -98,6 +104,11 @@ public class RollbackDefinition extends NoOutputDefinition<RollbackDefinition> { return markRollbackOnlyLast; } + /** + * Mark only last sub transaction for rollback only. + * <p/> + * When using sub transactions (if the transaction manager support this) + */ public void setMarkRollbackOnlyLast(Boolean markRollbackOnlyLast) { this.markRollbackOnlyLast = markRollbackOnlyLast; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/RouteBuilderDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/RouteBuilderDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RouteBuilderDefinition.java index c3d2355..a08a789 100644 --- a/camel-core/src/main/java/org/apache/camel/model/RouteBuilderDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/RouteBuilderDefinition.java @@ -56,6 +56,9 @@ public class RouteBuilderDefinition extends IdentifiedType { return ref; } + /** + * Reference to the route builder instance + */ public void setRef(String ref) { this.ref = ref; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinition.java b/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinition.java index 1f29b94..2610c02 100644 --- a/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/RouteContextRefDefinition.java @@ -50,6 +50,9 @@ public class RouteContextRefDefinition { return ref; } + /** + * Reference to the routes in the xml dsl + */ public void setRef(String ref) { this.ref = ref; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/SamplingDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/SamplingDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SamplingDefinition.java index 89c9eea..4daafcd 100644 --- a/camel-core/src/main/java/org/apache/camel/model/SamplingDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/SamplingDefinition.java @@ -142,6 +142,9 @@ public class SamplingDefinition extends OutputDefinition<SamplingDefinition> { return samplePeriod; } + /** + * Sets the sample period during which only a single Exchange will pass through. + */ public void setSamplePeriod(Long samplePeriod) { this.samplePeriod = samplePeriod; } @@ -150,6 +153,9 @@ public class SamplingDefinition extends OutputDefinition<SamplingDefinition> { return messageFrequency; } + /** + * Sets the sample message count which only a single Exchange will pass through after this many received. + */ public void setMessageFrequency(Long messageFrequency) { this.messageFrequency = messageFrequency; } @@ -158,6 +164,9 @@ public class SamplingDefinition extends OutputDefinition<SamplingDefinition> { this.units = TimeUnit.valueOf(units); } + /** + * Sets the time units for the sample period, defaulting to seconds. + */ public void setUnits(TimeUnit units) { this.units = units; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/SetExchangePatternDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/SetExchangePatternDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SetExchangePatternDefinition.java index f5f9aeb..3c1cc00 100644 --- a/camel-core/src/main/java/org/apache/camel/model/SetExchangePatternDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/SetExchangePatternDefinition.java @@ -58,6 +58,9 @@ public class SetExchangePatternDefinition extends NoOutputDefinition<SetExchange return pattern; } + /** + * Sets the new exchange pattern of the Exchange to be used from this point forward + */ public void setPattern(ExchangePattern pattern) { this.pattern = pattern; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/SetHeaderDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/SetHeaderDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SetHeaderDefinition.java index 94c4b3d..ee26d05 100644 --- a/camel-core/src/main/java/org/apache/camel/model/SetHeaderDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/SetHeaderDefinition.java @@ -76,6 +76,9 @@ public class SetHeaderDefinition extends NoOutputExpressionNode { return new SetHeaderProcessor(getHeaderName(), expr); } + /** + * Name of message header to set a new value + */ @Required public void setHeaderName(String headerName) { this.headerName = headerName; http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/SetOutHeaderDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/SetOutHeaderDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SetOutHeaderDefinition.java index 73b5380..bcf5e80 100644 --- a/camel-core/src/main/java/org/apache/camel/model/SetOutHeaderDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/SetOutHeaderDefinition.java @@ -40,6 +40,7 @@ import org.apache.camel.util.ObjectHelper; @XmlAccessorType(XmlAccessType.FIELD) @Deprecated public class SetOutHeaderDefinition extends NoOutputExpressionNode { + @Deprecated @XmlAttribute(required = true) private String headerName; @@ -73,6 +74,9 @@ public class SetOutHeaderDefinition extends NoOutputExpressionNode { return ProcessorBuilder.setOutHeader(getHeaderName(), expr); } + /** + * Name of message header to set a new value + */ @Required public void setHeaderName(String headerName) { this.headerName = headerName; http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/SetPropertyDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/SetPropertyDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SetPropertyDefinition.java index cc2a5d3..64e1da1 100644 --- a/camel-core/src/main/java/org/apache/camel/model/SetPropertyDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/SetPropertyDefinition.java @@ -76,6 +76,9 @@ public class SetPropertyDefinition extends NoOutputExpressionNode { return new SetPropertyProcessor(getPropertyName(), expr); } + /** + * Name of exchange property to set a new value + */ @Required public void setPropertyName(String propertyName) { this.propertyName = propertyName; http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/SplitDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/SplitDefinition.java b/camel-core/src/main/java/org/apache/camel/model/SplitDefinition.java index 68e747c..f718512 100644 --- a/camel-core/src/main/java/org/apache/camel/model/SplitDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/SplitDefinition.java @@ -153,20 +153,17 @@ public class SplitDefinition extends ExpressionNode implements ExecutorServiceAw // ------------------------------------------------------------------------- /** - * Set the aggregationStrategy - * - * @return the builder + * Sets the AggregationStrategy to be used to assemble the replies from the splitted messages, into a single outgoing message from the Splitter. + * By default Camel will use the original incoming message to the splitter (leave it unchanged). You can also use a POJO as the AggregationStrategy */ public SplitDefinition aggregationStrategy(AggregationStrategy aggregationStrategy) { setAggregationStrategy(aggregationStrategy); return this; } - + /** - * Set the aggregationStrategy - * - * @param aggregationStrategyRef a reference to a strategy to lookup - * @return the builder + * Sets a reference to the AggregationStrategy to be used to assemble the replies from the splitted messages, into a single outgoing message from the Splitter. + * By default Camel will use the original incoming message to the splitter (leave it unchanged). You can also use a POJO as the AggregationStrategy */ public SplitDefinition aggregationStrategyRef(String aggregationStrategyRef) { setStrategyRef(aggregationStrategyRef); @@ -174,7 +171,7 @@ public class SplitDefinition extends ExpressionNode implements ExecutorServiceAw } /** - * Sets the method name to use when using a POJO as {@link AggregationStrategy}. + * This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy. * * @param methodName the method name to call * @return the builder @@ -185,7 +182,8 @@ public class SplitDefinition extends ExpressionNode implements ExecutorServiceAw } /** - * Sets allowing null when using a POJO as {@link AggregationStrategy}. + * If this option is false then the aggregate method is not used if there was no data to enrich. + * If this option is true then null values is used as the oldExchange (when no data to enrich), when using POJOs as the AggregationStrategy * * @return the builder */ @@ -195,7 +193,9 @@ public class SplitDefinition extends ExpressionNode implements ExecutorServiceAw } /** - * Doing the splitting work in parallel + * If enabled then processing each splitted messages occurs concurrently. + * Note the caller thread will still wait until all messages has been fully processed, before it continues. + * Its only processing the sub messages from the splitter which happens concurrently. * * @return the builder */ @@ -203,12 +203,12 @@ public class SplitDefinition extends ExpressionNode implements ExecutorServiceAw setParallelProcessing(true); return this; } - + /** - * Doing the aggregate work in parallel - * <p/> - * Notice that if enabled, then the {@link org.apache.camel.processor.aggregate.AggregationStrategy} in use - * must be implemented as thread safe, as concurrent threads can call the <tt>aggregate</tt> methods at the same time. + * If enabled then the aggregate method on AggregationStrategy can be called concurrently. + * Notice that this would require the implementation of AggregationStrategy to be implemented as thread-safe. + * By default this is false meaning that Camel synchronizes the call to the aggregate method. + * Though in some use-cases this can be used to archive higher performance when the AggregationStrategy is implemented as thread-safe. * * @return the builder */ @@ -218,8 +218,17 @@ public class SplitDefinition extends ExpressionNode implements ExecutorServiceAw } /** - * Enables streaming. - * See {@link org.apache.camel.model.SplitDefinition#isStreaming()} for more information + * When in streaming mode, then the splitter splits the original message on-demand, and each splitted + * message is processed one by one. This reduces memory usage as the splitter do not split all the messages first, + * but then we do not know the total size, and therefore the {@link org.apache.camel.Exchange#SPLIT_SIZE} is empty. + * <p/> + * In non-streaming mode (default) the splitter will split each message first, to know the total size, and then + * process each message one by one. This requires to keep all the splitted messages in memory and therefore requires + * more memory. The total size is provided in the {@link org.apache.camel.Exchange#SPLIT_SIZE} header. + * <p/> + * The streaming mode also affects the aggregation behavior. + * If enabled then Camel will process replies out-of-order, eg in the order they come back. + * If disabled, Camel will process replies in the same order as the messages was splitted. * * @return the builder */ @@ -245,12 +254,20 @@ public class SplitDefinition extends ExpressionNode implements ExecutorServiceAw setStopOnException(true); return this; } - + + /** + * To use a custom Thread Pool to be used for parallel processing. + * Notice if you set this option, then parallel processing is automatic implied, and you do not have to enable that option as well. + */ public SplitDefinition executorService(ExecutorService executorService) { setExecutorService(executorService); return this; } - + + /** + * Refers to a custom Thread Pool to be used for parallel processing. + * Notice if you set this option, then parallel processing is automatic implied, and you do not have to enable that option as well. + */ public SplitDefinition executorServiceRef(String executorServiceRef) { setExecutorServiceRef(executorServiceRef); return this; @@ -283,7 +300,12 @@ public class SplitDefinition extends ExpressionNode implements ExecutorServiceAw } /** - * Sets a timeout value in millis to use when using parallelProcessing. + * Sets a total timeout specified in millis, when using parallel processing. + * If the Splitter hasn't been able to split and process all the sub messages within the given timeframe, + * then the timeout triggers and the Splitter breaks out and continues. + * Notice if you provide a TimeoutAwareAggregationStrategy then the timeout method is invoked before breaking out. + * If the timeout is reached with running tasks still remaining, certain tasks for which it is difficult for Camel + * to shut down in a graceful manner may continue to run. So use this option with a bit of care. * * @param timeout timeout in millis * @return the builder @@ -295,6 +317,8 @@ public class SplitDefinition extends ExpressionNode implements ExecutorServiceAw /** * Shares the {@link org.apache.camel.spi.UnitOfWork} with the parent and each of the sub messages. + * Splitter will by default not share unit of work between the parent exchange and each splitted exchange. + * This means each splitted exchange has its own individual unit of work. * * @return the builder. * @see org.apache.camel.spi.SubUnitOfWork @@ -311,6 +335,10 @@ public class SplitDefinition extends ExpressionNode implements ExecutorServiceAw return aggregationStrategy; } + /** + * Sets the AggregationStrategy to be used to assemble the replies from the splitted messages, into a single outgoing message from the Splitter. + * By default Camel will use the original incoming message to the splitter (leave it unchanged). You can also use a POJO as the AggregationStrategy + */ public void setAggregationStrategy(AggregationStrategy aggregationStrategy) { this.aggregationStrategy = aggregationStrategy; } @@ -335,13 +363,6 @@ public class SplitDefinition extends ExpressionNode implements ExecutorServiceAw this.streaming = streaming; } - /** - * The splitter should use streaming -- exchanges are being sent as the data for them becomes available. - * This improves throughput and memory usage, but it has a drawback: - * - the sent exchanges will no longer contain the {@link org.apache.camel.Exchange#SPLIT_SIZE} header property - * - * @return whether or not streaming should be used - */ public boolean isStreaming() { return streaming != null && streaming; } @@ -350,12 +371,6 @@ public class SplitDefinition extends ExpressionNode implements ExecutorServiceAw return parallelAggregate; } - /** - * Whether to aggregate using a sequential single thread, or allow parallel aggregation. - * <p/> - * Notice that if enabled, then the {@link org.apache.camel.processor.aggregate.AggregationStrategy} in use - * must be implemented as thread safe, as concurrent threads can call the <tt>aggregate</tt> methods at the same time. - */ public boolean isParallelAggregate() { return parallelAggregate != null && parallelAggregate; } @@ -388,6 +403,10 @@ public class SplitDefinition extends ExpressionNode implements ExecutorServiceAw return strategyRef; } + /** + * Sets a reference to the AggregationStrategy to be used to assemble the replies from the splitted messages, into a single outgoing message from the Splitter. + * By default Camel will use the original incoming message to the splitter (leave it unchanged). You can also use a POJO as the AggregationStrategy + */ public void setStrategyRef(String strategyRef) { this.strategyRef = strategyRef; } @@ -396,6 +415,9 @@ public class SplitDefinition extends ExpressionNode implements ExecutorServiceAw return strategyMethodName; } + /** + * This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy. + */ public void setStrategyMethodName(String strategyMethodName) { this.strategyMethodName = strategyMethodName; } @@ -404,6 +426,10 @@ public class SplitDefinition extends ExpressionNode implements ExecutorServiceAw return strategyMethodAllowNull; } + /** + * If this option is false then the aggregate method is not used if there was no data to enrich. + * If this option is true then null values is used as the oldExchange (when no data to enrich), when using POJOs as the AggregationStrategy + */ public void setStrategyMethodAllowNull(Boolean strategyMethodAllowNull) { this.strategyMethodAllowNull = strategyMethodAllowNull; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/ThreadPoolProfileDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/ThreadPoolProfileDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ThreadPoolProfileDefinition.java index e0a3989..ec187ac 100644 --- a/camel-core/src/main/java/org/apache/camel/model/ThreadPoolProfileDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/ThreadPoolProfileDefinition.java @@ -18,7 +18,6 @@ package org.apache.camel.model; import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.TimeUnit; - import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; @@ -118,6 +117,9 @@ public class ThreadPoolProfileDefinition extends OptionalIdentifiedDefinition<Th return defaultProfile; } + /** + * Whether this profile is the default thread pool profile + */ public void setDefaultProfile(Boolean defaultProfile) { this.defaultProfile = defaultProfile; } @@ -130,6 +132,9 @@ public class ThreadPoolProfileDefinition extends OptionalIdentifiedDefinition<Th return poolSize; } + /** + * Sets the core pool size + */ public void setPoolSize(String poolSize) { this.poolSize = poolSize; } @@ -138,6 +143,9 @@ public class ThreadPoolProfileDefinition extends OptionalIdentifiedDefinition<Th return maxPoolSize; } + /** + * Sets the maximum pool size + */ public void setMaxPoolSize(String maxPoolSize) { this.maxPoolSize = maxPoolSize; } @@ -146,6 +154,9 @@ public class ThreadPoolProfileDefinition extends OptionalIdentifiedDefinition<Th return keepAliveTime; } + /** + * Sets the keep alive time for idle threads in the pool + */ public void setKeepAliveTime(String keepAliveTime) { this.keepAliveTime = keepAliveTime; } @@ -154,6 +165,11 @@ public class ThreadPoolProfileDefinition extends OptionalIdentifiedDefinition<Th return maxQueueSize; } + /** + * Sets the maximum number of tasks in the work queue. + * <p/> + * Use <tt>-1</tt> or <tt>Integer.MAX_VALUE</tt> for an unbounded queue + */ public void setMaxQueueSize(String maxQueueSize) { this.maxQueueSize = maxQueueSize; } @@ -162,6 +178,11 @@ public class ThreadPoolProfileDefinition extends OptionalIdentifiedDefinition<Th return allowCoreThreadTimeOut; } + /** + * Whether idle core threads is allowed to timeout and therefore can shrink the pool size below the core pool size + * <p/> + * Is by default <tt>false</tt> + */ public void setAllowCoreThreadTimeOut(String allowCoreThreadTimeOut) { this.allowCoreThreadTimeOut = allowCoreThreadTimeOut; } @@ -170,6 +191,10 @@ public class ThreadPoolProfileDefinition extends OptionalIdentifiedDefinition<Th return timeUnit; } + /** + * Sets the time unit to use for keep alive time + * By default SECONDS is used. + */ public void setTimeUnit(TimeUnit timeUnit) { this.timeUnit = timeUnit; } @@ -185,6 +210,9 @@ public class ThreadPoolProfileDefinition extends OptionalIdentifiedDefinition<Th return null; } + /** + * Sets the handler for tasks which cannot be executed by the thread pool. + */ public void setRejectedPolicy(ThreadPoolRejectedPolicy rejectedPolicy) { this.rejectedPolicy = rejectedPolicy; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java index 8e53dc0..6eedc64 100644 --- a/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/ThreadsDefinition.java @@ -166,18 +166,24 @@ public class ThreadsDefinition extends OutputDefinition<ThreadsDefinition> imple return "Threads[" + getOutputs() + "]"; } + /** + * To use a custom thread pool + */ public ThreadsDefinition executorService(ExecutorService executorService) { setExecutorService(executorService); return this; } + /** + * To refer to a custom thread pool or use a thread pool profile (as overlay) + */ public ThreadsDefinition executorServiceRef(String executorServiceRef) { setExecutorServiceRef(executorServiceRef); return this; } /** - * Sets the core pool size for the underlying {@link java.util.concurrent.ExecutorService}. + * Sets the core pool size * * @param poolSize the core pool size to keep minimum in the pool * @return the builder @@ -188,7 +194,7 @@ public class ThreadsDefinition extends OutputDefinition<ThreadsDefinition> imple } /** - * Sets the maximum pool size for the underlying {@link java.util.concurrent.ExecutorService}. + * Sets the maximum pool size * * @param maxPoolSize the maximum pool size * @return the builder @@ -270,7 +276,7 @@ public class ThreadsDefinition extends OutputDefinition<ThreadsDefinition> imple } /** - * Whether to allow core threads to timeout + * Whether idle core threads is allowed to timeout and therefore can shrink the pool size below the core pool size * <p/> * Is by default <tt>false</tt> * http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/ThrowExceptionDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/ThrowExceptionDefinition.java b/camel-core/src/main/java/org/apache/camel/model/ThrowExceptionDefinition.java index a739f7b..651c56e 100644 --- a/camel-core/src/main/java/org/apache/camel/model/ThrowExceptionDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/ThrowExceptionDefinition.java @@ -72,6 +72,9 @@ public class ThrowExceptionDefinition extends NoOutputDefinition<ThrowExceptionD return ref; } + /** + * Reference to the exception instance to lookup from the registry to throw + */ public void setRef(String ref) { this.ref = ref; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java b/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java index 8b63711..8ced831 100644 --- a/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java @@ -149,6 +149,9 @@ public class UnmarshalDefinition extends NoOutputDefinition<UnmarshalDefinition> return ref; } + /** + * To refer to a custom data format to use as unmarshaller + */ public void setRef(String ref) { this.ref = ref; } @@ -157,6 +160,9 @@ public class UnmarshalDefinition extends NoOutputDefinition<UnmarshalDefinition> return dataFormatType; } + /** + * The data format to be used + */ public void setDataFormatType(DataFormatDefinition dataFormatType) { this.dataFormatType = dataFormatType; } http://git-wip-us.apache.org/repos/asf/camel/blob/9ceec2ba/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java b/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java index 5aeb3fa..b6892c6 100644 --- a/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java +++ b/camel-core/src/main/java/org/apache/camel/model/WireTapDefinition.java @@ -315,6 +315,9 @@ public class WireTapDefinition<Type extends ProcessorDefinition<Type>> extends N return uri; } + /** + * Uri of the endpoint to use as wire tap + */ public void setUri(String uri) { this.uri = uri; } @@ -323,6 +326,9 @@ public class WireTapDefinition<Type extends ProcessorDefinition<Type>> extends N return ref; } + /** + * Reference of the endpoint to use as wire tap + */ public void setRef(String ref) { this.ref = ref; } @@ -339,6 +345,9 @@ public class WireTapDefinition<Type extends ProcessorDefinition<Type>> extends N return newExchangeProcessor; } + /** + * To use a Processor for creating a new body as the message to use for wire tapping + */ public void setNewExchangeProcessor(Processor processor) { this.newExchangeProcessor = processor; } @@ -347,6 +356,9 @@ public class WireTapDefinition<Type extends ProcessorDefinition<Type>> extends N return newExchangeProcessorRef; } + /** + * Reference to a Processor to use for creating a new body as the message to use for wire tapping + */ public void setNewExchangeProcessorRef(String ref) { this.newExchangeProcessorRef = ref; } @@ -355,6 +367,9 @@ public class WireTapDefinition<Type extends ProcessorDefinition<Type>> extends N return newExchangeExpression; } + /** + * Expression used for creating a new body as the message to use for wire tapping + */ public void setNewExchangeExpression(ExpressionSubElementDefinition expression) { this.newExchangeExpression = expression; }