1
2
3
4
5
6
7 package org.mule.routing.outbound;
8
9 import org.mule.DefaultMuleEvent;
10 import org.mule.DefaultMuleMessage;
11 import org.mule.api.MessagingException;
12 import org.mule.api.MuleEvent;
13 import org.mule.api.MuleException;
14 import org.mule.api.MuleMessage;
15 import org.mule.api.routing.RoutingException;
16 import org.mule.api.transformer.Transformer;
17 import org.mule.api.transformer.TransformerException;
18 import org.mule.config.i18n.CoreMessages;
19
20
21
22
23
24
25 public class TransformerRouter extends AbstractOutboundRouter
26 {
27 private Transformer transformer;
28
29 @Override
30 public MuleEvent route(MuleEvent event) throws MessagingException
31 {
32 MuleMessage message = event.getMessage();
33
34 if (transformer != null)
35 {
36 try
37 {
38 Object payload = transformer.transform(message.getPayload());
39 message = new DefaultMuleMessage(payload, message, muleContext);
40 propagateMagicProperties(message, message);
41 }
42 catch (TransformerException e)
43 {
44 throw new RoutingException(CoreMessages.transformFailedBeforeFilter(), event,
45 routes.get(0), e);
46 }
47 }
48 return message == null ? null : new DefaultMuleEvent(message, event);
49 }
50
51 public boolean isMatch(MuleMessage message) throws MuleException
52 {
53 return true;
54 }
55
56 public Transformer getTransformer()
57 {
58 return transformer;
59 }
60
61 public void setTransformer(Transformer transformer)
62 {
63 this.transformer = transformer;
64 }
65 }
66