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