1
2
3
4
5
6
7
8
9
10
11 package org.mule.transport.xmpp.transformers;
12
13 import org.mule.api.MuleMessage;
14 import org.mule.api.transformer.TransformerException;
15 import org.mule.transformer.AbstractMessageAwareTransformer;
16 import org.mule.transport.xmpp.XmppConnector;
17
18 import java.util.Iterator;
19
20 import org.jivesoftware.smack.packet.Message;
21 import org.jivesoftware.smack.packet.XMPPError;
22
23
24
25
26 public class ObjectToXmppPacket extends AbstractMessageAwareTransformer
27 {
28 public ObjectToXmppPacket()
29 {
30 this.registerSourceType(String.class);
31 this.registerSourceType(Message.class);
32 setReturnClass(Message.class);
33 }
34
35 public Object transform(MuleMessage msg, String outputEncoding) throws TransformerException
36 {
37 Object src = msg.getPayload();
38
39
40
41 if (src instanceof Message)
42 {
43 return src;
44 }
45
46 Message result = new Message();
47
48 if (msg.getExceptionPayload() != null)
49 {
50 result.setError(new XMPPError(503, msg.getExceptionPayload().getMessage()));
51 }
52
53 for (Iterator iterator = msg.getPropertyNames().iterator(); iterator.hasNext();)
54 {
55 String name = (String) iterator.next();
56 if (name.equals(XmppConnector.XMPP_THREAD))
57 {
58 result.setThread((String) msg.getProperty(name));
59 }
60 else if (name.equals(XmppConnector.XMPP_SUBJECT))
61 {
62 result.setSubject((String) msg.getProperty(name));
63 }
64 else if (name.equals(XmppConnector.XMPP_FROM))
65 {
66 result.setFrom((String) msg.getProperty(name));
67 }
68 else if (name.equals(XmppConnector.XMPP_TO))
69 {
70 result.setTo((String) msg.getProperty(name));
71 }
72 else
73 {
74 result.setProperty(name, msg.getProperty(name));
75 }
76 }
77
78
79
80 result.setBody((String) src);
81
82 return result;
83 }
84 }