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