1
2
3
4
5
6
7 package org.mule.routing.correlation;
8
9 import org.mule.DefaultMuleEvent;
10 import org.mule.DefaultMuleMessage;
11 import org.mule.api.MuleContext;
12 import org.mule.api.MuleEvent;
13 import org.mule.routing.AggregationException;
14 import org.mule.routing.EventGroup;
15 import org.mule.routing.Resequencer;
16
17 import java.util.Arrays;
18 import java.util.Comparator;
19
20
21
22
23
24
25
26 public class ResequenceCorrelatorCallback extends CollectionCorrelatorCallback
27 {
28 protected Comparator<MuleEvent> eventComparator;
29
30 public ResequenceCorrelatorCallback(Comparator<MuleEvent> eventComparator, MuleContext muleContext)
31 {
32 super(muleContext);
33 this.eventComparator = eventComparator;
34 this.muleContext = muleContext;
35 }
36
37
38
39
40
41
42
43
44
45
46
47
48
49 @Override
50 public MuleEvent aggregateEvents(EventGroup events) throws AggregationException
51 {
52 MuleEvent results[];
53 if (events == null || events.size() == 0)
54 {
55 results = EventGroup.EMPTY_EVENTS_ARRAY;
56 }
57 else
58 {
59 results = events.toArray();
60 Arrays.sort(results, eventComparator);
61 }
62
63 return new DefaultMuleEvent(new DefaultMuleMessage(results, muleContext), results[0]);
64 }
65
66 }