7
Mule ESB: DataWeave xml input to Java Object example

Mule esb

Embed Size (px)

Citation preview

Mule ESB: DataWeave

xml input to Java Object example

This tutorial explains how to develop a DataWeave transformation from XML to Java Object.

Pre-requisite:• Anypoint Studio 5.2.0• Mule ESB Runtime 3.7.1• xml input files.

Input XML File

<user> <name>Annie</name> <lastName>Point</lastName></user>

Mule Flow

Mule Source <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/> <flow name="testweaveFlow"> <http:listener config-ref="HTTP_Listener_Configuration" path="/" metadata:id="cab0526f-779e-427c-9a33-be44f9b12696" doc:name="HTTP"/> <dw:transform-message doc:name="Transform Message"> <dw:input-payload doc:sample="json.json"/> <dw:set-payload><![CDATA[%dw 1.0%type user = :object { class: "testweave.User" } %output application/java ---{ firstName: payload.user.name, lastName: payload.user.lastName} as :user]]></dw:set-payload> </dw:transform-message> <byte-array-to-string-transformer doc:name="Byte Array to String"/> </flow>

In the transform code I created the Object type in the header

“ %type user = :object { class: "testweave.User"} ”

And the payload of the transform is converted to User Object using the transform logic as below.

{ firstName: payload.user.name, lastName: payload.user.lastName} as :user

DataWeave

User.javapackage testweave; public class User { 

private String firstName;private String lastName;

 public String getFirstName() {

return firstName;}

 public void setFirstName(String firstName) {

this.firstName = firstName;}

 public String getLastName() {

return lastName;}

 public void setLastName(String lastName) {

this.lastName = lastName;}

 @Overridepublic String toString() {

// TODO Auto-generated method stubreturn this.firstName+" "+this.lastName;

}

}