You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by "Christian Mueller (JIRA)" <ji...@apache.org> on 2010/05/30 13:21:52 UTC

[jira] Commented: (CAMEL-2761) Improve camel-smooks to support all features smooks provide

    [ https://issues.apache.org/activemq/browse/CAMEL-2761?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=59597#action_59597 ] 

Christian Mueller commented on CAMEL-2761:
------------------------------------------

My proposal, which I discuss with Tom Fennelly:

Here are my first thoughts:

1) How could Camel improve Smooks? What do you have in mind?

2)  How could Smooks improve Camel? Here are my ideas:

2a) Java Binding:

DataFormat smooksUnmarshal = new SmooksDataFormat("smooks-unmarshal-config.xml");
from("file://inbox")
.unmarshal(smooksUnmarshal) // source is a StreamSource, result is a JavaResult
.to("bean:orderEntry");

We could do this for CSV, EDI, XML, fixed length, YAML and JSON, could we?

But what is with marshaling? My understanding is Smooks "only" supports marshaling to XML. It is right? Do you plan also to support other formats like CSV, fixed length, ...? Or "only" with templating?

We could also provide marshaling functionality for this:

DataFormat smooksMarshal = new SmooksDataFormat("smooks-marshal-config.xml");
from("bean:orderEntry")
.unmarshal(smooksMarshal) // source is a JavaSource, result is a StreamResult
.to("file://outbox");

Make this sense?
This is also the solution for the current camel-smooks component: http://camel.apache.org/smooks.html

Please have a look on the attached SmooksDataFormat.java


2b) Transformation:
Could we express transformation as a sequence of unmarshal and marshal?
If not, I would propose a solution like the camel-xslt component: http://camel.apache.org/xslt.html

Than we could write a route like this:
from("file://inbox")
.to("smooks://path/to/smooks-config.xml") // source is a StreamSource, result is a StreamResult
.to("file://outbox");

or

Than we could write a route like this:
from("bean:orderEntry")
.to("smooks://path/to/smooks-config.xml") // source is a JavaSource, result is a JavaResult
.to("bean:orderStore");

With this solution it's also possible to handle Java Binding (2a)). But we have to know, what is the source we will receive (Java, Stream, ...) and what is the result (Java, Stream, ...). It is possible to "ask" the Smooks instance for that so that we know, which kind of source and result we have to provide in the filterSource method?

What do you think?

Regards,
Christian

> Improve camel-smooks to support all features smooks provide
> -----------------------------------------------------------
>
>                 Key: CAMEL-2761
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-2761
>             Project: Apache Camel
>          Issue Type: New Feature
>    Affects Versions: 2.4.0
>         Environment: All
>            Reporter: Christian Mueller
>            Assignee: Christian Mueller
>             Fix For: 2.4.0
>
>
> Provide a better integration between Camel and Smooks and support all features in Camel which Smooks provide. A good starting point is:
> http://blog.smooks.org/2010/02/22/apache-camel-smooks/

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.