This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 1079e65e3831 CAMEL-16861: Update docs
1079e65e3831 is described below
commit 1079e65e3831b1322dd4f799cfe06ecc83ede9f2
Author: Claus Ibsen <[email protected]>
AuthorDate: Tue Feb 17 14:57:45 2026 +0100
CAMEL-16861: Update docs
---
.../docs/modules/eips/pages/scatter-gather.adoc | 94 +++++++++++++++++++---
.../main/docs/modules/eips/pages/script-eip.adoc | 55 ++++++++++++-
.../modules/eips/pages/selective-consumer.adoc | 39 ++++++++-
.../docs/modules/eips/pages/service-activator.adoc | 12 +++
.../main/docs/modules/eips/pages/setBody-eip.adoc | 5 +-
.../docs/modules/eips/pages/setHeader-eip.adoc | 51 ++++++++++++
.../org/apache/camel/main/stub/StubEipReifier.java | 15 ++++
7 files changed, 253 insertions(+), 18 deletions(-)
diff --git
a/core/camel-core-engine/src/main/docs/modules/eips/pages/scatter-gather.adoc
b/core/camel-core-engine/src/main/docs/modules/eips/pages/scatter-gather.adoc
index 85be17d36943..6aa8f1d34eed 100644
---
a/core/camel-core-engine/src/main/docs/modules/eips/pages/scatter-gather.adoc
+++
b/core/camel-core-engine/src/main/docs/modules/eips/pages/scatter-gather.adoc
@@ -38,20 +38,48 @@ together as the Scatter-Gather EIP solution.
In the following example, we want to call two HTTP services and gather their
responses into a single message,
as the response:
-[source,xml]
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("servlet:cheese")
+
.recipientList(constant("http:server1,http:server2")).aggregationStrategy("cheeseAggregator")
+ .to("log:response");
----
-<routes>
- <route>
+XML::
++
+[source,xml]
+----
+<route>
<from uri="servlet:cheese"/>
- <recipientList aggregationStrategy="cheeseAggregator">
- <constant>http:server1,http:server2</header>
- </recipientList>
+ <recipientList aggregationStrategy="cheeseAggregator">
+ <constant>http:server1,http:server2</constant>
+ </recipientList>
<to uri="log:response"/>
- </route>
+</route>
+----
-</routes>
+YAML::
++
+[source,yaml]
----
+- route:
+ from:
+ uri: servlet:cheese
+ steps:
+ - recipientList:
+ aggregationStrategy: cheeseAggregator
+ expression:
+ constant:
+ expression: "http:server1,http:server2"
+ - to:
+ uri: log:response
+----
+====
This is a basic example that only uses basic functionality of the
xref:recipientList-eip.adoc[Recipient List].
For more details on how the aggregation works, see the
xref:recipientList-eip.adoc[Recipient List] documentation.
@@ -65,10 +93,26 @@ and an xref:aggregate-eip.adoc[Aggregate] to pick the best
quote out of all the
The routes for this are defined as:
-[source,xml]
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("direct:start")
+ .recipientList(header("listOfVendors"));
+
+from("seda:quoteAggregator")
+ .aggregate(header("quoteRequestId"))
+ .aggregationStrategy("beerAggregator")
+ .completionTimeout(1000)
+ .to("direct:bestBeer")
+ .end();
----
-<routes>
+[source,xml]
+----
<route>
<from uri="direct:start"/>
<recipientList>
@@ -85,9 +129,35 @@ The routes for this are defined as:
<to uri="direct:bestBeer"/>
</aggregate>
</route>
+----
-</routes>
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:start
+ steps:
+ - recipientList:
+ expression:
+ header:
+ expression: listOfVendors
+- route:
+ from:
+ uri: seda:quoteAggregator
+ steps:
+ - aggregate:
+ aggregationStrategy: beerAggregator
+ completionTimeout: 1000
+ correlationExpression:
+ header:
+ expression: quoteRequestId
+ steps:
+ - to:
+ uri: direct:bestBeer
----
+====
So in the first route, you see that the xref:recipientList-eip.adoc[Recipient
List] is looking at the
listOfVendors header for the list of recipients. So, we need to send a message
like:
@@ -127,7 +197,7 @@ public class MyVendor {
}
----
-And are loaded up in XML like this:
+And are loaded up in Spring XML like this:
[source,xml]
----
diff --git
a/core/camel-core-engine/src/main/docs/modules/eips/pages/script-eip.adoc
b/core/camel-core-engine/src/main/docs/modules/eips/pages/script-eip.adoc
index eeb8f597f12f..34ce183b5906 100644
--- a/core/camel-core-engine/src/main/docs/modules/eips/pages/script-eip.adoc
+++ b/core/camel-core-engine/src/main/docs/modules/eips/pages/script-eip.adoc
@@ -33,6 +33,7 @@ The route below will read the file contents and call a groovy
script
[tabs]
====
+
Java::
+
[source,java]
@@ -54,9 +55,9 @@ XML::
<to uri="bean:myServiceBean.processLine"/>
</route>
----
-
++
Mind that you can use _CDATA_ if the script uses `< >` etc:
-
++
[source,xml]
----
<route>
@@ -67,6 +68,25 @@ Mind that you can use _CDATA_ if the script uses `< >` etc:
<to uri="bean:myServiceBean.processLine"/>
</route>
----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: file:inbox
+ steps:
+ - script:
+ expression:
+ groovy:
+ expression: >
+ some groovy code goes here
+ that can be in multiple
+ lines and have a lot of code
+ - to:
+ uri: bean:myServiceBean.processLine
+----
====
=== Scripting Context
@@ -78,6 +98,20 @@ The scripting context has access to the current `Exchange`
and can essentially c
You can refer to external script files instead of inlining the script.
For example, to load a groovy script from the classpath, you need to prefix
the value with `resource:` as shown:
+[tabs]
+====
+
+Java::
++
+[source,java]
+----
+from("file:inbox")
+ .script().groovy("resource:classpath:com/foo/myscript.groovy")
+ .to("bean:myServiceBean.processLine");
+----
+
+XML::
++
[source,xml]
----
<route>
@@ -89,5 +123,22 @@ For example, to load a groovy script from the classpath,
you need to prefix the
</route>
----
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: file:inbox
+ steps:
+ - script:
+ expression:
+ groovy:
+ expression: resource:classpath:com/foo/myscript.groovy
+ - to:
+ uri: bean:myServiceBean.processLine
+----
+====
+
You can also refer to the script from the file system with `file:` instead of
`classpath:`
such as `file:/var/myscript.groovy`
diff --git
a/core/camel-core-engine/src/main/docs/modules/eips/pages/selective-consumer.adoc
b/core/camel-core-engine/src/main/docs/modules/eips/pages/selective-consumer.adoc
index c131d4ee704b..2f9b3f6f46a6 100644
---
a/core/camel-core-engine/src/main/docs/modules/eips/pages/selective-consumer.adoc
+++
b/core/camel-core-engine/src/main/docs/modules/eips/pages/selective-consumer.adoc
@@ -43,6 +43,24 @@ XML::
<to uri="bean:red"/>
</route>
----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: jms
+ parameters:
+ destinationType: queue
+ destinationName: hello
+ selector: color='red'
+ steps:
+ - to:
+ uri: bean
+ parameters:
+ beanName: red
+----
====
=== Selective Consumer using Filter EIP
@@ -57,8 +75,8 @@ Java::
[source,java]
----
from("seda:colors")
- .filter(header("color").isEqualTo("red"))
- .to("bean:red")
+ .filter(simple("${header.color} == 'red'"))
+ .to("bean:red");
----
XML::
@@ -73,4 +91,21 @@ XML::
</filter>
</route>
----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: seda:colors
+ steps:
+ - filter:
+ expression:
+ simple:
+ expression: "${header.color} == 'red'"
+ steps:
+ - to:
+ uri: bean:red
+----
====
diff --git
a/core/camel-core-engine/src/main/docs/modules/eips/pages/service-activator.adoc
b/core/camel-core-engine/src/main/docs/modules/eips/pages/service-activator.adoc
index c84fcef24177..7b7eb87aa6f6 100644
---
a/core/camel-core-engine/src/main/docs/modules/eips/pages/service-activator.adoc
+++
b/core/camel-core-engine/src/main/docs/modules/eips/pages/service-activator.adoc
@@ -44,4 +44,16 @@ XML::
<to uri="bean:myService"/>
</route>
----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:invokeMyService
+ steps:
+ - to:
+ uri: bean:myService
+----
====
diff --git
a/core/camel-core-engine/src/main/docs/modules/eips/pages/setBody-eip.adoc
b/core/camel-core-engine/src/main/docs/modules/eips/pages/setBody-eip.adoc
index 6ccec590b102..4b398d2d11e3 100644
--- a/core/camel-core-engine/src/main/docs/modules/eips/pages/setBody-eip.adoc
+++ b/core/camel-core-engine/src/main/docs/modules/eips/pages/setBody-eip.adoc
@@ -77,8 +77,9 @@ YAML::
uri: direct:cheese
steps:
- setBody:
- simple:
- expression: Hello ${body}
+ expression:
+ simple:
+ expression: "Hello ${body}"
- to:
uri: log:hello
----
diff --git
a/core/camel-core-engine/src/main/docs/modules/eips/pages/setHeader-eip.adoc
b/core/camel-core-engine/src/main/docs/modules/eips/pages/setHeader-eip.adoc
index c1091c0bfde2..c24383594a7c 100644
--- a/core/camel-core-engine/src/main/docs/modules/eips/pages/setHeader-eip.adoc
+++ b/core/camel-core-engine/src/main/docs/modules/eips/pages/setHeader-eip.adoc
@@ -47,6 +47,23 @@ XML::
<to uri="direct:b"/>
</route>
----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:a
+ steps:
+ - setHeader:
+ name: myHeader
+ expression:
+ constant:
+ expression: test
+ - to:
+ uri: direct:b
+----
====
In the example, the header value is a
xref:components:languages:constant-language.adoc[constant].
@@ -85,6 +102,23 @@ XML::
<to uri="direct:b"/>
</route>
----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:a
+ steps:
+ - setHeader:
+ name: randomNumber
+ expression:
+ simple:
+ expression: "${random(1,100)}"
+ - to:
+ uri: direct:b
+----
====
See
xref:components:languages:jsonpath-language.adoc#_using_header_as_input[JSONPath]
for another example.
@@ -118,6 +152,23 @@ XML::
<to uri="direct:b"/>
</route>
----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:a
+ steps:
+ - setHeader:
+ name: foo
+ expression:
+ header:
+ expression: bar
+ - to:
+ uri: direct:b
+----
====
If you need to set several headers on the message, see
xref:eips:setHeaders-eip.adoc[Set Headers].
diff --git
a/dsl/camel-kamelet-main-support/src/main/java/org/apache/camel/main/stub/StubEipReifier.java
b/dsl/camel-kamelet-main-support/src/main/java/org/apache/camel/main/stub/StubEipReifier.java
index 5383cc71c261..c6622c94b7c9 100644
---
a/dsl/camel-kamelet-main-support/src/main/java/org/apache/camel/main/stub/StubEipReifier.java
+++
b/dsl/camel-kamelet-main-support/src/main/java/org/apache/camel/main/stub/StubEipReifier.java
@@ -26,6 +26,7 @@ import org.apache.camel.builder.ExpressionBuilder;
import org.apache.camel.builder.PredicateBuilder;
import org.apache.camel.model.BeanDefinition;
import org.apache.camel.model.KameletDefinition;
+import org.apache.camel.model.ScriptDefinition;
import org.apache.camel.model.ThrowExceptionDefinition;
import org.apache.camel.model.language.MethodCallExpression;
import org.apache.camel.processor.DisabledProcessor;
@@ -126,6 +127,20 @@ public class StubEipReifier {
return fac.createProcessor(camelContext, definitionName, args);
}
});
+
+ // stub programming language scripts
+ ProcessorReifier.registerReifier(ScriptDefinition.class,
+ (route, processorDefinition) -> {
+ if (processorDefinition instanceof ScriptDefinition sd) {
+ return new ProcessorReifier<>(route, sd) {
+ @Override
+ public Processor createProcessor() throws
Exception {
+ return new DisabledProcessor();
+ }
+ };
+ }
+ return null;
+ });
}
}