1
2
3
4
5
6
7
8
9
10
11 package org.mule.routing.response;
12
13 import org.mule.api.MuleEvent;
14 import org.mule.api.MuleMessage;
15 import org.mule.api.lifecycle.InitialisationException;
16 import org.mule.api.routing.RoutingException;
17 import org.mule.routing.EventCorrelator;
18 import org.mule.routing.EventCorrelatorCallback;
19 import org.mule.routing.inbound.AbstractEventAggregator;
20 import org.mule.routing.inbound.EventGroup;
21
22
23
24
25
26
27
28
29
30
31 public abstract class AbstractResponseAggregator extends AbstractResponseRouter
32 {
33 private int timeout = -1;
34
35 private boolean failOnTimeout = true;
36
37 private EventCorrelator eventCorrelator;
38
39
40 public void initialise() throws InitialisationException
41 {
42 if (timeout == -1)
43 {
44 setTimeout(muleContext.getConfiguration().getDefaultSynchronousEventTimeout());
45 }
46 eventCorrelator = new EventCorrelator(getCorrelatorCallback(), messageInfoMapping, muleContext);
47 eventCorrelator.setTimeout(getTimeout());
48 eventCorrelator.setFailOnTimeout(isFailOnTimeout());
49 super.initialise();
50 }
51
52 protected EventCorrelator getEventCorrelator()
53 {
54 return eventCorrelator;
55 }
56
57
58 public void process(MuleEvent event) throws RoutingException
59 {
60 eventCorrelator.addEvent(event);
61 }
62
63
64
65
66
67
68
69
70
71 public MuleMessage getResponse(MuleMessage message) throws RoutingException
72 {
73 return eventCorrelator.getResponse(message);
74 }
75
76
77 public boolean isFailOnTimeout()
78 {
79 return failOnTimeout;
80 }
81
82 public void setFailOnTimeout(boolean failOnTimeout)
83 {
84 this.failOnTimeout = failOnTimeout;
85 }
86
87 public int getTimeout()
88 {
89 return timeout;
90 }
91
92 public void setTimeout(int timeout)
93 {
94 this.timeout = timeout;
95 }
96
97 protected abstract EventCorrelatorCallback getCorrelatorCallback();
98
99
100
101
102 protected MuleMessage aggregateEvents(EventGroup events) throws RoutingException
103 {
104 return null;
105 }
106
107 }