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 ResequenceMessagesCorrelatorCallback extends CollectionCorrelatorCallback
27 {
28 protected Comparator eventComparator;
29 protected MuleContext muleContext;
30
31 public ResequenceMessagesCorrelatorCallback(Comparator eventComparator, MuleContext muleContext)
32 {
33 super(muleContext);
34 this.eventComparator = eventComparator;
35 this.muleContext = muleContext;
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 = (events == null) ? new MuleEvent[0] : events.toArray();
53 Arrays.sort(results, eventComparator);
54
55 return new DefaultMuleEvent(new DefaultMuleMessage(results, muleContext), results[0]);
56 }
57
58 }