Hello List,
Tom Fennelly, Daniel Bevenius (both are deeply involved in the development of Smooks) and me working together to improve the existing integration between Camel and Smooks (
http://www.smooks.org). We start this thread to:
- help us to understand the other framework a bit better
- discuss how a good integration should looks like
- figure out which functionality Smooks provide and which functionality Camel already provides (by other Camel components)
- vote for/prioritize features
- request features we forgot
The current camel-smooks component allows "only" unmarshaling EDI messages.
Smooks provides the following features (as I know - Tom, Daniel: please update if I forgot a feature):
- Java Binding
- Transformation
- Routing
- Validation
- Enrichment
- Splitting
- Connectivity to File, JMS, Database
Let's talk about each of these functionality in detail.
- Java Binding
Java binding means we receive an input which is not a java bean (could be CSV, EDI, XML, ..) and we return a java bean, populated with the read data. In Camel, this could be implemented as a Camel data format (or component or processor). Camel already provides java binding for:
- CSV by csv data format, bindy data format and flatpack data format
- fix length by bindy data format and flatpack data format
- XML by jaxb data format, castor data format, xstream data format and xmlBeans data format
- EDI edi data format, flatpack data format
- FIX bindy data format
- JSON json data format
Camel-smooks could provide java binding for:
- EDI (already available in camel-smooks), CSV, XML, fix length and JSON
- Transformation
Transformation means from java beans to to none java beans (XML, CSV, EDI, ...) (the data format marshaling functionality) and from none java beans representation to another none java beans representation (e.g. from CSV to XML). Camel already provides transformation for:
- XML to XML, CSV, ... by the camel xslt component
- different input formats to different output formats by combining different data formats (see before).
- java beans to XXX by the camel velocity component, the camel freemaker template component and the camel stringtemplate component
Camel-smooks could provide transformation for EDI, CSV, XML, fix length and JSON
- Routing
Camel already provides routing functionality by it's implemented enterprise integration patterns.
In my opinion, this feature is more interesting for users which are familiar with Smooks but less familiar with Camel.
- Validation
Camel already provides validation functionality for XML messages (XML schema or RelaxNG validation), Java beans (via JSR 303) and regular expressions (for String payloads and message headers).
In my opinion, this feature is more interesting for users which are familiar with Smooks but less familiar with Camel.
- Enrichment
Camel already provides enrichment functionality with a custom processor implementation or the enrich DSL.
In my opinion, this feature is more interesting for users which are familiar with Smooks but less familiar with Camel.
- Splitting
Camel already provides splitting functionality in the Java and XML DSL. It's possible to define the split token or provide a bean which splits the body in they individual pieces. Camel also provides a streaming mode for big messages and an aggregation strategy to bring the individual results together.
In my opinion, this feature is more interesting for users which are familiar with Smooks but less familiar with Camel.
- Connectivity to File, JMS, Database
Camel already provides connectivity to these protocols by camel components.
In my opinion, this feature is more interesting for users which are familiar with Smooks but less familiar with Camel.
Looking forward for your comments,
Christian