01: /*
02: * $Id: BankQuotesInboundAggregator.java 10789 2008-02-12 20:04:43Z dfeist $
03: * --------------------------------------------------------------------------------------
04: * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com
05: *
06: * The software in this package is published under the terms of the CPAL v1.0
07: * license, a copy of which has been included with this distribution in the
08: * LICENSE.txt file.
09: */
10:
11: package org.mule.example.loanbroker.routers;
12:
13: import org.mule.api.MuleMessage;
14: import org.mule.routing.AggregationException;
15: import org.mule.routing.inbound.CorrelationAggregator;
16: import org.mule.routing.inbound.EventGroup;
17:
18: /**
19: * <code>BankQuotesInboundAggregator</code> receives a number of quotes and selects the
20: * lowest
21: */
22: public class BankQuotesInboundAggregator extends CorrelationAggregator {
23: /**
24: * This method is invoked if the shouldAggregate method is called and returns
25: * true. Once this method returns an aggregated message the event group is
26: * removed from the router
27: *
28: * @param events the event group for this request
29: * @return an aggregated message
30: * @throws AggregationException if the aggregation fails. in this scenario the
31: * whole event group is removed and passed to the exception handler
32: * for this componenet
33: */
34: protected MuleMessage aggregateEvents(EventGroup events)
35: throws AggregationException {
36: try {
37: return BankQuotesAggregationLogic.aggregateEvents(events);
38: } catch (Exception e) {
39: throw new AggregationException(events, null, e);
40: }
41: }
42:
43: /**
44: * Determines if the event group is ready to be aggregated; this is entirely up
45: * to the application. It could be determined by volume, last modified time or
46: * some other criteria based on the last event received.
47: *
48: * @param events event group to examine
49: * @return true if the events are ready to be aggregated
50: */
51: protected boolean shouldAggregateEvents(EventGroup events) {
52: return super.shouldAggregateEvents(events);
53: }
54:
55: }
|