You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2024/04/19 10:11:29 UTC
(camel) branch vars created (now 96b414e03e0)
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a change to branch vars
in repository https://gitbox.apache.org/repos/asf/camel.git
at 96b414e03e0 CAMEL-20694: camel-core - Add serVariables EIP to set multiple at once
This branch includes the following new commits:
new 96b414e03e0 CAMEL-20694: camel-core - Add serVariables EIP to set multiple at once
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(camel) 01/01: CAMEL-20694: camel-core - Add serVariables EIP to set multiple at once
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch vars
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 96b414e03e04fab7b8cba0b793b9a7cf22f2ff45
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Apr 19 12:11:17 2024 +0200
CAMEL-20694: camel-core - Add serVariables EIP to set multiple at once
---
.../org/apache/camel/catalog/models.properties | 1 +
.../org/apache/camel/catalog/models/aggregate.json | 2 +-
.../camel/catalog/models/circuitBreaker.json | 2 +-
.../org/apache/camel/catalog/models/doCatch.json | 2 +-
.../org/apache/camel/catalog/models/doFinally.json | 2 +-
.../org/apache/camel/catalog/models/doTry.json | 2 +-
.../org/apache/camel/catalog/models/filter.json | 2 +-
.../camel/catalog/models/idempotentConsumer.json | 2 +-
.../org/apache/camel/catalog/models/intercept.json | 2 +-
.../apache/camel/catalog/models/interceptFrom.json | 2 +-
.../catalog/models/interceptSendToEndpoint.json | 2 +-
.../org/apache/camel/catalog/models/kamelet.json | 2 +-
.../apache/camel/catalog/models/loadBalance.json | 2 +-
.../org/apache/camel/catalog/models/loop.json | 2 +-
.../org/apache/camel/catalog/models/multicast.json | 2 +-
.../apache/camel/catalog/models/onCompletion.json | 2 +-
.../apache/camel/catalog/models/onException.json | 2 +-
.../apache/camel/catalog/models/onFallback.json | 2 +-
.../org/apache/camel/catalog/models/otherwise.json | 2 +-
.../org/apache/camel/catalog/models/pipeline.json | 2 +-
.../apache/camel/catalog/models/resequence.json | 2 +-
.../org/apache/camel/catalog/models/route.json | 2 +-
.../org/apache/camel/catalog/models/saga.json | 2 +-
.../apache/camel/catalog/models/setVariables.json | 19 ++
.../org/apache/camel/catalog/models/split.json | 2 +-
.../org/apache/camel/catalog/models/step.json | 2 +-
.../org/apache/camel/catalog/models/when.json | 2 +-
.../catalog/models/whenSkipSendToEndpoint.json | 2 +-
.../apache/camel/catalog/schemas/camel-spring.xsd | 44 +++++
.../modules/eips/examples/json/setVariables.json | 1 +
.../src/main/docs/modules/eips/nav.adoc | 1 +
.../docs/modules/eips/pages/setVariables-eip.adoc | 210 +++++++++++++++++++++
.../META-INF/org/apache/camel/model/aggregate.json | 2 +-
.../org/apache/camel/model/circuitBreaker.json | 2 +-
.../META-INF/org/apache/camel/model/doCatch.json | 2 +-
.../META-INF/org/apache/camel/model/doFinally.json | 2 +-
.../META-INF/org/apache/camel/model/doTry.json | 2 +-
.../META-INF/org/apache/camel/model/filter.json | 2 +-
.../org/apache/camel/model/idempotentConsumer.json | 2 +-
.../META-INF/org/apache/camel/model/intercept.json | 2 +-
.../org/apache/camel/model/interceptFrom.json | 2 +-
.../camel/model/interceptSendToEndpoint.json | 2 +-
.../META-INF/org/apache/camel/model/kamelet.json | 2 +-
.../org/apache/camel/model/loadBalance.json | 2 +-
.../META-INF/org/apache/camel/model/loop.json | 2 +-
.../META-INF/org/apache/camel/model/multicast.json | 2 +-
.../org/apache/camel/model/onCompletion.json | 2 +-
.../org/apache/camel/model/onException.json | 2 +-
.../org/apache/camel/model/onFallback.json | 2 +-
.../META-INF/org/apache/camel/model/otherwise.json | 2 +-
.../META-INF/org/apache/camel/model/pipeline.json | 2 +-
.../org/apache/camel/model/resequence.json | 2 +-
.../META-INF/org/apache/camel/model/route.json | 2 +-
.../META-INF/org/apache/camel/model/saga.json | 2 +-
.../org/apache/camel/model/setVariables.json | 19 ++
.../META-INF/org/apache/camel/model/split.json | 2 +-
.../META-INF/org/apache/camel/model/step.json | 2 +-
.../META-INF/org/apache/camel/model/when.json | 2 +-
.../apache/camel/model/whenSkipSendToEndpoint.json | 2 +-
.../services/org/apache/camel/model.properties | 1 +
.../resources/org/apache/camel/model/jaxb.index | 1 +
.../apache/camel/model/ProcessorDefinition.java | 12 ++
.../apache/camel/model/SetHeadersDefinition.java | 1 -
...Definition.java => SetVariablesDefinition.java} | 57 +++---
.../camel/processor/SetHeadersProcessor.java | 2 +-
...rsProcessor.java => SetVariablesProcessor.java} | 34 ++--
.../org/apache/camel/reifier/ProcessorReifier.java | 3 +
.../apache/camel/reifier/SetVariablesReifier.java | 57 ++++++
.../camel/model/SetVariablesDefinitionTest.java | 76 ++++++++
.../camel/processor/SetVariablesProcessorTest.java | 146 ++++++++++++++
.../management/mbean/ManagedSetHeadersMBean.java | 26 +++
.../management/mbean/ManagedSetVariablesMBean.java | 26 +++
.../DefaultManagementObjectStrategy.java | 10 +
.../camel/management/mbean/ManagedSetHeaders.java | 44 +++++
.../management/mbean/ManagedSetVariables.java | 44 +++++
.../java/org/apache/camel/xml/in/ModelParser.java | 7 +
.../java/org/apache/camel/xml/out/ModelWriter.java | 18 ++
.../org/apache/camel/yaml/out/ModelWriter.java | 18 ++
.../dsl/yaml/deserializers/ModelDeserializers.java | 67 +++++++
.../deserializers/ModelDeserializersResolver.java | 3 +
.../generated/resources/schema/camelYamlDsl.json | 32 ++++
.../apache/camel/dsl/yaml/SetVariablesTest.groovy | 88 +++++++++
82 files changed, 1071 insertions(+), 101 deletions(-)
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models.properties
index 5fcbcefbaea..d229b8e480f 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models.properties
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models.properties
@@ -174,6 +174,7 @@ setHeader
setHeaders
setProperty
setVariable
+setVariables
simple
soap
sort
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/aggregate.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/aggregate.json
index 7afcaf660ee..db9a9eb74ac 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/aggregate.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/aggregate.json
@@ -42,7 +42,7 @@
"discardOnAggregationFailure": { "index": 27, "kind": "attribute", "displayName": "Discard On Aggregation Failure", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Discards the aggregated message when aggregation failed (an exception was thrown from AggregationStrategy . This means the partly aggregated message is dropped an [...]
"forceCompletionOnStop": { "index": 28, "kind": "attribute", "displayName": "Force Completion On Stop", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Indicates to complete all current aggregated exchanges when the context is stopped" },
"completeAllOnStop": { "index": 29, "kind": "attribute", "displayName": "Complete All On Stop", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Indicates to wait to complete all current and partial (pending) aggregated exchanges when the context is stopped. This also means that we will wait for all pending exchanges which ar [...]
- "outputs": { "index": 30, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
+ "outputs": { "index": 30, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
},
"exchangeProperties": {
"CamelAggregatedSize": { "index": 0, "kind": "exchangeProperty", "displayName": "Aggregated Size", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "Number of exchanges that was grouped together." },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/circuitBreaker.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/circuitBreaker.json
index 7334952c8cf..193c654c2fe 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/circuitBreaker.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/circuitBreaker.json
@@ -19,7 +19,7 @@
"resilience4jConfiguration": { "index": 4, "kind": "element", "displayName": "Resilience4j Configuration", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.model.Resilience4jConfigurationDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Configures the circuit breaker to use Resilience4j with the given configuration." },
"faultToleranceConfiguration": { "index": 5, "kind": "element", "displayName": "Fault Tolerance Configuration", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.model.FaultToleranceConfigurationDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Configures the circuit breaker to use MicroProfile Fault Tolerance with the given configuration." },
"onFallback": { "index": 6, "kind": "element", "displayName": "On Fallback", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.model.OnFallbackDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "The fallback route path to execute that does not go over the network. This should be a static or cached result that can immediately be returned upon failure. If the fallback requires network connection then use onFallbackV [...]
- "outputs": { "index": 7, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 7, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
},
"exchangeProperties": {
"CamelResponseSuccessfulExecution": { "index": 0, "kind": "exchangeProperty", "displayName": "Response Successful Execution", "label": "producer", "required": false, "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "description": "Whether the exchange was processed successfully by the circuit breaker" },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/doCatch.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/doCatch.json
index 0d9c2f8515c..cea0355a240 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/doCatch.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/doCatch.json
@@ -17,7 +17,7 @@
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
"exception": { "index": 3, "kind": "element", "displayName": "Exception", "group": "common", "required": false, "type": "array", "javaType": "java.util.List<java.lang.String>", "deprecated": false, "autowired": false, "secret": false, "description": "The exception(s) to catch." },
"onWhen": { "index": 4, "kind": "element", "displayName": "On When", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.model.WhenDefinition", "deprecated": false, "autowired": false, "secret": false, "asPredicate": true, "description": "Sets an additional predicate that should be true before the onCatch is triggered. To be used for fine grained controlling whether a thrown exception should be intercepted by this exception type or not." },
- "outputs": { "index": 5, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 5, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
},
"exchangeProperties": {
"CamelExceptionCaught": { "index": 0, "kind": "exchangeProperty", "displayName": "Exception Caught", "label": "producer", "required": false, "javaType": "java.lang.Exception", "deprecated": false, "autowired": false, "secret": false, "description": "Stores the caught exception due to a processing error of the current Exchange" },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/doFinally.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/doFinally.json
index 89cc2de4043..094fc172d4c 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/doFinally.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/doFinally.json
@@ -15,7 +15,7 @@
"id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" },
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
- "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
},
"exchangeProperties": {
"CamelExceptionCaught": { "index": 0, "kind": "exchangeProperty", "displayName": "Exception Caught", "label": "producer", "required": false, "javaType": "java.lang.Exception", "deprecated": false, "autowired": false, "secret": false, "description": "Stores the caught exception due to a processing error of the current Exchange" },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/doTry.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/doTry.json
index fd74e1f2411..ecbee854488 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/doTry.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/doTry.json
@@ -15,6 +15,6 @@
"id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" },
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
- "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
}
}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/filter.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/filter.json
index e501fbe210d..afbd7939bbe 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/filter.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/filter.json
@@ -17,6 +17,6 @@
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
"expression": { "index": 3, "kind": "expression", "displayName": "Expression", "group": "common", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ], "depre [...]
"statusPropertyName": { "index": 4, "kind": "attribute", "displayName": "Status Property Name", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of exchange property to use for storing the status of the filtering. Setting this allows to know if the filter predicate evaluated as true or false." },
- "outputs": { "index": 5, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
+ "outputs": { "index": 5, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
}
}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/idempotentConsumer.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/idempotentConsumer.json
index 778002bd16d..628e37f83f9 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/idempotentConsumer.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/idempotentConsumer.json
@@ -21,7 +21,7 @@
"completionEager": { "index": 6, "kind": "attribute", "displayName": "Completion Eager", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Sets whether to complete the idempotent consumer eager or when the exchange is done. If this option is true to complete eager, then the idempotent consumer will trigger its completion when [...]
"skipDuplicate": { "index": 7, "kind": "attribute", "displayName": "Skip Duplicate", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Sets whether to skip duplicates or not. The default behavior is to skip duplicates. A duplicate message would have the Exchange property org.apache.camel.Exchange#DUPLICATE_MESSAGE set to a Bool [...]
"removeOnFailure": { "index": 8, "kind": "attribute", "displayName": "Remove On Failure", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Sets whether to remove or keep the key on failure. The default behavior is to remove the key on failure." },
- "outputs": { "index": 9, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
+ "outputs": { "index": 9, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
},
"exchangeProperties": {
"CamelDuplicateMessage": { "index": 0, "kind": "exchangeProperty", "displayName": "Duplicate Message", "label": "producer", "required": false, "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "description": "Whether this exchange is a duplicate detected by the Idempotent Consumer EIP" }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/intercept.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/intercept.json
index d669369f94c..5d834fa069b 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/intercept.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/intercept.json
@@ -15,6 +15,6 @@
"id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" },
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
- "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
}
}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/interceptFrom.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/interceptFrom.json
index c069e233b7a..d8ebe06bc28 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/interceptFrom.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/interceptFrom.json
@@ -16,7 +16,7 @@
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
"uri": { "index": 3, "kind": "attribute", "displayName": "Uri", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Intercept incoming messages from the uri or uri pattern. If this option is not configured, then all incoming messages is intercepted." },
- "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
},
"exchangeProperties": {
"CamelInterceptedEndpoint": { "index": 0, "kind": "exchangeProperty", "displayName": "Intercepted Endpoint", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "autowired": false, "secret": false, "description": "The endpoint URI that was intercepted" }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/interceptSendToEndpoint.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/interceptSendToEndpoint.json
index 9af011fdaa6..bea456d1bed 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/interceptSendToEndpoint.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/interceptSendToEndpoint.json
@@ -18,7 +18,7 @@
"uri": { "index": 3, "kind": "attribute", "displayName": "Uri", "group": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Intercept sending to the uri or uri pattern." },
"skipSendToOriginalEndpoint": { "index": 4, "kind": "attribute", "displayName": "Skip Send To Original Endpoint", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "If set to true then the message is not sent to the original endpoint. By default (false) the message is both intercepted and then sent to the original endpoint." },
"afterUri": { "index": 5, "kind": "attribute", "displayName": "After Uri", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "After sending to the endpoint then send the message to this uri which allows to process its result." },
- "outputs": { "index": 6, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 6, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
},
"exchangeProperties": {
"CamelInterceptedEndpoint": { "index": 0, "kind": "exchangeProperty", "displayName": "Intercepted Endpoint", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "autowired": false, "secret": false, "description": "The endpoint URI that was intercepted" }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/kamelet.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/kamelet.json
index 9e578196ac7..3bfecf88e17 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/kamelet.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/kamelet.json
@@ -16,6 +16,6 @@
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
"name": { "index": 3, "kind": "attribute", "displayName": "Name", "group": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the Kamelet (templateId\/routeId) to call. Options for the kamelet can be specified using uri syntax, eg mynamecount=4&type=gold." },
- "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
}
}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/loadBalance.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/loadBalance.json
index 289e907c2d7..cde2ee0394c 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/loadBalance.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/loadBalance.json
@@ -16,7 +16,7 @@
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
"loadBalancerType": { "index": 3, "kind": "element", "displayName": "Load Balancer Type", "group": "common", "required": true, "type": "object", "javaType": "org.apache.camel.model.LoadBalancerDefinition", "oneOf": [ "customLoadBalancer", "failover", "random", "roundRobin", "sticky", "topic", "weighted" ], "deprecated": false, "autowired": false, "secret": false, "description": "The load balancer to be used" },
- "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
"inheritErrorHandler": { "index": 5, "kind": "attribute", "displayName": "Inherit Error Handler", "group": "common", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Sets whether or not to inherit the configured error handler. The default value is true. You can use this to disable using the inherited error handler for a given DSL such as a load balancer where you wan [...]
}
}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/loop.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/loop.json
index a3aa15ab223..5b66a61bf79 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/loop.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/loop.json
@@ -19,7 +19,7 @@
"copy": { "index": 4, "kind": "attribute", "displayName": "Copy", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If the copy attribute is true, a copy of the input Exchange is used for each iteration. That means each iteration will start from a copy of the same message. By default loop will loop the same exchange all over, [...]
"doWhile": { "index": 5, "kind": "attribute", "displayName": "Do While", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enables the while loop that loops until the predicate evaluates to false or null." },
"breakOnShutdown": { "index": 6, "kind": "attribute", "displayName": "Break On Shutdown", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If the breakOnShutdown attribute is true, then the loop will not iterate until it reaches the end when Camel is shut down." },
- "outputs": { "index": 7, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
+ "outputs": { "index": 7, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
},
"exchangeProperties": {
"CamelLoopIndex": { "index": 0, "kind": "exchangeProperty", "displayName": "Loop Index", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "Index of the current iteration (0 based)." },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/multicast.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/multicast.json
index ed43cf4c688..1477200300f 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/multicast.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/multicast.json
@@ -27,7 +27,7 @@
"executorService": { "index": 12, "kind": "attribute", "displayName": "Executor Service", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "java.util.concurrent.ExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "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." },
"onPrepare": { "index": 13, "kind": "attribute", "displayName": "On Prepare", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.Processor", "deprecated": false, "autowired": false, "secret": false, "description": "Uses the Processor when preparing the org.apache.camel.Exchange to be send. This can be used to deep-clone messages that should be send, or any custom logic needed before the exchange is send." },
"shareUnitOfWork": { "index": 14, "kind": "attribute", "displayName": "Share Unit Of Work", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Shares the 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 [...]
- "outputs": { "index": 15, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
+ "outputs": { "index": 15, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
},
"exchangeProperties": {
"CamelMulticastIndex": { "index": 0, "kind": "exchangeProperty", "displayName": "Multicast Index", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "An index counter that increases for each Exchange being multicasted. The counter starts from 0." },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/onCompletion.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/onCompletion.json
index bf130177ae6..a0ad21ad60c 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/onCompletion.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/onCompletion.json
@@ -22,7 +22,7 @@
"executorService": { "index": 7, "kind": "attribute", "displayName": "Executor Service", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "java.util.concurrent.ExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "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." },
"useOriginalMessage": { "index": 8, "kind": "attribute", "displayName": "Use Original Message", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Will use the original input message body when an org.apache.camel.Exchange for this on completion. The original input message is defensively copied, and the copied message body is co [...]
"onWhen": { "index": 9, "kind": "element", "displayName": "On When", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.model.WhenDefinition", "deprecated": false, "autowired": false, "secret": false, "asPredicate": true, "description": "Sets an additional predicate that should be true before the onCompletion is triggered. To be used for fine grained controlling whether a completion callback should be invoked or not" },
- "outputs": { "index": 10, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
+ "outputs": { "index": 10, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
},
"exchangeProperties": {
"CamelOnCompletion": { "index": 0, "kind": "exchangeProperty", "displayName": "On Completion", "label": "producer", "required": false, "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "description": "Flag to mark that this exchange is currently being executed as onCompletion" }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/onException.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/onException.json
index 0fb59b87f74..474e7ea5d6b 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/onException.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/onException.json
@@ -26,7 +26,7 @@
"onExceptionOccurredRef": { "index": 11, "kind": "attribute", "displayName": "On Exception Occurred Ref", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Importan [...]
"useOriginalMessage": { "index": 12, "kind": "attribute", "displayName": "Use Original Message", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when [...]
"useOriginalBody": { "index": 13, "kind": "attribute", "displayName": "Use Original Body", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all rede [...]
- "outputs": { "index": 14, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
+ "outputs": { "index": 14, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
},
"exchangeProperties": {
"CamelExceptionCaught": { "index": 0, "kind": "exchangeProperty", "displayName": "Exception Caught", "label": "producer", "required": false, "javaType": "java.lang.Exception", "deprecated": false, "autowired": false, "secret": false, "description": "Stores the caught exception due to a processing error of the current Exchange" },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/onFallback.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/onFallback.json
index 1115332142a..cb020976b79 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/onFallback.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/onFallback.json
@@ -16,6 +16,6 @@
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
"fallbackViaNetwork": { "index": 3, "kind": "attribute", "displayName": "Fallback Via Network", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the fallback goes over the network. If the fallback will go over the network it is another possible point of failure. It is important to execute the fallback command on a sep [...]
- "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
+ "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
}
}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/otherwise.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/otherwise.json
index 91822051af0..5b449845c43 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/otherwise.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/otherwise.json
@@ -15,6 +15,6 @@
"id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" },
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
- "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
}
}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/pipeline.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/pipeline.json
index acf94ea7561..013d1b0b8e6 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/pipeline.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/pipeline.json
@@ -15,6 +15,6 @@
"id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" },
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
- "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
}
}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/resequence.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/resequence.json
index 737e8791548..c35d0921036 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/resequence.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/resequence.json
@@ -17,6 +17,6 @@
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
"expression": { "index": 3, "kind": "expression", "displayName": "Expression", "group": "common", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ], "depre [...]
"resequencerConfig": { "index": 4, "kind": "element", "displayName": "Resequencer Config", "group": "common", "required": true, "type": "object", "javaType": "org.apache.camel.model.config.ResequencerConfig", "oneOf": [ "batchConfig", "streamConfig" ], "deprecated": false, "autowired": false, "secret": false, "description": "To configure the resequencer in using either batch or stream configuration. Will by default use batch configuration." },
- "outputs": { "index": 5, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 5, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
}
}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/route.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/route.json
index 4340c3bdd28..d0a6cfe535b 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/route.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/route.json
@@ -33,6 +33,6 @@
"inputType": { "index": 18, "kind": "element", "displayName": "Input Type", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.model.InputTypeDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Declare the expected data type of the input message. If the actual message type is different at runtime, camel look for a required org.apache.camel.spi.Transformer and apply if exists. The type name co [...]
"outputType": { "index": 19, "kind": "element", "displayName": "Output Type", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.model.OutputTypeDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Declare the expected data type of the output message. If the actual message type is different at runtime, camel look for a required org.apache.camel.spi.Transformer and apply if exists. The type nam [...]
"input": { "index": 20, "kind": "element", "displayName": "Input", "group": "common", "required": true, "type": "object", "javaType": "org.apache.camel.model.FromDefinition", "oneOf": [ "from" ], "deprecated": false, "autowired": false, "secret": false, "description": "Input to the route." },
- "outputs": { "index": 21, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<?>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint [...]
+ "outputs": { "index": 21, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<?>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint [...]
}
}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/saga.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/saga.json
index 57df05cf126..e11814fbbaa 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/saga.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/saga.json
@@ -22,6 +22,6 @@
"compensation": { "index": 7, "kind": "element", "displayName": "Compensation", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.model.SagaActionUriDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "The compensation endpoint URI that must be called to compensate all changes done in the route. The route corresponding to the compensation URI must perform compensation and complete without error. If errors occur dur [...]
"completion": { "index": 8, "kind": "element", "displayName": "Completion", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.model.SagaActionUriDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "The completion endpoint URI that will be called when the Saga is completed successfully. The route corresponding to the completion URI must perform completion tasks and terminate without error. If errors occur during com [...]
"option": { "index": 9, "kind": "element", "displayName": "Option", "group": "advanced", "label": "advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.PropertyExpressionDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to save properties of the current exchange in order to re-use them in a compensation\/completion callback route. Options are usually helpful e.g. to store and retrieve identifier [...]
- "outputs": { "index": 10, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
+ "outputs": { "index": 10, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
}
}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setVariables.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setVariables.json
new file mode 100644
index 00000000000..e574b6e13ac
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setVariables.json
@@ -0,0 +1,19 @@
+{
+ "model": {
+ "kind": "model",
+ "name": "setVariables",
+ "title": "Set Variables",
+ "description": "Allows setting multiple variables at the same time.",
+ "deprecated": false,
+ "label": "eip,transformation",
+ "javaType": "org.apache.camel.model.SetVariablesDefinition",
+ "abstract": false,
+ "input": true,
+ "output": false
+ },
+ "properties": {
+ "id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" },
+ "description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
+ "disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." }
+ }
+}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/split.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/split.json
index 3c761fa6536..2366c0faa9d 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/split.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/split.json
@@ -29,7 +29,7 @@
"executorService": { "index": 14, "kind": "attribute", "displayName": "Executor Service", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "java.util.concurrent.ExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom Thread Pool to be used for parallel processing. Notice if you set this option, then parallel processing is automatically implied, and you do not have to enable that option as well." },
"onPrepare": { "index": 15, "kind": "attribute", "displayName": "On Prepare", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.Processor", "deprecated": false, "autowired": false, "secret": false, "description": "Uses the Processor when preparing the org.apache.camel.Exchange to be sent. This can be used to deep-clone messages that should be sent, or any custom logic needed before the exchange is sent." },
"shareUnitOfWork": { "index": 16, "kind": "attribute", "displayName": "Share Unit Of Work", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Shares the 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 split exchan [...]
- "outputs": { "index": 17, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercep [...]
+ "outputs": { "index": 17, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercep [...]
},
"exchangeProperties": {
"CamelSplitIndex": { "index": 0, "kind": "exchangeProperty", "displayName": "Split Index", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "A split counter that increases for each Exchange being split. The counter starts from 0." },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/step.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/step.json
index 6608a109bc9..00d3b27db0b 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/step.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/step.json
@@ -15,7 +15,7 @@
"id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" },
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
- "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
},
"exchangeProperties": {
"CamelStepId": { "index": 0, "kind": "exchangeProperty", "displayName": "Step Id", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "autowired": false, "secret": false, "description": "The id of the Step EIP" }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/when.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/when.json
index 67f9093d505..65811f1e3ee 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/when.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/when.json
@@ -16,6 +16,6 @@
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
"expression": { "index": 3, "kind": "expression", "displayName": "Expression", "group": "common", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ], "depre [...]
- "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
+ "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
}
}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/whenSkipSendToEndpoint.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/whenSkipSendToEndpoint.json
index ce271d242e5..5783a281070 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/whenSkipSendToEndpoint.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/whenSkipSendToEndpoint.json
@@ -16,6 +16,6 @@
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
"expression": { "index": 3, "kind": "expression", "displayName": "Expression", "group": "common", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ], "depre [...]
- "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
+ "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
}
}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
index cd9cd0a406f..f730fa33ee4 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
@@ -1748,6 +1748,15 @@ Sets a named property on the message exchange
<xs:documentation xml:lang="en">
<![CDATA[
Sets the value of a variable
+]]>
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="setVariables" type="tns:setVariablesDefinition">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+<![CDATA[
+Allows setting multiple variables at the same time.
]]>
</xs:documentation>
</xs:annotation>
@@ -3585,6 +3594,7 @@ will fallback to use the fixed value if the Expression result was null or 0.
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -4149,6 +4159,7 @@ controlling whether a thrown exception should be intercepted by this exception t
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -4258,6 +4269,7 @@ controlling whether a thrown exception should be intercepted by this exception t
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -4358,6 +4370,7 @@ during startup to keep at runtime only the branch that matched. Default value: f
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -4441,6 +4454,7 @@ during startup to keep at runtime only the branch that matched. Default value: f
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -4913,6 +4927,7 @@ References to a custom thread pool to use when bulkhead is enabled.
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -6081,6 +6096,7 @@ Sets the logging level to use for logging transactional rollback. This option is
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -6171,6 +6187,7 @@ predicate evaluated as true or false.
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -6332,6 +6349,7 @@ Global option value.
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -6492,6 +6510,7 @@ Whether if validation is required for this input type. Default value: false
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -6589,6 +6608,7 @@ intercepted.
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -6697,6 +6717,7 @@ After sending to the endpoint then send the message to this uri which allows to
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -6796,6 +6817,7 @@ mynamecount=4&type=gold.
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -7109,6 +7131,7 @@ To refer to a custom logger instance to lookup from the registry.
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -10516,6 +10539,7 @@ maximum decompressed size. Default value: 1073741824
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -10739,6 +10763,7 @@ controlling whether a completion callback should be invoked or not.
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -10937,6 +10962,7 @@ its considered handled as well.
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -11195,6 +11221,7 @@ one of the available events. Implementations should not assume the predicate to
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -11275,6 +11302,7 @@ one of the available events. Implementations should not assume the predicate to
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -11903,6 +11931,7 @@ Name of variable to remove.
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -12252,6 +12281,7 @@ Reference to the routes in the xml dsl.
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -12688,6 +12718,7 @@ actions. Option values will be transformed into input headers of the compensatio
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -13004,6 +13035,15 @@ used. Otherwise a constant name will be used.
</xs:extension>
</xs:complexContent>
</xs:complexType>
+ <xs:complexType name="setVariablesDefinition">
+ <xs:complexContent>
+ <xs:extension base="tns:processorDefinition">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" ref="tns:setVariable"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
<xs:complexType name="sortDefinition">
<xs:complexContent>
<xs:extension base="tns:processorDefinition">
@@ -13136,6 +13176,7 @@ Sets the comparator to use for sorting.
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -13366,6 +13407,7 @@ individual unit of work. Default value: false
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -13988,6 +14030,7 @@ Whether to auto startup components when toD is starting up. Default value: true
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
@@ -14130,6 +14173,7 @@ To type used as a target data type in the transformation.
<xs:element ref="tns:setHeaders"/>
<xs:element ref="tns:setProperty"/>
<xs:element ref="tns:setVariable"/>
+ <xs:element ref="tns:setVariables"/>
<xs:element ref="tns:sort"/>
<xs:element ref="tns:split"/>
<xs:element ref="tns:step"/>
diff --git a/core/camel-core-engine/src/main/docs/modules/eips/examples/json/setVariables.json b/core/camel-core-engine/src/main/docs/modules/eips/examples/json/setVariables.json
new file mode 120000
index 00000000000..326b70b9f6e
--- /dev/null
+++ b/core/camel-core-engine/src/main/docs/modules/eips/examples/json/setVariables.json
@@ -0,0 +1 @@
+../../../../../../../../camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/setVariables.json
\ No newline at end of file
diff --git a/core/camel-core-engine/src/main/docs/modules/eips/nav.adoc b/core/camel-core-engine/src/main/docs/modules/eips/nav.adoc
index f3e631b3d93..23c34c7ffd3 100644
--- a/core/camel-core-engine/src/main/docs/modules/eips/nav.adoc
+++ b/core/camel-core-engine/src/main/docs/modules/eips/nav.adoc
@@ -90,6 +90,7 @@
** xref:setHeaders-eip.adoc[Set Headers]
** xref:setProperty-eip.adoc[Set Property]
** xref:setVariable-eip.adoc[Set Variable]
+** xref:setVariables-eip.adoc[Set Variables]
** xref:sort-eip.adoc[Sort]
** xref:split-eip.adoc[Split]
** xref:step-eip.adoc[Step]
diff --git a/core/camel-core-engine/src/main/docs/modules/eips/pages/setVariables-eip.adoc b/core/camel-core-engine/src/main/docs/modules/eips/pages/setVariables-eip.adoc
new file mode 100644
index 00000000000..432b6825935
--- /dev/null
+++ b/core/camel-core-engine/src/main/docs/modules/eips/pages/setVariables-eip.adoc
@@ -0,0 +1,210 @@
+= Set Variables EIP
+:doctitle: Set Variables
+:shortname: setVariables
+:description: Allows setting multiple variables at the same time.
+:since:
+:supportlevel: Stable
+:tabs-sync-option:
+
+The SetVariables EIP is used for setting multiple xref:manual:ROOT:exchange.adoc[Exchange] variables at the same time.
+
+== Options
+
+// eip options: START
+include::partial$eip-options.adoc[]
+// eip options: END
+
+== Exchange properties
+
+// eip exchangeProperties: START
+include::partial$eip-exchangeProperties.adoc[]
+// eip exchangeProperties: END
+
+
+== Using Set Variables
+
+The following example shows how to set multiple variables in a Camel route using Java, XML or YAML. Note that the syntax is slightly different in each case.
+
+[tabs]
+====
+Java::
++
+[source,java]
+----
+from("direct:a")
+ .setVariables("myVar", constant("test"), "otherVar", constant("other"))
+ .to("direct:b");
+----
+
+XML::
++
+[source,xml]
+----
+<route>
+ <from uri="direct:a"/>
+ <setVariables>
+ <setVariable name="myVar">
+ <constant>test</constant>
+ </setVariable>
+ <setVariable name="otherVar">
+ <constant>other</constant>
+ </setVariable>
+ </setVariables>
+ <to uri="direct:b"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- from:
+ uri: direct:a
+ steps:
+ - setVariables:
+ variables:
+ - name: myVar
+ constant: test
+ - name: otherVar
+ constant: other
+ - to:
+ uri: direct:b
+----
+====
+
+For example, the variables values are xref:components:languages:constant-language.adoc[constants].
+
+Any of the Camel languages can be used, such as xref:components:languages:simple-language.adoc[Simple].
+
+[tabs]
+====
+Java::
++
+[source,java]
+----
+from("direct:a")
+ .setVariables("randomNumber", simple("${random(1,100)}"), "body", simple("${body}"))
+ .to("direct:b");
+----
+
+XML::
++
+[source,xml]
+----
+<route>
+ <from uri="direct:a"/>
+ <setVariables>
+ <setVariable name="randomNumber">
+ <simple>${random(1,100)}</simple>
+ </setVariable>
+ <setVariable name="body">
+ <simple>${body}</simple>
+ </setVariable>
+ </setVariables>
+ <to uri="direct:b"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- from:
+ uri: direct:a
+ steps:
+ - setVariables:
+ variables:
+ - name: randomNumber
+ simple: "${random(1,100)}"
+ - name: body
+ simple: "${body}"
+ - to:
+ uri:direct:b
+----
+====
+
+=== Setting a variable from another variable
+
+You can also set several variables where later ones depend on earlier ones.
+
+In the example, we first set the variable foo to the body and then set bar based on comparing foo with a value.
+[tabs]
+====
+Java::
++
+[source,java]
+----
+from("direct:a")
+ .setVariables("foo", simple("${body}"), "bar", simple("${variable.foo} > 10", Boolean.class))
+ .to("direct:b");
+----
+
+XML::
++
+[source,xml]
+----
+<route>
+ <from uri="direct:a"/>
+ <setVariables>
+ <setVariable name="foo">
+ <simple>${body}</simple>
+ </setVariable>
+ <setVariable name="bar">
+ <simple resultType="java.lang.Boolean">${variable.foo} > 10</simple>
+ </setVariable>
+ </setVariables>
+ <to uri="direct:b"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- from:
+ uri: direct:a
+ steps:
+ - setVariables:
+ variables:
+ - name: foo
+ simple: "${body}"
+ - name: bar
+ simple:
+ expression: "${variable.foo} > 10"
+ resultType: "boolean"
+ - to:
+ uri:direct:b
+----
+====
+
+=== Using a Map with Java DSL
+
+It's also possible to build a Map and pass it as the single argument to `setVariables().`
+If the order in which the variables should be set is important, use a `LinkedHashMap`.
+
+====
+Java::
++
+[source,java]
+----
+private Map<String, Expression> variableMap = new java.util.LinkedHashMap<>();
+variableMap.put("foo", ConstantLanguage.constant("ABC"));
+variableMap.put("bar", ConstantLanguage.constant("XYZ"));
+
+from("direct:startMap")
+ .setVariables(variableMap)
+ .to("direct:b");
+----
+====
+
+If the ordering is not critical, then `Map.of(name1, expr1, name2, expr2...)` can be used.
+====
+Java::
++
+[source,java]
+----
+from("direct:startMap")
+ .setVariables(Map.of("foo", "ABC", "bar", "XYZ"))
+ .to("direct:b");
+----
+====
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/aggregate.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/aggregate.json
index 7afcaf660ee..db9a9eb74ac 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/aggregate.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/aggregate.json
@@ -42,7 +42,7 @@
"discardOnAggregationFailure": { "index": 27, "kind": "attribute", "displayName": "Discard On Aggregation Failure", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Discards the aggregated message when aggregation failed (an exception was thrown from AggregationStrategy . This means the partly aggregated message is dropped an [...]
"forceCompletionOnStop": { "index": 28, "kind": "attribute", "displayName": "Force Completion On Stop", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Indicates to complete all current aggregated exchanges when the context is stopped" },
"completeAllOnStop": { "index": 29, "kind": "attribute", "displayName": "Complete All On Stop", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Indicates to wait to complete all current and partial (pending) aggregated exchanges when the context is stopped. This also means that we will wait for all pending exchanges which ar [...]
- "outputs": { "index": 30, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
+ "outputs": { "index": 30, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
},
"exchangeProperties": {
"CamelAggregatedSize": { "index": 0, "kind": "exchangeProperty", "displayName": "Aggregated Size", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "Number of exchanges that was grouped together." },
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/circuitBreaker.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/circuitBreaker.json
index 7334952c8cf..193c654c2fe 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/circuitBreaker.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/circuitBreaker.json
@@ -19,7 +19,7 @@
"resilience4jConfiguration": { "index": 4, "kind": "element", "displayName": "Resilience4j Configuration", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.model.Resilience4jConfigurationDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Configures the circuit breaker to use Resilience4j with the given configuration." },
"faultToleranceConfiguration": { "index": 5, "kind": "element", "displayName": "Fault Tolerance Configuration", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.model.FaultToleranceConfigurationDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Configures the circuit breaker to use MicroProfile Fault Tolerance with the given configuration." },
"onFallback": { "index": 6, "kind": "element", "displayName": "On Fallback", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.model.OnFallbackDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "The fallback route path to execute that does not go over the network. This should be a static or cached result that can immediately be returned upon failure. If the fallback requires network connection then use onFallbackV [...]
- "outputs": { "index": 7, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 7, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
},
"exchangeProperties": {
"CamelResponseSuccessfulExecution": { "index": 0, "kind": "exchangeProperty", "displayName": "Response Successful Execution", "label": "producer", "required": false, "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "description": "Whether the exchange was processed successfully by the circuit breaker" },
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/doCatch.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/doCatch.json
index 0d9c2f8515c..cea0355a240 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/doCatch.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/doCatch.json
@@ -17,7 +17,7 @@
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
"exception": { "index": 3, "kind": "element", "displayName": "Exception", "group": "common", "required": false, "type": "array", "javaType": "java.util.List<java.lang.String>", "deprecated": false, "autowired": false, "secret": false, "description": "The exception(s) to catch." },
"onWhen": { "index": 4, "kind": "element", "displayName": "On When", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.model.WhenDefinition", "deprecated": false, "autowired": false, "secret": false, "asPredicate": true, "description": "Sets an additional predicate that should be true before the onCatch is triggered. To be used for fine grained controlling whether a thrown exception should be intercepted by this exception type or not." },
- "outputs": { "index": 5, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 5, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
},
"exchangeProperties": {
"CamelExceptionCaught": { "index": 0, "kind": "exchangeProperty", "displayName": "Exception Caught", "label": "producer", "required": false, "javaType": "java.lang.Exception", "deprecated": false, "autowired": false, "secret": false, "description": "Stores the caught exception due to a processing error of the current Exchange" },
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/doFinally.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/doFinally.json
index 89cc2de4043..094fc172d4c 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/doFinally.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/doFinally.json
@@ -15,7 +15,7 @@
"id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" },
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
- "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
},
"exchangeProperties": {
"CamelExceptionCaught": { "index": 0, "kind": "exchangeProperty", "displayName": "Exception Caught", "label": "producer", "required": false, "javaType": "java.lang.Exception", "deprecated": false, "autowired": false, "secret": false, "description": "Stores the caught exception due to a processing error of the current Exchange" },
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/doTry.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/doTry.json
index fd74e1f2411..ecbee854488 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/doTry.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/doTry.json
@@ -15,6 +15,6 @@
"id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" },
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
- "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
}
}
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/filter.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/filter.json
index e501fbe210d..afbd7939bbe 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/filter.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/filter.json
@@ -17,6 +17,6 @@
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
"expression": { "index": 3, "kind": "expression", "displayName": "Expression", "group": "common", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ], "depre [...]
"statusPropertyName": { "index": 4, "kind": "attribute", "displayName": "Status Property Name", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of exchange property to use for storing the status of the filtering. Setting this allows to know if the filter predicate evaluated as true or false." },
- "outputs": { "index": 5, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
+ "outputs": { "index": 5, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
}
}
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/idempotentConsumer.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/idempotentConsumer.json
index 778002bd16d..628e37f83f9 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/idempotentConsumer.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/idempotentConsumer.json
@@ -21,7 +21,7 @@
"completionEager": { "index": 6, "kind": "attribute", "displayName": "Completion Eager", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Sets whether to complete the idempotent consumer eager or when the exchange is done. If this option is true to complete eager, then the idempotent consumer will trigger its completion when [...]
"skipDuplicate": { "index": 7, "kind": "attribute", "displayName": "Skip Duplicate", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Sets whether to skip duplicates or not. The default behavior is to skip duplicates. A duplicate message would have the Exchange property org.apache.camel.Exchange#DUPLICATE_MESSAGE set to a Bool [...]
"removeOnFailure": { "index": 8, "kind": "attribute", "displayName": "Remove On Failure", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Sets whether to remove or keep the key on failure. The default behavior is to remove the key on failure." },
- "outputs": { "index": 9, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
+ "outputs": { "index": 9, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
},
"exchangeProperties": {
"CamelDuplicateMessage": { "index": 0, "kind": "exchangeProperty", "displayName": "Duplicate Message", "label": "producer", "required": false, "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "description": "Whether this exchange is a duplicate detected by the Idempotent Consumer EIP" }
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/intercept.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/intercept.json
index d669369f94c..5d834fa069b 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/intercept.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/intercept.json
@@ -15,6 +15,6 @@
"id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" },
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
- "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
}
}
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/interceptFrom.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/interceptFrom.json
index c069e233b7a..d8ebe06bc28 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/interceptFrom.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/interceptFrom.json
@@ -16,7 +16,7 @@
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
"uri": { "index": 3, "kind": "attribute", "displayName": "Uri", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Intercept incoming messages from the uri or uri pattern. If this option is not configured, then all incoming messages is intercepted." },
- "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
},
"exchangeProperties": {
"CamelInterceptedEndpoint": { "index": 0, "kind": "exchangeProperty", "displayName": "Intercepted Endpoint", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "autowired": false, "secret": false, "description": "The endpoint URI that was intercepted" }
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/interceptSendToEndpoint.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/interceptSendToEndpoint.json
index 9af011fdaa6..bea456d1bed 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/interceptSendToEndpoint.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/interceptSendToEndpoint.json
@@ -18,7 +18,7 @@
"uri": { "index": 3, "kind": "attribute", "displayName": "Uri", "group": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Intercept sending to the uri or uri pattern." },
"skipSendToOriginalEndpoint": { "index": 4, "kind": "attribute", "displayName": "Skip Send To Original Endpoint", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "If set to true then the message is not sent to the original endpoint. By default (false) the message is both intercepted and then sent to the original endpoint." },
"afterUri": { "index": 5, "kind": "attribute", "displayName": "After Uri", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "After sending to the endpoint then send the message to this uri which allows to process its result." },
- "outputs": { "index": 6, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 6, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
},
"exchangeProperties": {
"CamelInterceptedEndpoint": { "index": 0, "kind": "exchangeProperty", "displayName": "Intercepted Endpoint", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "autowired": false, "secret": false, "description": "The endpoint URI that was intercepted" }
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/kamelet.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/kamelet.json
index 9e578196ac7..3bfecf88e17 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/kamelet.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/kamelet.json
@@ -16,6 +16,6 @@
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
"name": { "index": 3, "kind": "attribute", "displayName": "Name", "group": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the Kamelet (templateId\/routeId) to call. Options for the kamelet can be specified using uri syntax, eg mynamecount=4&type=gold." },
- "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
}
}
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/loadBalance.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/loadBalance.json
index 289e907c2d7..cde2ee0394c 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/loadBalance.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/loadBalance.json
@@ -16,7 +16,7 @@
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
"loadBalancerType": { "index": 3, "kind": "element", "displayName": "Load Balancer Type", "group": "common", "required": true, "type": "object", "javaType": "org.apache.camel.model.LoadBalancerDefinition", "oneOf": [ "customLoadBalancer", "failover", "random", "roundRobin", "sticky", "topic", "weighted" ], "deprecated": false, "autowired": false, "secret": false, "description": "The load balancer to be used" },
- "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
"inheritErrorHandler": { "index": 5, "kind": "attribute", "displayName": "Inherit Error Handler", "group": "common", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Sets whether or not to inherit the configured error handler. The default value is true. You can use this to disable using the inherited error handler for a given DSL such as a load balancer where you wan [...]
}
}
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/loop.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/loop.json
index a3aa15ab223..5b66a61bf79 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/loop.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/loop.json
@@ -19,7 +19,7 @@
"copy": { "index": 4, "kind": "attribute", "displayName": "Copy", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If the copy attribute is true, a copy of the input Exchange is used for each iteration. That means each iteration will start from a copy of the same message. By default loop will loop the same exchange all over, [...]
"doWhile": { "index": 5, "kind": "attribute", "displayName": "Do While", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enables the while loop that loops until the predicate evaluates to false or null." },
"breakOnShutdown": { "index": 6, "kind": "attribute", "displayName": "Break On Shutdown", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If the breakOnShutdown attribute is true, then the loop will not iterate until it reaches the end when Camel is shut down." },
- "outputs": { "index": 7, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
+ "outputs": { "index": 7, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
},
"exchangeProperties": {
"CamelLoopIndex": { "index": 0, "kind": "exchangeProperty", "displayName": "Loop Index", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "Index of the current iteration (0 based)." },
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/multicast.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/multicast.json
index ed43cf4c688..1477200300f 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/multicast.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/multicast.json
@@ -27,7 +27,7 @@
"executorService": { "index": 12, "kind": "attribute", "displayName": "Executor Service", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "java.util.concurrent.ExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "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." },
"onPrepare": { "index": 13, "kind": "attribute", "displayName": "On Prepare", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.Processor", "deprecated": false, "autowired": false, "secret": false, "description": "Uses the Processor when preparing the org.apache.camel.Exchange to be send. This can be used to deep-clone messages that should be send, or any custom logic needed before the exchange is send." },
"shareUnitOfWork": { "index": 14, "kind": "attribute", "displayName": "Share Unit Of Work", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Shares the 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 [...]
- "outputs": { "index": 15, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
+ "outputs": { "index": 15, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
},
"exchangeProperties": {
"CamelMulticastIndex": { "index": 0, "kind": "exchangeProperty", "displayName": "Multicast Index", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "An index counter that increases for each Exchange being multicasted. The counter starts from 0." },
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/onCompletion.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/onCompletion.json
index bf130177ae6..a0ad21ad60c 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/onCompletion.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/onCompletion.json
@@ -22,7 +22,7 @@
"executorService": { "index": 7, "kind": "attribute", "displayName": "Executor Service", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "java.util.concurrent.ExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "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." },
"useOriginalMessage": { "index": 8, "kind": "attribute", "displayName": "Use Original Message", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Will use the original input message body when an org.apache.camel.Exchange for this on completion. The original input message is defensively copied, and the copied message body is co [...]
"onWhen": { "index": 9, "kind": "element", "displayName": "On When", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.model.WhenDefinition", "deprecated": false, "autowired": false, "secret": false, "asPredicate": true, "description": "Sets an additional predicate that should be true before the onCompletion is triggered. To be used for fine grained controlling whether a completion callback should be invoked or not" },
- "outputs": { "index": 10, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
+ "outputs": { "index": 10, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
},
"exchangeProperties": {
"CamelOnCompletion": { "index": 0, "kind": "exchangeProperty", "displayName": "On Completion", "label": "producer", "required": false, "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "description": "Flag to mark that this exchange is currently being executed as onCompletion" }
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/onException.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/onException.json
index 0fb59b87f74..474e7ea5d6b 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/onException.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/onException.json
@@ -26,7 +26,7 @@
"onExceptionOccurredRef": { "index": 11, "kind": "attribute", "displayName": "On Exception Occurred Ref", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Importan [...]
"useOriginalMessage": { "index": 12, "kind": "attribute", "displayName": "Use Original Message", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when [...]
"useOriginalBody": { "index": 13, "kind": "attribute", "displayName": "Use Original Body", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all rede [...]
- "outputs": { "index": 14, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
+ "outputs": { "index": 14, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
},
"exchangeProperties": {
"CamelExceptionCaught": { "index": 0, "kind": "exchangeProperty", "displayName": "Exception Caught", "label": "producer", "required": false, "javaType": "java.lang.Exception", "deprecated": false, "autowired": false, "secret": false, "description": "Stores the caught exception due to a processing error of the current Exchange" },
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/onFallback.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/onFallback.json
index 1115332142a..cb020976b79 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/onFallback.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/onFallback.json
@@ -16,6 +16,6 @@
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
"fallbackViaNetwork": { "index": 3, "kind": "attribute", "displayName": "Fallback Via Network", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the fallback goes over the network. If the fallback will go over the network it is another possible point of failure. It is important to execute the fallback command on a sep [...]
- "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
+ "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
}
}
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/otherwise.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/otherwise.json
index 91822051af0..5b449845c43 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/otherwise.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/otherwise.json
@@ -15,6 +15,6 @@
"id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" },
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
- "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
}
}
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/pipeline.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/pipeline.json
index acf94ea7561..013d1b0b8e6 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/pipeline.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/pipeline.json
@@ -15,6 +15,6 @@
"id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" },
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
- "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
}
}
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/resequence.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/resequence.json
index 737e8791548..c35d0921036 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/resequence.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/resequence.json
@@ -17,6 +17,6 @@
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
"expression": { "index": 3, "kind": "expression", "displayName": "Expression", "group": "common", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ], "depre [...]
"resequencerConfig": { "index": 4, "kind": "element", "displayName": "Resequencer Config", "group": "common", "required": true, "type": "object", "javaType": "org.apache.camel.model.config.ResequencerConfig", "oneOf": [ "batchConfig", "streamConfig" ], "deprecated": false, "autowired": false, "secret": false, "description": "To configure the resequencer in using either batch or stream configuration. Will by default use batch configuration." },
- "outputs": { "index": 5, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 5, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
}
}
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/route.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/route.json
index 4340c3bdd28..d0a6cfe535b 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/route.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/route.json
@@ -33,6 +33,6 @@
"inputType": { "index": 18, "kind": "element", "displayName": "Input Type", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.model.InputTypeDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Declare the expected data type of the input message. If the actual message type is different at runtime, camel look for a required org.apache.camel.spi.Transformer and apply if exists. The type name co [...]
"outputType": { "index": 19, "kind": "element", "displayName": "Output Type", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.model.OutputTypeDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Declare the expected data type of the output message. If the actual message type is different at runtime, camel look for a required org.apache.camel.spi.Transformer and apply if exists. The type nam [...]
"input": { "index": 20, "kind": "element", "displayName": "Input", "group": "common", "required": true, "type": "object", "javaType": "org.apache.camel.model.FromDefinition", "oneOf": [ "from" ], "deprecated": false, "autowired": false, "secret": false, "description": "Input to the route." },
- "outputs": { "index": 21, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<?>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint [...]
+ "outputs": { "index": 21, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<?>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint [...]
}
}
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/saga.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/saga.json
index 57df05cf126..e11814fbbaa 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/saga.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/saga.json
@@ -22,6 +22,6 @@
"compensation": { "index": 7, "kind": "element", "displayName": "Compensation", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.model.SagaActionUriDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "The compensation endpoint URI that must be called to compensate all changes done in the route. The route corresponding to the compensation URI must perform compensation and complete without error. If errors occur dur [...]
"completion": { "index": 8, "kind": "element", "displayName": "Completion", "group": "common", "required": false, "type": "object", "javaType": "org.apache.camel.model.SagaActionUriDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "The completion endpoint URI that will be called when the Saga is completed successfully. The route corresponding to the completion URI must perform completion tasks and terminate without error. If errors occur during com [...]
"option": { "index": 9, "kind": "element", "displayName": "Option", "group": "advanced", "label": "advanced", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.PropertyExpressionDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Allows to save properties of the current exchange in order to re-use them in a compensation\/completion callback route. Options are usually helpful e.g. to store and retrieve identifier [...]
- "outputs": { "index": 10, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
+ "outputs": { "index": 10, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "ma [...]
}
}
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/setVariables.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/setVariables.json
new file mode 100644
index 00000000000..e574b6e13ac
--- /dev/null
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/setVariables.json
@@ -0,0 +1,19 @@
+{
+ "model": {
+ "kind": "model",
+ "name": "setVariables",
+ "title": "Set Variables",
+ "description": "Allows setting multiple variables at the same time.",
+ "deprecated": false,
+ "label": "eip,transformation",
+ "javaType": "org.apache.camel.model.SetVariablesDefinition",
+ "abstract": false,
+ "input": true,
+ "output": false
+ },
+ "properties": {
+ "id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" },
+ "description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
+ "disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." }
+ }
+}
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/split.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/split.json
index 3c761fa6536..2366c0faa9d 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/split.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/split.json
@@ -29,7 +29,7 @@
"executorService": { "index": 14, "kind": "attribute", "displayName": "Executor Service", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "java.util.concurrent.ExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom Thread Pool to be used for parallel processing. Notice if you set this option, then parallel processing is automatically implied, and you do not have to enable that option as well." },
"onPrepare": { "index": 15, "kind": "attribute", "displayName": "On Prepare", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.Processor", "deprecated": false, "autowired": false, "secret": false, "description": "Uses the Processor when preparing the org.apache.camel.Exchange to be sent. This can be used to deep-clone messages that should be sent, or any custom logic needed before the exchange is sent." },
"shareUnitOfWork": { "index": 16, "kind": "attribute", "displayName": "Share Unit Of Work", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Shares the 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 split exchan [...]
- "outputs": { "index": 17, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercep [...]
+ "outputs": { "index": 17, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercep [...]
},
"exchangeProperties": {
"CamelSplitIndex": { "index": 0, "kind": "exchangeProperty", "displayName": "Split Index", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "A split counter that increases for each Exchange being split. The counter starts from 0." },
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/step.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/step.json
index 6608a109bc9..00d3b27db0b 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/step.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/step.json
@@ -15,7 +15,7 @@
"id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" },
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
- "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
+ "outputs": { "index": 3, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "interceptSendToEndpoint", "kamelet", "loadBalance", "log", "loop", "mar [...]
},
"exchangeProperties": {
"CamelStepId": { "index": 0, "kind": "exchangeProperty", "displayName": "Step Id", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "autowired": false, "secret": false, "description": "The id of the Step EIP" }
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/when.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/when.json
index 67f9093d505..65811f1e3ee 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/when.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/when.json
@@ -16,6 +16,6 @@
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
"expression": { "index": 3, "kind": "expression", "displayName": "Expression", "group": "common", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ], "depre [...]
- "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
+ "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
}
}
diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/whenSkipSendToEndpoint.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/whenSkipSendToEndpoint.json
index ce271d242e5..5783a281070 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/whenSkipSendToEndpoint.json
+++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/whenSkipSendToEndpoint.json
@@ -16,6 +16,6 @@
"description": { "index": 1, "kind": "attribute", "displayName": "Description", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" },
"disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime." },
"expression": { "index": 3, "kind": "expression", "displayName": "Expression", "group": "common", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", "hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", "mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", "wasm", "xpath", "xquery", "xtokenize" ], "depre [...]
- "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
+ "outputs": { "index": 4, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercept [...]
}
}
diff --git a/core/camel-core-model/src/generated/resources/META-INF/services/org/apache/camel/model.properties b/core/camel-core-model/src/generated/resources/META-INF/services/org/apache/camel/model.properties
index c6b3ace6879..d1ab490245e 100644
--- a/core/camel-core-model/src/generated/resources/META-INF/services/org/apache/camel/model.properties
+++ b/core/camel-core-model/src/generated/resources/META-INF/services/org/apache/camel/model.properties
@@ -175,6 +175,7 @@ setHeader
setHeaders
setProperty
setVariable
+setVariables
simple
soap
sort
diff --git a/core/camel-core-model/src/generated/resources/org/apache/camel/model/jaxb.index b/core/camel-core-model/src/generated/resources/org/apache/camel/model/jaxb.index
index e4f78c9dd9d..895ec8d7c0a 100644
--- a/core/camel-core-model/src/generated/resources/org/apache/camel/model/jaxb.index
+++ b/core/camel-core-model/src/generated/resources/org/apache/camel/model/jaxb.index
@@ -88,6 +88,7 @@ SetHeaderDefinition
SetHeadersDefinition
SetPropertyDefinition
SetVariableDefinition
+SetVariablesDefinition
SortDefinition
SplitDefinition
StepDefinition
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/ProcessorDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/ProcessorDefinition.java
index 194b15678dc..43c9bc18fcc 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/ProcessorDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/ProcessorDefinition.java
@@ -2722,6 +2722,18 @@ public abstract class ProcessorDefinition<Type extends ProcessorDefinition<Type>
return clause;
}
+ /**
+ * Adds a processor which sets several variables on the exchange
+ *
+ * @param variableNamesAndValues a sequence of variable names and values or a Map containing names and values
+ * @return the builder
+ */
+ public Type setVariables(Object... variableNamesAndValues) {
+ SetVariablesDefinition answer = new SetVariablesDefinition(variableNamesAndValues);
+ addOutput(answer);
+ return asType();
+ }
+
/**
* Adds a processor which sets the variable
*
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/SetHeadersDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/SetHeadersDefinition.java
index a263ed562e9..efbb17331d4 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/SetHeadersDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/SetHeadersDefinition.java
@@ -80,7 +80,6 @@ public class SetHeadersDefinition extends ProcessorDefinition<SetHeadersDefiniti
for (Entry<?, ?> entry : headerMap.entrySet()) {
addHeader(entry.getKey(), entry.getValue());
}
-
}
public List<SetHeaderDefinition> getHeaders() {
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/SetHeadersDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/SetVariablesDefinition.java
similarity index 57%
copy from core/camel-core-model/src/main/java/org/apache/camel/model/SetHeadersDefinition.java
copy to core/camel-core-model/src/main/java/org/apache/camel/model/SetVariablesDefinition.java
index a263ed562e9..b29e2111a64 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/SetHeadersDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/SetVariablesDefinition.java
@@ -32,40 +32,40 @@ import org.apache.camel.builder.ExpressionBuilder;
import org.apache.camel.spi.Metadata;
/**
- * Allows setting multiple headers on the message at the same time.
+ * Allows setting multiple variables at the same time.
*/
@Metadata(label = "eip,transformation")
-@XmlRootElement(name = "setHeaders")
+@XmlRootElement(name = "setVariables")
@XmlAccessorType(XmlAccessType.FIELD)
-public class SetHeadersDefinition extends ProcessorDefinition<SetHeadersDefinition> {
+public class SetVariablesDefinition extends ProcessorDefinition<SetVariablesDefinition> {
/** This is provided to support XML and YAML DSL */
- @XmlElementRef(name = "headers")
- private List<SetHeaderDefinition> headers = new java.util.ArrayList<>();
+ @XmlElementRef(name = "variables")
+ private List<SetVariableDefinition> variables = new java.util.ArrayList<>();
- public SetHeadersDefinition() {
+ public SetVariablesDefinition() {
}
/**
- * Allow setting multiple headers using a single expression.
+ * Allow setting multiple variables using a single expression.
*/
- public SetHeadersDefinition(Object... headerNamesAndExprs) {
- createSetHeaderDefinitions(headerNamesAndExprs);
+ public SetVariablesDefinition(Object... variableNamesAndExprs) {
+ createSetVariableDefinitions(variableNamesAndExprs);
}
- private void createSetHeaderDefinitions(Object[] headerNamesAndExprs) {
- if (headerNamesAndExprs.length == 1 && headerNamesAndExprs[0] instanceof Map) {
- createHeadersFromMap((Map<?, ?>) headerNamesAndExprs[0]);
- } else if (headerNamesAndExprs.length % 2 != 0) {
+ private void createSetVariableDefinitions(Object[] variableNamesAndExprs) {
+ if (variableNamesAndExprs.length == 1 && variableNamesAndExprs[0] instanceof Map) {
+ createVariablesFromMap((Map<?, ?>) variableNamesAndExprs[0]);
+ } else if (variableNamesAndExprs.length % 2 != 0) {
throw new IllegalArgumentException("Must be a Map or have an even number of arguments!");
} else {
- for (int i = 0; i < headerNamesAndExprs.length; i += 2) {
- addHeader(headerNamesAndExprs[i], headerNamesAndExprs[i + 1]);
+ for (int i = 0; i < variableNamesAndExprs.length; i += 2) {
+ addVariable(variableNamesAndExprs[i], variableNamesAndExprs[i + 1]);
}
}
}
- private void addHeader(Object key, Object value) {
+ private void addVariable(Object key, Object value) {
if (!(key instanceof String)) {
throw new IllegalArgumentException("Keys must be Strings");
}
@@ -73,32 +73,31 @@ public class SetHeadersDefinition extends ProcessorDefinition<SetHeadersDefiniti
// Assume it's a constant of some kind
value = ExpressionBuilder.constantExpression(value);
}
- headers.add(new SetHeaderDefinition((String) key, (Expression) value));
+ variables.add(new SetVariableDefinition((String) key, (Expression) value));
}
- private void createHeadersFromMap(Map<?, ?> headerMap) {
- for (Entry<?, ?> entry : headerMap.entrySet()) {
- addHeader(entry.getKey(), entry.getValue());
+ private void createVariablesFromMap(Map<?, ?> variableMap) {
+ for (Entry<?, ?> entry : variableMap.entrySet()) {
+ addVariable(entry.getKey(), entry.getValue());
}
-
}
- public List<SetHeaderDefinition> getHeaders() {
- return headers;
+ public List<SetVariableDefinition> getVariables() {
+ return variables;
}
- public void setHeaders(List<SetHeaderDefinition> headers) {
- this.headers = headers;
+ public void setVariables(List<SetVariableDefinition> variables) {
+ this.variables = variables;
}
@Override
public String getLabel() {
- return "setHeaders[" + getHeaderNames() + "]";
+ return "setVariables[" + getVariableNames() + "]";
}
- private String getHeaderNames() {
+ private String getVariableNames() {
StringJoiner sb = new StringJoiner(",");
- for (SetHeaderDefinition def : headers) {
+ for (SetVariableDefinition def : variables) {
sb.add(def.getName());
}
return sb.toString();
@@ -106,7 +105,7 @@ public class SetHeadersDefinition extends ProcessorDefinition<SetHeadersDefiniti
@Override
public String getShortName() {
- return "setHeaders";
+ return "setVariables";
}
@Override
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/SetHeadersProcessor.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/SetHeadersProcessor.java
index 79c05511438..d241e2f616c 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/SetHeadersProcessor.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/SetHeadersProcessor.java
@@ -28,7 +28,7 @@ import org.apache.camel.spi.RouteIdAware;
import org.apache.camel.support.AsyncProcessorSupport;
/**
- * A processor which sets multipe headers on the IN or OUT message with an {@link org.apache.camel.Expression}
+ * A processor which sets multiple headers on the IN or OUT message with an {@link org.apache.camel.Expression}
*/
public class SetHeadersProcessor extends AsyncProcessorSupport implements Traceable, IdAware, RouteIdAware {
private String id;
diff --git a/core/camel-core-processor/src/main/java/org/apache/camel/processor/SetHeadersProcessor.java b/core/camel-core-processor/src/main/java/org/apache/camel/processor/SetVariablesProcessor.java
similarity index 72%
copy from core/camel-core-processor/src/main/java/org/apache/camel/processor/SetHeadersProcessor.java
copy to core/camel-core-processor/src/main/java/org/apache/camel/processor/SetVariablesProcessor.java
index 79c05511438..10772f6dbc5 100644
--- a/core/camel-core-processor/src/main/java/org/apache/camel/processor/SetHeadersProcessor.java
+++ b/core/camel-core-processor/src/main/java/org/apache/camel/processor/SetVariablesProcessor.java
@@ -21,43 +21,41 @@ import java.util.List;
import org.apache.camel.AsyncCallback;
import org.apache.camel.Exchange;
import org.apache.camel.Expression;
-import org.apache.camel.Message;
import org.apache.camel.Traceable;
import org.apache.camel.spi.IdAware;
import org.apache.camel.spi.RouteIdAware;
import org.apache.camel.support.AsyncProcessorSupport;
+import org.apache.camel.support.ExchangeHelper;
/**
- * A processor which sets multipe headers on the IN or OUT message with an {@link org.apache.camel.Expression}
+ * A processor which sets multiple variables on the Exchange with an {@link Expression}
*/
-public class SetHeadersProcessor extends AsyncProcessorSupport implements Traceable, IdAware, RouteIdAware {
+public class SetVariablesProcessor extends AsyncProcessorSupport implements Traceable, IdAware, RouteIdAware {
private String id;
private String routeId;
- private final List<Expression> headerNames;
+ private final List<Expression> variableNames;
private final List<Expression> expressions;
- public SetHeadersProcessor(List<Expression> headerNames, List<Expression> expressions) {
- this.headerNames = headerNames;
+ public SetVariablesProcessor(List<Expression> variableNames, List<Expression> expressions) {
+ this.variableNames = variableNames;
this.expressions = expressions;
}
@Override
public boolean process(Exchange exchange, AsyncCallback callback) {
try {
- int headerIndex = 0;
+ int variableIndex = 0;
for (Expression expression : expressions) {
- Object newHeader = expression.evaluate(exchange, Object.class);
+ Object newVariable = expression.evaluate(exchange, Object.class);
if (exchange.getException() != null) {
// the expression threw an exception so we should break-out
callback.done(true);
return true;
}
- Message message = exchange.getMessage();
- String key = headerNames.get(headerIndex++).evaluate(exchange, String.class);
- message.setHeader(key, newHeader);
+ String key = variableNames.get(variableIndex++).evaluate(exchange, String.class);
+ ExchangeHelper.setVariable(exchange, key, newVariable);
}
-
} catch (Exception e) {
exchange.setException(e);
}
@@ -73,13 +71,13 @@ public class SetHeadersProcessor extends AsyncProcessorSupport implements Tracea
@Override
public String getTraceLabel() {
- StringBuilder sb = new StringBuilder("setHeaders[");
- int headerIndex = 0;
+ StringBuilder sb = new StringBuilder("setVariables[");
+ int variableIndex = 0;
for (Expression expression : expressions) {
- if (headerIndex > 0) {
+ if (variableIndex > 0) {
sb.append("; ");
}
- sb.append(headerNames.get(headerIndex++).toString());
+ sb.append(variableNames.get(variableIndex++).toString());
sb.append(", ");
sb.append(expression.toString());
}
@@ -107,8 +105,8 @@ public class SetHeadersProcessor extends AsyncProcessorSupport implements Tracea
this.routeId = routeId;
}
- public List<Expression> getHeaderNames() {
- return headerNames;
+ public List<Expression> getVariableNames() {
+ return variableNames;
}
public List<Expression> getExpressions() {
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
index 32bbdb1aacd..c2a95f68f9a 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ProcessorReifier.java
@@ -93,6 +93,7 @@ import org.apache.camel.model.SetHeaderDefinition;
import org.apache.camel.model.SetHeadersDefinition;
import org.apache.camel.model.SetPropertyDefinition;
import org.apache.camel.model.SetVariableDefinition;
+import org.apache.camel.model.SetVariablesDefinition;
import org.apache.camel.model.SortDefinition;
import org.apache.camel.model.SplitDefinition;
import org.apache.camel.model.StepDefinition;
@@ -306,6 +307,8 @@ public abstract class ProcessorReifier<T extends ProcessorDefinition<?>> extends
return new SetPropertyReifier(route, definition);
} else if (definition instanceof SetVariableDefinition) {
return new SetVariableReifier(route, definition);
+ } else if (definition instanceof SetVariablesDefinition) {
+ return new SetVariablesReifier(route, definition);
} else if (definition instanceof SortDefinition) {
return new SortReifier<>(route, definition);
} else if (definition instanceof SplitDefinition) {
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/SetVariablesReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/SetVariablesReifier.java
new file mode 100644
index 00000000000..7e2683acf2c
--- /dev/null
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/SetVariablesReifier.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.reifier;
+
+import java.util.List;
+
+import org.apache.camel.Expression;
+import org.apache.camel.Processor;
+import org.apache.camel.Route;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.model.SetVariableDefinition;
+import org.apache.camel.model.SetVariablesDefinition;
+import org.apache.camel.processor.SetVariablesProcessor;
+import org.apache.camel.support.LanguageSupport;
+
+public class SetVariablesReifier extends ProcessorReifier<SetVariablesDefinition> {
+
+ public SetVariablesReifier(Route route, ProcessorDefinition<?> definition) {
+ super(route, (SetVariablesDefinition) definition);
+ }
+
+ @Override
+ public Processor createProcessor() throws Exception {
+ if (definition.getVariables().isEmpty()) {
+ throw new IllegalArgumentException("There must be at least one variable specified");
+ }
+ List<Expression> nameExprs = new java.util.ArrayList<>(definition.getVariables().size());
+ List<Expression> valueExprs = new java.util.ArrayList<>(definition.getVariables().size());
+ for (SetVariableDefinition varDef : definition.getVariables()) {
+ valueExprs.add(createExpression(varDef.getExpression()));
+ Expression nameExpr;
+ String key = parseString(varDef.getName());
+ if (LanguageSupport.hasSimpleFunction(key)) {
+ nameExpr = camelContext.resolveLanguage("simple").createExpression(key);
+ } else {
+ nameExpr = camelContext.resolveLanguage("constant").createExpression(key);
+ }
+ nameExpr.init(camelContext);
+ nameExprs.add(nameExpr);
+ }
+ return new SetVariablesProcessor(nameExprs, valueExprs);
+ }
+}
diff --git a/core/camel-core/src/test/java/org/apache/camel/model/SetVariablesDefinitionTest.java b/core/camel-core/src/test/java/org/apache/camel/model/SetVariablesDefinitionTest.java
new file mode 100644
index 00000000000..e1fca27ec95
--- /dev/null
+++ b/core/camel-core/src/test/java/org/apache/camel/model/SetVariablesDefinitionTest.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.model;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.camel.Expression;
+import org.apache.camel.TestSupport;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+class SetVariablesDefinitionTest extends TestSupport {
+
+ @Test
+ void testSetFromMap() {
+ Map<String, Expression> map = new java.util.LinkedHashMap<>(3);
+ map.put("fromBody", body());
+ map.put("isCamel", ExpressionNodeHelper.toExpressionDefinition(body().contains("Camel")));
+ map.put("isHorse", ExpressionNodeHelper.toExpressionDefinition(body().contains("Horse")));
+ SetVariablesDefinition def = new SetVariablesDefinition(map);
+ assertNotNull(def.getVariables());
+ assertEquals(3, def.getVariables().size());
+ assertEquals("isCamel", def.getVariables().get(1).getName());
+ }
+
+ @Test
+ void testSetFromMapOf() {
+ SetVariablesDefinition def = new SetVariablesDefinition(
+ Map.of("fromBody", body(),
+ "isCamel", body().contains("Camel"), "isHorse", body().contains("Horse")));
+ assertNotNull(def.getVariables());
+ assertEquals(3, def.getVariables().size());
+ Set<String> names = new java.util.HashSet<>();
+ for (SetVariableDefinition varDef : def.getVariables()) {
+ names.add(varDef.getName());
+ }
+ assertEquals(names, Set.of("fromBody", "isCamel", "isHorse"));
+ }
+
+ @Test
+ void testSetFromVarargs() {
+ SetVariablesDefinition def = new SetVariablesDefinition(
+ "fromBody", body(),
+ "isCamel", ExpressionNodeHelper.toExpressionDefinition(body().contains("Camel")),
+ "isHorse", ExpressionNodeHelper.toExpressionDefinition(body().contains("Camel")));
+ assertNotNull(def.getVariables());
+ assertEquals(3, def.getVariables().size());
+ assertEquals("isCamel", def.getVariables().get(1).getName());
+ }
+
+ @Test
+ void testSetFromOnePair() {
+ SetVariablesDefinition def = new SetVariablesDefinition("fromBody", body());
+ assertNotNull(def.getVariables());
+ assertEquals(1, def.getVariables().size());
+ assertEquals("fromBody", def.getVariables().get(0).getName());
+ }
+
+}
diff --git a/core/camel-core/src/test/java/org/apache/camel/processor/SetVariablesProcessorTest.java b/core/camel-core/src/test/java/org/apache/camel/processor/SetVariablesProcessorTest.java
new file mode 100644
index 00000000000..2e7bc8891fb
--- /dev/null
+++ b/core/camel-core/src/test/java/org/apache/camel/processor/SetVariablesProcessorTest.java
@@ -0,0 +1,146 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.processor;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Expression;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.language.constant.ConstantLanguage;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.util.Map;
+
+public class SetVariablesProcessorTest extends ContextTestSupport {
+
+ public static class VarBean {
+ Map<String, String> map = new java.util.LinkedHashMap<>();
+
+ public VarBean() {
+ }
+
+ Map<String, String> getVariables(String body) {
+ map.clear();
+ String[] mapInfo = body.split(",");
+ for (int i = 0; i < mapInfo.length; i += 2) {
+ map.put(mapInfo[i], mapInfo[i + 1]);
+ }
+ return map;
+ }
+ }
+
+ private final Map<String, Expression> varMap = new java.util.LinkedHashMap<>();
+ protected String body = "<person name='Jane' age='10'/>";
+ protected MockEndpoint expected;
+
+ @Test
+ public void testUseConstantParameters() throws Exception {
+ expected.message(0).variable("foo").isEqualTo("ABC");
+ expected.message(0).variable("bar").isEqualTo("XYZ");
+
+ fluentTemplate.to("direct:startConstant").withBody(body).withVariable("bar", "ABC").send();
+ assertMockEndpointsSatisfied();
+ }
+
+ @Test
+ public void testUseSimpleLanguage() throws Exception {
+ expected.message(0).variable("foo").isEqualTo("ABC");
+ expected.message(0).variable("bar").isEqualTo("XYZ");
+
+ fluentTemplate.to("direct:start").withBody("ABC").withVariable("bar1", "XYZ").send();
+ assertMockEndpointsSatisfied();
+ }
+
+ @Test
+ public void testUseXpathLanguage() throws Exception {
+ expected.message(0).variable("name").isEqualTo("Jane");
+ expected.message(0).variable("age").isEqualTo(10);
+
+ template.sendBody("direct:startXpath", body);
+ assertMockEndpointsSatisfied();
+ }
+
+ @Test
+ public void testUseMap() throws Exception {
+ context.addRoutes(new RouteBuilder() {
+ public void configure() throws Exception {
+ from("direct:startMap").setVariables(varMap).to("mock:result");
+ }
+ });
+ expected.message(0).variable("foo").isEqualTo("ABC");
+ expected.message(0).variable("bar").isEqualTo("XYZ");
+ template.sendBody("direct:startMap", body);
+ assertMockEndpointsSatisfied();
+ }
+
+ @Test
+ public void testUseMapOf() throws Exception {
+ context.addRoutes(new RouteBuilder() {
+ public void configure() throws Exception {
+ from("direct:startMap").setVariables(Map.of("foo", "ABC", "bar", "XYZ")).to("mock:result");
+ }
+ });
+ expected.message(0).variable("foo").isEqualTo("ABC");
+ expected.message(0).variable("bar").isEqualTo("XYZ");
+ template.sendBody("direct:startMap", body);
+ assertMockEndpointsSatisfied();
+ }
+
+ @Test
+ public void testUseMethod() throws Exception {
+ String hdrInBody = "foo,ABC,bar,XYZ";
+ template.sendBody("direct:startMethod", hdrInBody);
+ expected.getExchanges().get(0);
+ expected.message(0).variable("mapTest").isEqualTo(new VarBean().getVariables(hdrInBody));
+ assertMockEndpointsSatisfied();
+ }
+
+ @Test
+ public void testSetOneVariableFromAnother() throws Exception {
+ expected.message(0).variable("foo").isEqualTo(15);
+ expected.message(0).variable("bar").isEqualTo(true);
+ template.sendBody("direct:startDepHeader", 15);
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ public void configure() {
+ from("direct:start").setVariables("foo", simple("${body}"),
+ "bar", simple("${variable.bar1}")).to("mock:result");
+ from("direct:startDepHeader").setVariables("foo", simple("${body}"),
+ "bar", simple("${variable.foo} > 10", Boolean.class)).to("mock:result");
+ from("direct:startConstant").setVariables("foo", constant("ABC"),
+ "bar", constant("XYZ")).to("mock:result");
+ from("direct:startXpath").setVariables("age", xpath("/person/@age"),
+ "name", xpath("/person/@name")).to("mock:result");
+ from("direct:startMethod").setVariables("mapTest", method(VarBean.class, "getVariables")).to("mock:result");
+ }
+ };
+ }
+
+ @Override
+ @BeforeEach
+ public void setUp() throws Exception {
+ super.setUp();
+ varMap.put("foo", ConstantLanguage.constant("ABC"));
+ varMap.put("bar", ConstantLanguage.constant("XYZ"));
+ expected = getMockEndpoint("mock:result");
+ }
+}
diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetHeadersMBean.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetHeadersMBean.java
new file mode 100644
index 00000000000..477d5663c96
--- /dev/null
+++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetHeadersMBean.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.api.management.mbean;
+
+import org.apache.camel.api.management.ManagedAttribute;
+
+public interface ManagedSetHeadersMBean extends ManagedProcessorMBean {
+
+ @ManagedAttribute(description = "Name of message headers to set with new values")
+ String[] getHeaderNames();
+
+}
diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetVariablesMBean.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetVariablesMBean.java
new file mode 100644
index 00000000000..9a01e28f0ff
--- /dev/null
+++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedSetVariablesMBean.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.api.management.mbean;
+
+import org.apache.camel.api.management.ManagedAttribute;
+
+public interface ManagedSetVariablesMBean extends ManagedProcessorMBean {
+
+ @ManagedAttribute(description = "Name of variables to set with new values")
+ String[] getVariableNames();
+
+}
diff --git a/core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java b/core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
index 97f7ac15153..c2c38cb53ef 100644
--- a/core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
+++ b/core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementObjectStrategy.java
@@ -90,8 +90,10 @@ import org.apache.camel.management.mbean.ManagedService;
import org.apache.camel.management.mbean.ManagedSetBody;
import org.apache.camel.management.mbean.ManagedSetExchangePattern;
import org.apache.camel.management.mbean.ManagedSetHeader;
+import org.apache.camel.management.mbean.ManagedSetHeaders;
import org.apache.camel.management.mbean.ManagedSetProperty;
import org.apache.camel.management.mbean.ManagedSetVariable;
+import org.apache.camel.management.mbean.ManagedSetVariables;
import org.apache.camel.management.mbean.ManagedSplitter;
import org.apache.camel.management.mbean.ManagedStep;
import org.apache.camel.management.mbean.ManagedStickyLoadBalancer;
@@ -127,8 +129,10 @@ import org.apache.camel.model.RoutingSlipDefinition;
import org.apache.camel.model.ScriptDefinition;
import org.apache.camel.model.SetBodyDefinition;
import org.apache.camel.model.SetHeaderDefinition;
+import org.apache.camel.model.SetHeadersDefinition;
import org.apache.camel.model.SetPropertyDefinition;
import org.apache.camel.model.SetVariableDefinition;
+import org.apache.camel.model.SetVariablesDefinition;
import org.apache.camel.model.SplitDefinition;
import org.apache.camel.model.TransformDefinition;
import org.apache.camel.model.TryDefinition;
@@ -165,8 +169,10 @@ import org.apache.camel.processor.SendDynamicProcessor;
import org.apache.camel.processor.SendProcessor;
import org.apache.camel.processor.SetBodyProcessor;
import org.apache.camel.processor.SetHeaderProcessor;
+import org.apache.camel.processor.SetHeadersProcessor;
import org.apache.camel.processor.SetPropertyProcessor;
import org.apache.camel.processor.SetVariableProcessor;
+import org.apache.camel.processor.SetVariablesProcessor;
import org.apache.camel.processor.Splitter;
import org.apache.camel.processor.StepProcessor;
import org.apache.camel.processor.StopProcessor;
@@ -428,8 +434,12 @@ public class DefaultManagementObjectStrategy implements ManagementObjectStrategy
answer = new ManagedRemoveHeaders(context, (RemoveHeadersProcessor) target, definition);
} else if (target instanceof SetHeaderProcessor) {
answer = new ManagedSetHeader(context, (SetHeaderProcessor) target, (SetHeaderDefinition) definition);
+ } else if (target instanceof SetHeadersProcessor) {
+ answer = new ManagedSetHeaders(context, (SetHeadersProcessor) target, (SetHeadersDefinition) definition);
} else if (target instanceof SetVariableProcessor) {
answer = new ManagedSetVariable(context, (SetVariableProcessor) target, (SetVariableDefinition) definition);
+ } else if (target instanceof SetVariablesProcessor) {
+ answer = new ManagedSetVariables(context, (SetVariablesProcessor) target, (SetVariablesDefinition) definition);
} else if (target instanceof RemovePropertyProcessor) {
answer = new ManagedRemoveProperty(context, (RemovePropertyProcessor) target, definition);
} else if (target instanceof RemovePropertiesProcessor) {
diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedSetHeaders.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedSetHeaders.java
new file mode 100644
index 00000000000..16fd30bffe0
--- /dev/null
+++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedSetHeaders.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.management.mbean;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.api.management.ManagedResource;
+import org.apache.camel.api.management.mbean.ManagedSetHeadersMBean;
+import org.apache.camel.model.SetHeadersDefinition;
+import org.apache.camel.processor.SetHeadersProcessor;
+
+@ManagedResource(description = "Managed SetHeaders")
+public class ManagedSetHeaders extends ManagedProcessor implements ManagedSetHeadersMBean {
+ private final SetHeadersProcessor processor;
+
+ public ManagedSetHeaders(CamelContext context, SetHeadersProcessor processor, SetHeadersDefinition definition) {
+ super(context, processor, definition);
+ this.processor = processor;
+ }
+
+ @Override
+ public SetHeadersDefinition getDefinition() {
+ return (SetHeadersDefinition) super.getDefinition();
+ }
+
+ @Override
+ public String[] getHeaderNames() {
+ return processor.getHeaderNames()
+ .stream().map(Object::toString).distinct().toArray(String[]::new);
+ }
+}
diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedSetVariables.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedSetVariables.java
new file mode 100644
index 00000000000..c9370cfec7a
--- /dev/null
+++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedSetVariables.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.management.mbean;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.api.management.ManagedResource;
+import org.apache.camel.api.management.mbean.ManagedSetVariablesMBean;
+import org.apache.camel.model.SetVariablesDefinition;
+import org.apache.camel.processor.SetVariablesProcessor;
+
+@ManagedResource(description = "Managed SetVariables")
+public class ManagedSetVariables extends ManagedProcessor implements ManagedSetVariablesMBean {
+ private final SetVariablesProcessor processor;
+
+ public ManagedSetVariables(CamelContext context, SetVariablesProcessor processor, SetVariablesDefinition definition) {
+ super(context, processor, definition);
+ this.processor = processor;
+ }
+
+ @Override
+ public SetVariablesDefinition getDefinition() {
+ return (SetVariablesDefinition) super.getDefinition();
+ }
+
+ @Override
+ public String[] getVariableNames() {
+ return processor.getVariableNames()
+ .stream().map(Object::toString).distinct().toArray(String[]::new);
+ }
+}
diff --git a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java
index 816d798742f..616c5977029 100644
--- a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java
+++ b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java
@@ -1064,6 +1064,12 @@ public class ModelParser extends BaseParser {
default: yield processorDefinitionAttributeHandler().accept(def, key, val);
}, expressionNodeElementHandler(), noValueHandler());
}
+ protected SetVariablesDefinition doParseSetVariablesDefinition() throws IOException, XmlPullParserException {
+ return doParse(new SetVariablesDefinition(), processorDefinitionAttributeHandler(), (def, key) -> switch (key) {
+ case "setVariable": doAdd(doParseSetVariableDefinition(), def.getVariables(), def::setVariables); yield true;
+ default: yield optionalIdentifiedDefinitionElementHandler().accept(def, key);
+ }, noValueHandler());
+ }
protected SortDefinition doParseSortDefinition() throws IOException, XmlPullParserException {
return doParse(new SortDefinition(), (def, key, val) -> switch (key) {
case "comparator": def.setComparator(val); yield true;
@@ -2770,6 +2776,7 @@ public class ModelParser extends BaseParser {
case "setHeaders": return doParseSetHeadersDefinition();
case "setProperty": return doParseSetPropertyDefinition();
case "setVariable": return doParseSetVariableDefinition();
+ case "setVariables": return doParseSetVariablesDefinition();
case "sort": return doParseSortDefinition();
case "split": return doParseSplitDefinition();
case "step": return doParseStepDefinition();
diff --git a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java
index aedb31d39ec..ff50037a38f 100644
--- a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java
+++ b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java
@@ -291,6 +291,9 @@ public class ModelWriter extends BaseWriter {
public void writeSetVariableDefinition(SetVariableDefinition def) throws IOException {
doWriteSetVariableDefinition("setVariable", def);
}
+ public void writeSetVariablesDefinition(SetVariablesDefinition def) throws IOException {
+ doWriteSetVariablesDefinition("setVariables", def);
+ }
public void writeSortDefinition(SortDefinition def) throws IOException {
doWriteSortDefinition("sort", def);
}
@@ -1684,6 +1687,12 @@ public class ModelWriter extends BaseWriter {
doWriteExpressionNodeElements(def);
endElement(name);
}
+ protected void doWriteSetVariablesDefinition(String name, SetVariablesDefinition def) throws IOException {
+ startElement(name);
+ doWriteProcessorDefinitionAttributes(def);
+ doWriteList(null, null, def.getVariables(), this::doWriteSetVariableDefinitionRef);
+ endElement(name);
+ }
protected void doWriteSortDefinition(String name, SortDefinition<?> def) throws IOException {
startElement(name);
doWriteProcessorDefinitionAttributes(def);
@@ -3687,6 +3696,7 @@ public class ModelWriter extends BaseWriter {
case "SetHeadersDefinition" -> doWriteSetHeadersDefinition("setHeaders", (SetHeadersDefinition) v);
case "SetPropertyDefinition" -> doWriteSetPropertyDefinition("setProperty", (SetPropertyDefinition) v);
case "SetVariableDefinition" -> doWriteSetVariableDefinition("setVariable", (SetVariableDefinition) v);
+ case "SetVariablesDefinition" -> doWriteSetVariablesDefinition("setVariables", (SetVariablesDefinition) v);
case "SortDefinition" -> doWriteSortDefinition("sort", (SortDefinition) v);
case "SplitDefinition" -> doWriteSplitDefinition("split", (SplitDefinition) v);
case "StepDefinition" -> doWriteStepDefinition("step", (StepDefinition) v);
@@ -3782,6 +3792,7 @@ public class ModelWriter extends BaseWriter {
case "SetHeadersDefinition" -> doWriteSetHeadersDefinition("setHeaders", (SetHeadersDefinition) v);
case "SetPropertyDefinition" -> doWriteSetPropertyDefinition("setProperty", (SetPropertyDefinition) v);
case "SetVariableDefinition" -> doWriteSetVariableDefinition("setVariable", (SetVariableDefinition) v);
+ case "SetVariablesDefinition" -> doWriteSetVariablesDefinition("setVariables", (SetVariablesDefinition) v);
case "SortDefinition" -> doWriteSortDefinition("sort", (SortDefinition) v);
case "SplitDefinition" -> doWriteSplitDefinition("split", (SplitDefinition) v);
case "StepDefinition" -> doWriteStepDefinition("step", (StepDefinition) v);
@@ -3830,6 +3841,13 @@ public class ModelWriter extends BaseWriter {
}
}
}
+ protected void doWriteSetVariableDefinitionRef(String n, SetVariableDefinition v) throws IOException {
+ if (v != null) {
+ switch (v.getClass().getSimpleName()) {
+ case "SetVariableDefinition" -> doWriteSetVariableDefinition("setVariable", (SetVariableDefinition) v);
+ }
+ }
+ }
protected void doWriteTemplatedRouteDefinitionRef(String n, TemplatedRouteDefinition v) throws IOException {
if (v != null) {
switch (v.getClass().getSimpleName()) {
diff --git a/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java b/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java
index f8df38bf445..a0f5f2bc190 100644
--- a/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java
+++ b/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java
@@ -291,6 +291,9 @@ public class ModelWriter extends BaseWriter {
public void writeSetVariableDefinition(SetVariableDefinition def) throws IOException {
doWriteSetVariableDefinition("setVariable", def);
}
+ public void writeSetVariablesDefinition(SetVariablesDefinition def) throws IOException {
+ doWriteSetVariablesDefinition("setVariables", def);
+ }
public void writeSortDefinition(SortDefinition def) throws IOException {
doWriteSortDefinition("sort", def);
}
@@ -1684,6 +1687,12 @@ public class ModelWriter extends BaseWriter {
doWriteExpressionNodeElements(def);
endElement(name);
}
+ protected void doWriteSetVariablesDefinition(String name, SetVariablesDefinition def) throws IOException {
+ startElement(name);
+ doWriteProcessorDefinitionAttributes(def);
+ doWriteList(null, null, def.getVariables(), this::doWriteSetVariableDefinitionRef);
+ endElement(name);
+ }
protected void doWriteSortDefinition(String name, SortDefinition<?> def) throws IOException {
startElement(name);
doWriteProcessorDefinitionAttributes(def);
@@ -3687,6 +3696,7 @@ public class ModelWriter extends BaseWriter {
case "SetHeadersDefinition" -> doWriteSetHeadersDefinition("setHeaders", (SetHeadersDefinition) v);
case "SetPropertyDefinition" -> doWriteSetPropertyDefinition("setProperty", (SetPropertyDefinition) v);
case "SetVariableDefinition" -> doWriteSetVariableDefinition("setVariable", (SetVariableDefinition) v);
+ case "SetVariablesDefinition" -> doWriteSetVariablesDefinition("setVariables", (SetVariablesDefinition) v);
case "SortDefinition" -> doWriteSortDefinition("sort", (SortDefinition) v);
case "SplitDefinition" -> doWriteSplitDefinition("split", (SplitDefinition) v);
case "StepDefinition" -> doWriteStepDefinition("step", (StepDefinition) v);
@@ -3782,6 +3792,7 @@ public class ModelWriter extends BaseWriter {
case "SetHeadersDefinition" -> doWriteSetHeadersDefinition("setHeaders", (SetHeadersDefinition) v);
case "SetPropertyDefinition" -> doWriteSetPropertyDefinition("setProperty", (SetPropertyDefinition) v);
case "SetVariableDefinition" -> doWriteSetVariableDefinition("setVariable", (SetVariableDefinition) v);
+ case "SetVariablesDefinition" -> doWriteSetVariablesDefinition("setVariables", (SetVariablesDefinition) v);
case "SortDefinition" -> doWriteSortDefinition("sort", (SortDefinition) v);
case "SplitDefinition" -> doWriteSplitDefinition("split", (SplitDefinition) v);
case "StepDefinition" -> doWriteStepDefinition("step", (StepDefinition) v);
@@ -3830,6 +3841,13 @@ public class ModelWriter extends BaseWriter {
}
}
}
+ protected void doWriteSetVariableDefinitionRef(String n, SetVariableDefinition v) throws IOException {
+ if (v != null) {
+ switch (v.getClass().getSimpleName()) {
+ case "SetVariableDefinition" -> doWriteSetVariableDefinition("setVariable", (SetVariableDefinition) v);
+ }
+ }
+ }
protected void doWriteTemplatedRouteDefinitionRef(String n, TemplatedRouteDefinition v) throws IOException {
if (v != null) {
switch (v.getClass().getSimpleName()) {
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
index c08206a3966..a851b04e890 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
@@ -83,6 +83,7 @@ import org.apache.camel.model.SetHeaderDefinition;
import org.apache.camel.model.SetHeadersDefinition;
import org.apache.camel.model.SetPropertyDefinition;
import org.apache.camel.model.SetVariableDefinition;
+import org.apache.camel.model.SetVariablesDefinition;
import org.apache.camel.model.SortDefinition;
import org.apache.camel.model.SplitDefinition;
import org.apache.camel.model.StepDefinition;
@@ -16618,6 +16619,72 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
}
}
+ @YamlType(
+ nodes = {
+ "set-variables",
+ "setVariables"
+ },
+ types = org.apache.camel.model.SetVariablesDefinition.class,
+ order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
+ displayName = "Set Variables",
+ description = "Allows setting multiple variables at the same time.",
+ deprecated = false,
+ properties = {
+ @YamlProperty(name = "description", type = "string", description = "Sets the description of this node", displayName = "Description"),
+ @YamlProperty(name = "disabled", type = "boolean", description = "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", displayName = "Disabled"),
+ @YamlProperty(name = "id", type = "string", description = "Sets the id of this node", displayName = "Id"),
+ @YamlProperty(name = "inheritErrorHandler", type = "boolean"),
+ @YamlProperty(name = "variables", type = "array:org.apache.camel.model.SetVariableDefinition")
+ }
+ )
+ public static class SetVariablesDefinitionDeserializer extends YamlDeserializerBase<SetVariablesDefinition> {
+ public SetVariablesDefinitionDeserializer() {
+ super(SetVariablesDefinition.class);
+ }
+
+ @Override
+ protected SetVariablesDefinition newInstance() {
+ return new SetVariablesDefinition();
+ }
+
+ @Override
+ protected boolean setProperty(SetVariablesDefinition target, String propertyKey,
+ String propertyName, Node node) {
+ propertyKey = org.apache.camel.util.StringHelper.dashToCamelCase(propertyKey);
+ switch(propertyKey) {
+ case "disabled": {
+ String val = asText(node);
+ target.setDisabled(val);
+ break;
+ }
+ case "inheritErrorHandler": {
+ String val = asText(node);
+ target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
+ break;
+ }
+ case "variables": {
+ java.util.List<org.apache.camel.model.SetVariableDefinition> val = asFlatList(node, org.apache.camel.model.SetVariableDefinition.class);
+ target.setVariables(val);
+ break;
+ }
+ case "id": {
+ String val = asText(node);
+ target.setId(val);
+ break;
+ }
+ case "description": {
+ String val = asText(node);
+ target.setDescription(val);
+ break;
+ }
+ default: {
+ return false;
+ }
+ }
+ return true;
+ }
+ }
+
@YamlType(
nodes = "simple",
inline = true,
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java
index 371d2857f8f..b26dafbf115 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java
@@ -458,6 +458,9 @@ public final class ModelDeserializersResolver implements YamlDeserializerResolve
case "set-variable": return new ModelDeserializers.SetVariableDefinitionDeserializer();
case "setVariable": return new ModelDeserializers.SetVariableDefinitionDeserializer();
case "org.apache.camel.model.SetVariableDefinition": return new ModelDeserializers.SetVariableDefinitionDeserializer();
+ case "set-variables": return new ModelDeserializers.SetVariablesDefinitionDeserializer();
+ case "setVariables": return new ModelDeserializers.SetVariablesDefinitionDeserializer();
+ case "org.apache.camel.model.SetVariablesDefinition": return new ModelDeserializers.SetVariablesDefinitionDeserializer();
case "simple": return new ModelDeserializers.SimpleExpressionDeserializer();
case "org.apache.camel.model.language.SimpleExpression": return new ModelDeserializers.SimpleExpressionDeserializer();
case "soap": return new ModelDeserializers.SoapDataFormatDeserializer();
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
index 062c7fb0a97..f5c6f5ef94c 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
@@ -151,6 +151,9 @@
"setVariable" : {
"$ref" : "#/items/definitions/org.apache.camel.model.SetVariableDefinition"
},
+ "setVariables" : {
+ "$ref" : "#/items/definitions/org.apache.camel.model.SetVariablesDefinition"
+ },
"sort" : {
"$ref" : "#/items/definitions/org.apache.camel.model.SortDefinition"
},
@@ -6245,6 +6248,35 @@
},
"required" : [ "name" ]
},
+ "org.apache.camel.model.SetVariablesDefinition" : {
+ "title" : "Set Variables",
+ "description" : "Allows setting multiple variables at the same time.",
+ "type" : "object",
+ "additionalProperties" : false,
+ "properties" : {
+ "description" : {
+ "type" : "string",
+ "title" : "Description",
+ "description" : "Sets the description of this node"
+ },
+ "disabled" : {
+ "type" : "boolean",
+ "title" : "Disabled",
+ "description" : "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime."
+ },
+ "id" : {
+ "type" : "string",
+ "title" : "Id",
+ "description" : "Sets the id of this node"
+ },
+ "variables" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/items/definitions/org.apache.camel.model.SetVariableDefinition"
+ }
+ }
+ }
+ },
"org.apache.camel.model.SortDefinition" : {
"title" : "Sort",
"description" : "Sorts the contents of the message",
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SetVariablesTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SetVariablesTest.groovy
new file mode 100644
index 00000000000..701c6bc8f70
--- /dev/null
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/SetVariablesTest.groovy
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.dsl.yaml
+
+import org.apache.camel.dsl.yaml.support.YamlTestSupport
+import org.apache.camel.model.SetVariableDefinition
+import org.apache.camel.model.SetVariablesDefinition
+import org.apache.camel.model.language.ExpressionDefinition
+
+class SetVariablesTest extends YamlTestSupport {
+
+ def "setVariables definition"() {
+ when:
+ loadRoutes '''
+ - from:
+ uri: "direct:start"
+ steps:
+ - setVariables:
+ variables:
+ - name: testbody
+ simple: "${body}"
+ - name: testconstant
+ constant: ABC
+ - to: "mock:result"
+ '''
+ then:
+ with(context.routeDefinitions[0].outputs[0], SetVariablesDefinition) {
+ with(it.variables[0], SetVariableDefinition) {
+ name == 'testbody'
+ with(expression, ExpressionDefinition) {
+ language == 'simple'
+ expression == '${body}'
+ }
+ }
+ with(it.variables[1], SetVariableDefinition) {
+ name == 'testconstant'
+ with(expression, ExpressionDefinition) {
+ language == 'constant'
+ expression == "ABC"
+ }
+ }
+ }
+ }
+
+ def "setVariables resultType"() {
+ when:
+ loadRoutes '''
+ - from:
+ uri: "direct:start"
+ steps:
+ - setVariables:
+ variables:
+ - name: foo
+ simple: "${body}"
+ - name: bar
+ simple:
+ expression: "${variable.foo} > 10"
+ resultType: "boolean"
+ - to: "mock:result"
+ '''
+ then:
+ with(context.routeDefinitions[0].outputs[0], SetVariablesDefinition) {
+ with(it.variables[1], SetVariableDefinition) {
+ name == 'bar'
+ with(expression, ExpressionDefinition) {
+ language == 'simple'
+ expression == '${variable.foo} > 10'
+ resultTypeName == 'boolean'
+ }
+ }
+ }
+ }
+
+}