Smooks
Since Camel 4.9
The Smooks Data Format uses Smooks to transform from one data format to another and back again. A configuration for a Smooks Data Format should not allocate system resources because the data format does not close those resources. Use this data format when you are primarily interested in transformation and binding; not other Smooks features like routing. The latter should be done with the Smooks component .
Maven users will need to add the following
dependency to their
pom.xml
for
this data format:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-smooks</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
Usage
Below is an example of using the Smooks Data
Format to unmarshal a CSV into a
java.util.List
of
org.smooks.example.Customer
instances:
-
Java
-
YAML
from("direct:unmarshal")
.unmarshal().smooks("csv-smooks-unmarshal-config.xml")
.log("Unmarshalled customers: ${body}");
- from:
uri: direct:unmarshal
steps:
- unmarshal:
smooks:
smooksConfig: csv-smooks-unmarshal-config.xml
- log: "Unmarshalled customers: ${body}"
The Smooks configuration in
csv-smooks-unmarshal-config.xml
is as follows:
<smooks-resource-list xmlns="https://www.smooks.org/xsd/smooks-2.0.xsd"
xmlns:core="https://www.smooks.org/xsd/smooks/smooks-core-1.6.xsd"
xmlns:csv="https://www.smooks.org/xsd/smooks/csv-1.7.xsd">
<core:exports>
<core:result type="org.smooks.io.sink.JavaSink" extract="result"/>
</core:exports>
<csv:reader fields="firstName,lastName,gender,age,country">
<csv:listBinding beanId="result" class="org.smooks.example.Customer"/>
</csv:reader>
</smooks-resource-list>