1
2
3
4
5
6
7 package org.mule.routing;
8
9 import org.mule.DefaultMessageCollection;
10 import org.mule.DefaultMuleEvent;
11 import org.mule.DefaultMuleMessage;
12 import org.mule.api.MuleContext;
13 import org.mule.api.MuleEvent;
14 import org.mule.api.MuleMessageCollection;
15 import org.mule.api.routing.RouterResultsHandler;
16 import org.mule.util.CollectionUtils;
17
18 import java.util.List;
19
20 import org.apache.commons.collections.Predicate;
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 public class DefaultRouterResultsHandler implements RouterResultsHandler
38 {
39 @SuppressWarnings(value = {"unchecked"})
40 public MuleEvent aggregateResults(final List<MuleEvent> results,
41 final MuleEvent previous,
42 MuleContext muleContext)
43 {
44 if (results == null)
45 {
46 return null;
47 }
48 else
49 {
50 List<MuleEvent> nonNullResults = (List<MuleEvent>) CollectionUtils.select(results,
51 new Predicate()
52 {
53 public boolean evaluate(Object object)
54 {
55 return object != null && ((MuleEvent) object).getMessage() != null;
56 }
57 });
58
59 if (nonNullResults.size() == 0)
60 {
61 return null;
62 }
63 else if (nonNullResults.size() == 1)
64 {
65 return nonNullResults.get(0);
66 }
67 else
68 {
69 return createMessageCollection(nonNullResults, previous, muleContext);
70 }
71 }
72 }
73
74 @SuppressWarnings("deprecation")
75 private MuleEvent createMessageCollection(final List<MuleEvent> nonNullResults,
76 final MuleEvent previous,
77 MuleContext muleContext)
78 {
79 MuleMessageCollection coll = new DefaultMessageCollection(muleContext);
80 for (MuleEvent event : nonNullResults)
81 {
82 coll.addMessage(event.getMessage());
83 }
84 ((DefaultMuleMessage) coll).copyInvocationProperties(previous.getMessage());
85 return new DefaultMuleEvent(coll, previous);
86 }
87 }