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