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>

Smooks Data Format Options

The Smooks dataformat supports 1 options, which are listed below.

Name Default Java Type Description

smooksConfig (common)

String

Required Path to the Smooks configuration file.