2. • Transformers convert message payloads to formats expected by their destinations
• A Transformer prepares a message to be processed through a Mule flow by enhancing or altering the
message header or message payload
• For example, if the message source that triggers your flow receives data in XML format, but a
downstream message processor requires JSON-formatted data
• one or more transformers positioned between the message source and the message processor can achieve
the necessary translation
5. Creating Custom Transformers
1. Use a Transformer Annotation on a method.
2. The traditional Mule way of creating custom transformers by extending AbstractTransformer
custom transformer is a user-defined transformer class that implements org.mule.api.transformer.Transformer.
Your class can extend AbstractTransformer or AbstractMessageTransform
There are two ways to create a transformer.
The transformer is then configured as follows:
(OR)
6. @ContainsTransformerMethods // since Mule 3.0.1
public class MyTransformers {
@Transformer
public URL stringToURL(String string) throws MalformedURLException {
return new java.net.URL(string);
}
@Transformer
public List<URL> stringsToURLs(String string) throws MalformedURLException {
List<URL urls = new ArrayList<URL>();
for (StringTokenizer tokenizer = new StringTokenizer(string); tokenizer.hasMoreTokens();)
{
urls.add(new URL(tokenizer.nextToken())); }
return urls;
}
}
@Transformer Annotation
7. public class HelloWorldTransformer extends AbstractMessageTransformer{
public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException {
@SuppressWarnings("unchecked")
List<employee> employee= (List<employee>) message.getPayload();
message.setOutboundProperty("a", "Hello sai");
for ( employee employee1 : employee) {
System.out.println(employee1.getEid());
System.out.println(employee1.getEmployeename());
System.out.println("******");
if (employee1.getEid()==1) {
System.out.println("i am first variable......");
message.setOutboundProperty("a", employee1.getEid());
}
}
message.setOutboundProperty("b", message.getPayload());
message.setPayload(employee);
return employee;
}
}
-- For example, to make the helloWorldTransformer
discoverable, you would define it as follows: