1
2
3
4
5
6
7
8
9
10
11 package org.mule.providers.udp;
12
13 import org.mule.impl.ThreadSafeAccess;
14 import org.mule.providers.AbstractMessageAdapter;
15 import org.mule.umo.provider.MessageTypeNotSupportedException;
16
17 import java.net.DatagramPacket;
18 import java.net.InetAddress;
19
20
21
22
23
24 public class UdpMessageAdapter extends AbstractMessageAdapter
25 {
26
27
28
29 private static final long serialVersionUID = -7767141617682012504L;
30
31 public static final String ADDRESS_PROPERTY = "packet.address";
32 public static final String PORT_PROPERTY = "packet.port";
33
34 private byte[] message;
35
36 public UdpMessageAdapter(Object message) throws MessageTypeNotSupportedException
37 {
38 if (message instanceof DatagramPacket)
39 {
40 DatagramPacket dp = (DatagramPacket)message;
41 this.message = new byte[dp.getLength()];
42 System.arraycopy(dp.getData(), 0, this.message, 0, dp.getLength());
43
44 InetAddress address = dp.getAddress();
45 if (address != null)
46 {
47 setProperty(ADDRESS_PROPERTY, address);
48 }
49
50 setProperty(PORT_PROPERTY, new Integer(dp.getPort()));
51 }
52 else
53 {
54 throw new MessageTypeNotSupportedException(message, getClass());
55 }
56 }
57
58 protected UdpMessageAdapter(UdpMessageAdapter template)
59 {
60 super(template);
61 message = template.message;
62 }
63
64
65
66
67
68
69
70
71
72 public String getPayloadAsString(String encoding) throws Exception
73 {
74 return new String(message, encoding);
75
76 }
77
78 public byte[] getPayloadAsBytes() throws Exception
79 {
80 return message;
81 }
82
83 public Object getPayload()
84 {
85 return message;
86 }
87
88 public ThreadSafeAccess newThreadCopy()
89 {
90 return new UdpMessageAdapter(this);
91 }
92
93 }