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 8e2660bebdcd CAMEL-25866: docs - the pollEnrich customer file example
and the jsonpath lookup by a field come among the first two samples (#28145)
8e2660bebdcd is described below
commit 8e2660bebdcdc72d173ec9f39a7266ea0a94c39d
Author: Claus Ibsen <[email protected]>
AuthorDate: Tue Oct 20 12:34:20 2026 +0200
CAMEL-25866: docs - the pollEnrich customer file example and the jsonpath
lookup by a field come among the first two samples (#28145)
CAMEL-25866: docs - the pollEnrich customer file example and the jsonpath
lookup by a field come among the first two samples of their pages
camel_catalog_sample returns the first two samples of a page. The
pollEnrich example that reads the file of a
customer with noop=true and variableReceive was sample 5 of 5, and the
jsonpath lookup of one element by a field was
sample 5. The pollEnrich example now comes first in Poll Enrich with
Dynamic Endpoints, with why noop is needed, that
the variable is null when no file is found, and how to read its fields; the
jsonpath lookup comes second in Examples.
No example is removed.
Claude-Session: https://claude.ai/code/session_01STT6whBgK1AqsSsUKrnE8m
Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
---
.../camel/catalog/docs/jsonpath-language.adoc | 192 +++++++++++----------
.../apache/camel/catalog/docs/pollEnrich-eip.adoc | 102 ++++++-----
.../src/main/docs/jsonpath-language.adoc | 192 +++++++++++----------
.../docs/modules/eips/pages/pollEnrich-eip.adoc | 102 ++++++-----
.../dsl/jbang/core/commands/ai/eip-samples.json | 8 +-
5 files changed, 310 insertions(+), 286 deletions(-)
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/jsonpath-language.adoc
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/jsonpath-language.adoc
index 500876ac409b..1fb214c9fad5 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/jsonpath-language.adoc
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/jsonpath-language.adoc
@@ -141,6 +141,103 @@ YAML::
----
====
+To look up one element by a field, such as the stock item of a SKU, filter on
the field and set `resultType` to
+`java.util.Map` (or another non-collection type). A single match is then
returned as the element, and no match returns
+`null`, which the route answers as a 404. The `${header.sku}` in the
expression is
+<<_inline_simple_expressions,inline Simple>>:
+
+[tabs]
+====
+Java::
++
+[source,java]
+----
+from("direct:one-sku")
+ .setBody(constant("resource:file:stock.json"))
+ .setBody().jsonpath("$[?(@.sku == '${header.sku}')]", Map.class)
+ .choice()
+ .when(body().isNull())
+ .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(404))
+ .setBody(simple("unknown SKU ${header.sku}"))
+ .otherwise()
+ .marshal().json()
+ .end();
+----
+
+XML::
++
+[source,xml]
+----
+<route>
+ <from uri="direct:one-sku"/>
+ <setBody>
+ <constant>resource:file:stock.json</constant>
+ </setBody>
+ <setBody>
+ <jsonpath resultType="java.util.Map">$[?(@.sku ==
'${header.sku}')]</jsonpath>
+ </setBody>
+ <choice>
+ <when>
+ <simple>${body} == null</simple>
+ <setHeader name="CamelHttpResponseCode">
+ <constant>404</constant>
+ </setHeader>
+ <setBody>
+ <simple>unknown SKU ${header.sku}</simple>
+ </setBody>
+ </when>
+ <otherwise>
+ <marshal>
+ <json/>
+ </marshal>
+ </otherwise>
+ </choice>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:one-sku
+ steps:
+ - setBody:
+ expression:
+ constant:
+ expression: resource:file:stock.json
+ - setBody:
+ expression:
+ jsonpath:
+ expression: "$[?(@.sku == '${header.sku}')]"
+ resultType: java.util.Map
+ - choice:
+ when:
+ - expression:
+ simple:
+ expression: "${body} == null"
+ steps:
+ - setHeader:
+ name: CamelHttpResponseCode
+ expression:
+ constant:
+ expression: "404"
+ - setBody:
+ expression:
+ simple:
+ expression: "unknown SKU ${header.sku}"
+ otherwise:
+ steps:
+ - marshal:
+ json: {}
+----
+====
+
+NOTE: When the filter matches more than one element, a non-collection
`resultType` also returns `null`, so use
+this form only when at most one element can match. The `unpackArray` option
does not help here: it unpacks a
+single-element list, but leaves an empty list as an empty list.
+
=== Supported message body types
Camel JSONPath supports message body using the following types:
@@ -407,100 +504,7 @@ YAML::
====
When the filter matches on a unique key, such as the SKU, you can let JsonPath
return the element itself instead of a
-list: set `resultType` to `java.util.Map` (or another non-collection type). A
single match is then returned as the
-element, and no match returns `null`, so a `null` check replaces the size
check and the `${body[0]}`:
-
-[tabs]
-====
-Java::
-+
-[source,java]
-----
-from("direct:one-sku")
- .setBody(constant("resource:file:stock.json"))
- .setBody().jsonpath("$[?(@.sku == '${header.sku}')]", Map.class)
- .choice()
- .when(body().isNull())
- .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(404))
- .setBody(simple("unknown SKU ${header.sku}"))
- .otherwise()
- .marshal().json()
- .end();
-----
-
-XML::
-+
-[source,xml]
-----
-<route>
- <from uri="direct:one-sku"/>
- <setBody>
- <constant>resource:file:stock.json</constant>
- </setBody>
- <setBody>
- <jsonpath resultType="java.util.Map">$[?(@.sku ==
'${header.sku}')]</jsonpath>
- </setBody>
- <choice>
- <when>
- <simple>${body} == null</simple>
- <setHeader name="CamelHttpResponseCode">
- <constant>404</constant>
- </setHeader>
- <setBody>
- <simple>unknown SKU ${header.sku}</simple>
- </setBody>
- </when>
- <otherwise>
- <marshal>
- <json/>
- </marshal>
- </otherwise>
- </choice>
-</route>
-----
-
-YAML::
-+
-[source,yaml]
-----
-- route:
- from:
- uri: direct:one-sku
- steps:
- - setBody:
- expression:
- constant:
- expression: resource:file:stock.json
- - setBody:
- expression:
- jsonpath:
- expression: "$[?(@.sku == '${header.sku}')]"
- resultType: java.util.Map
- - choice:
- when:
- - expression:
- simple:
- expression: "${body} == null"
- steps:
- - setHeader:
- name: CamelHttpResponseCode
- expression:
- constant:
- expression: "404"
- - setBody:
- expression:
- simple:
- expression: "unknown SKU ${header.sku}"
- otherwise:
- steps:
- - marshal:
- json: {}
-----
-====
-
-NOTE: When the filter matches more than one element, a non-collection
`resultType` also returns `null`, so use
-this form only when at most one element can match. The `unpackArray` option
does not help here: it unpacks a
-single-element list, but leaves an empty list as an empty list.
+list, with `resultType` set to `java.util.Map`: see the lookup in
<<_examples,Examples>>.
You can turn off support for inlined Simple expression by setting the option
`allowSimple` to `false` as shown:
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/pollEnrich-eip.adoc
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/pollEnrich-eip.adoc
index ebb8726bc2cb..18e81feaba9f 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/pollEnrich-eip.adoc
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/pollEnrich-eip.adoc
@@ -123,7 +123,59 @@ YAML::
Both `enrich` and `pollEnrich` supports using dynamic uris computed based on
information from the current `Exchange`.
-For example to `pollEnrich` from an endpoint that uses a header to indicate a
SEDA queue name:
+For example, the body is an order as a Map, and the route reads the file of
its customer into the variable `customer`,
+so the order stays the body:
+
+[tabs]
+====
+Java::
++
+[source,java]
+----
+from("direct:order")
+
.pollEnrich().simple("file:customers?fileName=${body[customer]}.json&noop=true")
+ .timeout(5000).variableReceive("customer")
+ .log("Order ${body[orderId]} for customer ${variable.customer}");
+----
+
+XML::
++
+[source,xml]
+----
+<route>
+ <from uri="direct:order"/>
+ <pollEnrich timeout="5000" variableReceive="customer">
+
<simple>file:customers?fileName=${body[customer]}.json&noop=true</simple>
+ </pollEnrich>
+ <log message="Order ${body[orderId]} for customer ${variable.customer}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:order
+ steps:
+ - pollEnrich:
+ expression:
+ simple:
+ expression:
"file:customers?fileName=${body[customer]}.json&noop=true"
+ timeout: 5000
+ variableReceive: customer
+ - log:
+ message: "Order ${body[orderId]} for customer ${variable.customer}"
+----
+====
+
+`noop=true` leaves the customer file where it is: without it, the file is
moved into `customers/.camel` once it was
+read, and the next order of the same customer finds no file. When no file is
found within the timeout, the variable is
+`null`. The variable holds the content of the file as text: to read its
fields, unmarshal it, such as `unmarshal` with
+`json` and both `variableSend` and `variableReceive` set to `customer`, and
then `${variable.customer[name]}`.
+
+Or to `pollEnrich` from an endpoint that uses a header to indicate a SEDA
queue name:
[tabs]
====
@@ -331,52 +383,8 @@ message, and the consumer evaluates the `fileName` option
when it looks for the
* Any other `fileName` is evaluated on the message being enriched: its body,
headers, variables and exchange
properties.
-For example, the body is an order as a Map, and the route reads the file of
its customer into the variable `customer`,
-so the order stays the body:
-
-[tabs]
-====
-Java::
-+
-[source,java]
-----
-from("direct:order")
-
.pollEnrich().simple("file:customers?fileName=${body[customer]}.json&noop=true")
- .timeout(5000).variableReceive("customer")
- .log("Order ${body[orderId]} for customer ${variable.customer}");
-----
-
-XML::
-+
-[source,xml]
-----
-<route>
- <from uri="direct:order"/>
- <pollEnrich timeout="5000" variableReceive="customer">
-
<simple>file:customers?fileName=${body[customer]}.json&noop=true</simple>
- </pollEnrich>
- <log message="Order ${body[orderId]} for customer ${variable.customer}"/>
-</route>
-----
-
-YAML::
-+
-[source,yaml]
-----
-- route:
- from:
- uri: direct:order
- steps:
- - pollEnrich:
- expression:
- simple:
- expression:
"file:customers?fileName=${body[customer]}.json&noop=true"
- timeout: 5000
- variableReceive: customer
- - log:
- message: "Order ${body[orderId]} for customer ${variable.customer}"
-----
-====
+The example of the customer file in <<_poll_enrich_with_dynamic_endpoints,Poll
Enrich with Dynamic Endpoints>> uses a
+field of the body, `${body[customer]}`, in its `fileName`.
NOTE: Before Camel 4.24, `+${body}+` in the `fileName` was the file found, not
the message being enriched, and only the
headers, variables and exchange properties of the message could be used. With
an older version, put the value in a
diff --git a/components/camel-jsonpath/src/main/docs/jsonpath-language.adoc
b/components/camel-jsonpath/src/main/docs/jsonpath-language.adoc
index 500876ac409b..1fb214c9fad5 100644
--- a/components/camel-jsonpath/src/main/docs/jsonpath-language.adoc
+++ b/components/camel-jsonpath/src/main/docs/jsonpath-language.adoc
@@ -141,6 +141,103 @@ YAML::
----
====
+To look up one element by a field, such as the stock item of a SKU, filter on
the field and set `resultType` to
+`java.util.Map` (or another non-collection type). A single match is then
returned as the element, and no match returns
+`null`, which the route answers as a 404. The `${header.sku}` in the
expression is
+<<_inline_simple_expressions,inline Simple>>:
+
+[tabs]
+====
+Java::
++
+[source,java]
+----
+from("direct:one-sku")
+ .setBody(constant("resource:file:stock.json"))
+ .setBody().jsonpath("$[?(@.sku == '${header.sku}')]", Map.class)
+ .choice()
+ .when(body().isNull())
+ .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(404))
+ .setBody(simple("unknown SKU ${header.sku}"))
+ .otherwise()
+ .marshal().json()
+ .end();
+----
+
+XML::
++
+[source,xml]
+----
+<route>
+ <from uri="direct:one-sku"/>
+ <setBody>
+ <constant>resource:file:stock.json</constant>
+ </setBody>
+ <setBody>
+ <jsonpath resultType="java.util.Map">$[?(@.sku ==
'${header.sku}')]</jsonpath>
+ </setBody>
+ <choice>
+ <when>
+ <simple>${body} == null</simple>
+ <setHeader name="CamelHttpResponseCode">
+ <constant>404</constant>
+ </setHeader>
+ <setBody>
+ <simple>unknown SKU ${header.sku}</simple>
+ </setBody>
+ </when>
+ <otherwise>
+ <marshal>
+ <json/>
+ </marshal>
+ </otherwise>
+ </choice>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:one-sku
+ steps:
+ - setBody:
+ expression:
+ constant:
+ expression: resource:file:stock.json
+ - setBody:
+ expression:
+ jsonpath:
+ expression: "$[?(@.sku == '${header.sku}')]"
+ resultType: java.util.Map
+ - choice:
+ when:
+ - expression:
+ simple:
+ expression: "${body} == null"
+ steps:
+ - setHeader:
+ name: CamelHttpResponseCode
+ expression:
+ constant:
+ expression: "404"
+ - setBody:
+ expression:
+ simple:
+ expression: "unknown SKU ${header.sku}"
+ otherwise:
+ steps:
+ - marshal:
+ json: {}
+----
+====
+
+NOTE: When the filter matches more than one element, a non-collection
`resultType` also returns `null`, so use
+this form only when at most one element can match. The `unpackArray` option
does not help here: it unpacks a
+single-element list, but leaves an empty list as an empty list.
+
=== Supported message body types
Camel JSONPath supports message body using the following types:
@@ -407,100 +504,7 @@ YAML::
====
When the filter matches on a unique key, such as the SKU, you can let JsonPath
return the element itself instead of a
-list: set `resultType` to `java.util.Map` (or another non-collection type). A
single match is then returned as the
-element, and no match returns `null`, so a `null` check replaces the size
check and the `${body[0]}`:
-
-[tabs]
-====
-Java::
-+
-[source,java]
-----
-from("direct:one-sku")
- .setBody(constant("resource:file:stock.json"))
- .setBody().jsonpath("$[?(@.sku == '${header.sku}')]", Map.class)
- .choice()
- .when(body().isNull())
- .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(404))
- .setBody(simple("unknown SKU ${header.sku}"))
- .otherwise()
- .marshal().json()
- .end();
-----
-
-XML::
-+
-[source,xml]
-----
-<route>
- <from uri="direct:one-sku"/>
- <setBody>
- <constant>resource:file:stock.json</constant>
- </setBody>
- <setBody>
- <jsonpath resultType="java.util.Map">$[?(@.sku ==
'${header.sku}')]</jsonpath>
- </setBody>
- <choice>
- <when>
- <simple>${body} == null</simple>
- <setHeader name="CamelHttpResponseCode">
- <constant>404</constant>
- </setHeader>
- <setBody>
- <simple>unknown SKU ${header.sku}</simple>
- </setBody>
- </when>
- <otherwise>
- <marshal>
- <json/>
- </marshal>
- </otherwise>
- </choice>
-</route>
-----
-
-YAML::
-+
-[source,yaml]
-----
-- route:
- from:
- uri: direct:one-sku
- steps:
- - setBody:
- expression:
- constant:
- expression: resource:file:stock.json
- - setBody:
- expression:
- jsonpath:
- expression: "$[?(@.sku == '${header.sku}')]"
- resultType: java.util.Map
- - choice:
- when:
- - expression:
- simple:
- expression: "${body} == null"
- steps:
- - setHeader:
- name: CamelHttpResponseCode
- expression:
- constant:
- expression: "404"
- - setBody:
- expression:
- simple:
- expression: "unknown SKU ${header.sku}"
- otherwise:
- steps:
- - marshal:
- json: {}
-----
-====
-
-NOTE: When the filter matches more than one element, a non-collection
`resultType` also returns `null`, so use
-this form only when at most one element can match. The `unpackArray` option
does not help here: it unpacks a
-single-element list, but leaves an empty list as an empty list.
+list, with `resultType` set to `java.util.Map`: see the lookup in
<<_examples,Examples>>.
You can turn off support for inlined Simple expression by setting the option
`allowSimple` to `false` as shown:
diff --git
a/core/camel-core-engine/src/main/docs/modules/eips/pages/pollEnrich-eip.adoc
b/core/camel-core-engine/src/main/docs/modules/eips/pages/pollEnrich-eip.adoc
index ebb8726bc2cb..18e81feaba9f 100644
---
a/core/camel-core-engine/src/main/docs/modules/eips/pages/pollEnrich-eip.adoc
+++
b/core/camel-core-engine/src/main/docs/modules/eips/pages/pollEnrich-eip.adoc
@@ -123,7 +123,59 @@ YAML::
Both `enrich` and `pollEnrich` supports using dynamic uris computed based on
information from the current `Exchange`.
-For example to `pollEnrich` from an endpoint that uses a header to indicate a
SEDA queue name:
+For example, the body is an order as a Map, and the route reads the file of
its customer into the variable `customer`,
+so the order stays the body:
+
+[tabs]
+====
+Java::
++
+[source,java]
+----
+from("direct:order")
+
.pollEnrich().simple("file:customers?fileName=${body[customer]}.json&noop=true")
+ .timeout(5000).variableReceive("customer")
+ .log("Order ${body[orderId]} for customer ${variable.customer}");
+----
+
+XML::
++
+[source,xml]
+----
+<route>
+ <from uri="direct:order"/>
+ <pollEnrich timeout="5000" variableReceive="customer">
+
<simple>file:customers?fileName=${body[customer]}.json&noop=true</simple>
+ </pollEnrich>
+ <log message="Order ${body[orderId]} for customer ${variable.customer}"/>
+</route>
+----
+
+YAML::
++
+[source,yaml]
+----
+- route:
+ from:
+ uri: direct:order
+ steps:
+ - pollEnrich:
+ expression:
+ simple:
+ expression:
"file:customers?fileName=${body[customer]}.json&noop=true"
+ timeout: 5000
+ variableReceive: customer
+ - log:
+ message: "Order ${body[orderId]} for customer ${variable.customer}"
+----
+====
+
+`noop=true` leaves the customer file where it is: without it, the file is
moved into `customers/.camel` once it was
+read, and the next order of the same customer finds no file. When no file is
found within the timeout, the variable is
+`null`. The variable holds the content of the file as text: to read its
fields, unmarshal it, such as `unmarshal` with
+`json` and both `variableSend` and `variableReceive` set to `customer`, and
then `${variable.customer[name]}`.
+
+Or to `pollEnrich` from an endpoint that uses a header to indicate a SEDA
queue name:
[tabs]
====
@@ -331,52 +383,8 @@ message, and the consumer evaluates the `fileName` option
when it looks for the
* Any other `fileName` is evaluated on the message being enriched: its body,
headers, variables and exchange
properties.
-For example, the body is an order as a Map, and the route reads the file of
its customer into the variable `customer`,
-so the order stays the body:
-
-[tabs]
-====
-Java::
-+
-[source,java]
-----
-from("direct:order")
-
.pollEnrich().simple("file:customers?fileName=${body[customer]}.json&noop=true")
- .timeout(5000).variableReceive("customer")
- .log("Order ${body[orderId]} for customer ${variable.customer}");
-----
-
-XML::
-+
-[source,xml]
-----
-<route>
- <from uri="direct:order"/>
- <pollEnrich timeout="5000" variableReceive="customer">
-
<simple>file:customers?fileName=${body[customer]}.json&noop=true</simple>
- </pollEnrich>
- <log message="Order ${body[orderId]} for customer ${variable.customer}"/>
-</route>
-----
-
-YAML::
-+
-[source,yaml]
-----
-- route:
- from:
- uri: direct:order
- steps:
- - pollEnrich:
- expression:
- simple:
- expression:
"file:customers?fileName=${body[customer]}.json&noop=true"
- timeout: 5000
- variableReceive: customer
- - log:
- message: "Order ${body[orderId]} for customer ${variable.customer}"
-----
-====
+The example of the customer file in <<_poll_enrich_with_dynamic_endpoints,Poll
Enrich with Dynamic Endpoints>> uses a
+field of the body, `${body[customer]}`, in its `fileName`.
NOTE: Before Camel 4.24, `+${body}+` in the `fileName` was the file found, not
the message being enriched, and only the
headers, variables and exchange properties of the message could be used. With
an older version, put the value in a
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/generated/resources/org/apache/camel/dsl/jbang/core/commands/ai/eip-samples.json
b/dsl/camel-jbang/camel-jbang-core/src/generated/resources/org/apache/camel/dsl/jbang/core/commands/ai/eip-samples.json
index e3e762268884..e97a971eb658 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/generated/resources/org/apache/camel/dsl/jbang/core/commands/ai/eip-samples.json
+++
b/dsl/camel-jbang/camel-jbang-core/src/generated/resources/org/apache/camel/dsl/jbang/core/commands/ai/eip-samples.json
@@ -870,19 +870,19 @@
},
{
"source": "pollEnrich-eip.adoc",
- "yaml": "- route:\n from:\n uri: direct:start\n steps:\n
- pollEnrich:\n expression:\n simple:\n
expression: \"seda:${header.queueName}\"\n - to:\n uri:
direct:result\n"
+ "yaml": "- route:\n from:\n uri: direct:order\n steps:\n
- pollEnrich:\n expression:\n simple:\n
expression: \"file:customers?fileName=${body[customer]}.json&noop=true\"\n
timeout: 5000\n variableReceive: customer\n - log:\n
message: \"Order ${body[orderId]} for customer
${variable.customer}\"\n"
},
{
"source": "pollEnrich-eip.adoc",
- "yaml": "- route:\n from:\n uri: direct:start\n steps:\n
- pollEnrich:\n aggregationStrategy: myStrategy\n
timeout: 10000\n expression:\n constant:\n
expression: file:inbox?fileName=data.txt\n - to:\n uri:
mock:result\n"
+ "yaml": "- route:\n from:\n uri: direct:start\n steps:\n
- pollEnrich:\n expression:\n simple:\n
expression: \"seda:${header.queueName}\"\n - to:\n uri:
direct:result\n"
},
{
"source": "pollEnrich-eip.adoc",
- "yaml": "- rest:\n path: \/report\n get:\n - path:
\/{id}\/report\n to:\n uri: direct:report\n\n- route:\n
from:\n uri: direct:report\n steps:\n - pollEnrich:\n
expression:\n constant:\n expression:
\"aws-s3:xavier-dev?amazonS3Client=#s3client&deleteAfterRead=false&fileName=report-file.pdf\"\n"
+ "yaml": "- route:\n from:\n uri: direct:start\n steps:\n
- pollEnrich:\n aggregationStrategy: myStrategy\n
timeout: 10000\n expression:\n constant:\n
expression: file:inbox?fileName=data.txt\n - to:\n uri:
mock:result\n"
},
{
"source": "pollEnrich-eip.adoc",
- "yaml": "- route:\n from:\n uri: direct:order\n steps:\n
- pollEnrich:\n expression:\n simple:\n
expression: \"file:customers?fileName=${body[customer]}.json&noop=true\"\n
timeout: 5000\n variableReceive: customer\n - log:\n
message: \"Order ${body[orderId]} for customer
${variable.customer}\"\n"
+ "yaml": "- rest:\n path: \/report\n get:\n - path:
\/{id}\/report\n to:\n uri: direct:report\n\n- route:\n
from:\n uri: direct:report\n steps:\n - pollEnrich:\n
expression:\n constant:\n expression:
\"aws-s3:xavier-dev?amazonS3Client=#s3client&deleteAfterRead=false&fileName=report-file.pdf\"\n"
}
],
"process": [