1
2
3
4
5
6
7
8
9
10
11 package org.mule.providers.jbi.components;
12
13 import org.mule.umo.transformer.TransformerException;
14 import org.mule.umo.transformer.UMOTransformer;
15
16 import javax.jbi.messaging.InOnly;
17 import javax.jbi.messaging.InOut;
18 import javax.jbi.messaging.MessageExchange;
19 import javax.jbi.messaging.MessagingException;
20 import javax.jbi.messaging.NormalizedMessage;
21 import javax.xml.transform.Source;
22
23
24
25
26 public class TransformerComponent extends AbstractJbiComponent
27 {
28
29 protected UMOTransformer transformer = null;
30
31 public void onMessage(MessageExchange messageExchange, NormalizedMessage message)
32 throws MessagingException
33 {
34 if (messageExchange.getRole() == MessageExchange.Role.PROVIDER)
35 {
36 return;
37 }
38 NormalizedMessage in = messageExchange.getMessage("in");
39
40 try
41 {
42 NormalizedMessage out = messageExchange.createMessage();
43 transform(messageExchange, in, out);
44
45 if (messageExchange instanceof InOut)
46 {
47 messageExchange.setMessage(out, OUT);
48 }
49 else
50 {
51 InOnly outExchange = exchangeFactory.createInOnlyExchange();
52 outExchange.setInMessage(out);
53 deliveryChannel.sendSync(outExchange);
54 }
55 done(messageExchange);
56 }
57 catch (Exception e)
58 {
59 error(messageExchange, e);
60 }
61 }
62
63 protected void transform(MessageExchange exchange, NormalizedMessage in, NormalizedMessage out)
64 throws TransformerException, MessagingException
65 {
66 Object result = transformer.transform(in.getContent());
67 if (result instanceof Source)
68 {
69 out.setContent((Source)result);
70 }
71 else
72 {
73 throw new UnsupportedOperationException(
74 "Support for Source transformation is not yet implemented");
75 }
76 }
77 }