1
2
3
4
5
6
7 package org.mule.routing;
8
9 import org.mule.DefaultMuleMessage;
10 import org.mule.api.MuleEvent;
11 import org.mule.api.MuleMessage;
12 import org.mule.config.i18n.CoreMessages;
13
14 import java.util.LinkedList;
15 import java.util.List;
16 import java.util.Map;
17 import java.util.Set;
18 import java.util.Map.Entry;
19
20
21
22
23
24
25
26
27
28
29
30 public class MapSplitter extends AbstractSplitter
31 {
32 public static String MAP_ENTRY_KEY = "key";
33
34 protected List<MuleMessage> splitMessage(MuleEvent event)
35 {
36 MuleMessage message = event.getMessage();
37 if (message.getPayload() instanceof Map<?, ?>)
38 {
39 List<MuleMessage> list = new LinkedList<MuleMessage>();
40 Set<Map.Entry<?, ?>> set = ((Map) message.getPayload()).entrySet();
41 for (Entry<?, ?> entry : set)
42 {
43 MuleMessage splitMessage = new DefaultMuleMessage(entry.getValue(), muleContext);
44 splitMessage.setInvocationProperty(MAP_ENTRY_KEY, entry.getKey());
45 list.add(splitMessage);
46 }
47 return list;
48 }
49 else
50 {
51 throw new IllegalArgumentException(CoreMessages.objectNotOfCorrectType(
52 message.getPayload().getClass(), Map.class).getMessage());
53 }
54 }
55 }