1
2
3
4
5
6
7
8
9
10
11 package org.mule.transport.udp;
12
13 import org.mule.DefaultMuleMessage;
14 import org.mule.api.MuleContext;
15 import org.mule.transport.AbstractMuleMessageFactory;
16
17 import java.net.DatagramPacket;
18 import java.net.InetAddress;
19
20 public class UdpMuleMessageFactory extends AbstractMuleMessageFactory
21 {
22 public UdpMuleMessageFactory(MuleContext context)
23 {
24 super(context);
25 }
26
27 @Override
28 protected Class<?>[] getSupportedTransportMessageTypes()
29 {
30 return new Class[] { DatagramPacket.class };
31 }
32
33 @Override
34 protected Object extractPayload(Object transportMessage, String encoding) throws Exception
35 {
36 DatagramPacket packet = (DatagramPacket) transportMessage;
37
38 int length = packet.getLength();
39 byte[] payload = new byte[length];
40 System.arraycopy(packet.getData(), 0, payload, 0, length);
41
42 return payload;
43 }
44
45 @Override
46 protected void addProperties(DefaultMuleMessage message, Object transportMessage) throws Exception
47 {
48 super.addProperties(message, transportMessage);
49
50 DatagramPacket packet = (DatagramPacket) transportMessage;
51
52 InetAddress address = packet.getAddress();
53 if (address != null)
54 {
55 message.setOutboundProperty(UdpConnector.ADDRESS_PROPERTY, address);
56 }
57
58 message.setOutboundProperty(UdpConnector.PORT_PROPERTY, Integer.valueOf(packet.getPort()));
59 }
60 }