Hi Lakmali,

Great job in getting all the Smooks features work with the mediator! ..
Please integrate all these feature to the trunk, and update the samples to
demonstrate the new functionalities. A small comment on the JPA
integration, use the attribute name "persistence-unit" to keep the naming
scheme consistent.

Cheers,
Anjana.

On Mon, Mar 12, 2012 at 11:06 AM, Lakmali Baminiwatta <[email protected]>wrote:

> Forwarding to [email protected].
>
>
> ---------- Forwarded message ----------
> From: Lakmali Baminiwatta <[email protected]>
> Date: Mon, Mar 12, 2012 at 10:35 AM
> Subject: ESB Smooks Mediator Improvements Summary
> To: [email protected]
>
>
> Hi all,
>
> I have been working on Improving ESB Smooks Mediator to support Main
> Smooks Features as stated in [1]. Most of the features were able to be
> executed on current Smooks mediator without any modifications. So for those
> features I wrote some sample services and tested them. Here are the list of
> those features.
>
> 1. Transformation - XML, CSV, EDI to XML
> 2. Java Binding - Bind input message into Java object models and use them
> in templating, database routing, etc.
> 3. Message Enrichment - routing input message from supported datasource to
> a database
> 4. Templating - Freemarker Templating and XSL Templating can be applied to
> input messages to do the followings
>     - Fragment based transformation
>     - Generate Split message Fragments
> 5. Scripting - Groovy scripting can be applied to messages to process and
> do the necessary changes to the message elements
> 6. Combine - Perform ETL operatons by,
>     - Extracting data from multiple sources (CSV, EDI, XML)
>     - Transforming to required format (Readers[XML, CSV, EDI Readers],
> Templating, Scripting)
>     - Routing to the endpoints (Database, Files, ESB)
>
> Further for performing following three features I had to do improvements
> to the Smooks mediator.
>
> 7. Huge Message Processing
>
> Processing large messages requires streaming from the MessageContext to
> the mediator which is not a feature of the current Smooks mediator.
> Therefore I did the necessary improvements to support streaming inside the
> mediator.
>
> Input Type :- Text
>     Axiom API supports streaming of text nodes that are children of a
> given element.
> Input Type :- XML
>     Since Axiom API does not support streaming XML events to an
> InputStream, I implemented a way to stream xml events from the OMElement.
>
> I have tested the improved Smooks Mediator for large input messages of XML
> & Text. ESB reads the input file through VFS transport. Then Smook mediator
> split the message, apply freemarker template, and route to file locations.
> So the large message is split out, and each split part is written into
> separate files. Also the message can be routed to databases where each
> split message is a single record.
>
>
> 8. Java Resulting
>
> Smooks has the ability to return the content of the bean context (where
> every java bean created is registered under beanId) after the filtering
> process. This result is an org.milyn.delivery.java.JavaResult object whose
> beans can be retrieved by beanIds. I did the necessary changes to the
> Smooks mediator to bind the Smooks Java Result as a property, to the
> MessageContext. Now the Smooks mediator has new output type 'Java'. With
> this improvement mediators followed by Smooks Mediator can retrieve the
> Java object from the MessageContext. I tested this scenario through a
> custom mediator which get the property set by Smooks Mediator and retrieve
> the bean by beanId.
>
>         <smooks config-key="smooks-key">
>                     <input type="xml"/>
>                     <output type="java" property="order"/>
>                 </smooks>
>
> So followed mediators can retireve the bean values as,
>
> JavaResult result = (JavaResult)synCtx.getProperty("order");
> Order order = (Order)result.getBean("order");
>
> 9. Entity Persistent Framework support - JPA
>
> Smooks support using several Entity Persistence Providers such as JPA,
> Hibernate. Executing JPA with Smooks require initializing an entity manager
> for defined persistence unit (in Persistence.xml) and stating a transaction
> before executing smooks filtering. When improving Smooks mediator to
> perform those an issue encountered in finding the persistence provider
> (Hibernate-Entity manager in this case) and persistence.xml even though
> necessary jars were placed inside ESB repository/components/lib. As a
> workaround I found the solution as to place the Persistence Provider jar
> and the jar containing Entity classes with the Persistence.xml to be placed
> inside outer lib folder (They need to be inside repository/components/lib
> as well).
>
> Now smooks mediator can be configured with persistence-unit attribute
> which represent the persistence unit name defined inside Persistence.xml.
>
>     <smooks config-key="smooks-key" persistence_unit="db">
>         <input type="xml" />
>         <output type="xml"/>
>     </smooks>
>
> So I have completed the implementation of improvements to Smooks Mediator
> for supporting the main features provided by Smooks. Any suggestions or
> comments are really appreciated.
>
> [1]
> http://www.smooks.org/mediawiki/index.php?title=V1.5:Smooks_v1.5_User_Guide
> <http://www.smooks.org/mediawiki/index.php?title=V1.5:Smooks_v1.5_User_Guide>
>
> Thanks,
> Lakmali
>
> --
> Lakmali Baminiwatta*
> *
> Software Engineer
> WSO2, Inc.: http://wso2.com
> lean.enterprise.middleware
>
>  *
> *
>
>
>
>
> --
> Lakmali Baminiwatta*
> *
> Software Engineer
> WSO2, Inc.: http://wso2.com
> lean.enterprise.middleware
> mobile:  +94 71 2335936
> *
> *
>
>
> _______________________________________________
> Dev mailing list
> [email protected]
> http://wso2.org/cgi-bin/mailman/listinfo/dev
>
>


-- 
*Anjana Fernando*
Senior Software Engineer
WSO2 Inc. | http://wso2.com
lean . enterprise . middleware
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to