1
2
3
4
5
6
7 package org.mule.example.loanbroker.routers;
8
9 import org.mule.DefaultMuleEvent;
10 import org.mule.DefaultMuleMessage;
11 import org.mule.api.MuleEvent;
12 import org.mule.example.loanbroker.LocaleMessage;
13 import org.mule.example.loanbroker.messages.LoanQuote;
14 import org.mule.routing.EventGroup;
15
16 import java.util.Iterator;
17
18 import org.apache.commons.logging.Log;
19 import org.apache.commons.logging.LogFactory;
20
21 public class BankQuotesAggregationLogic
22 {
23
24
25
26 protected static final Log logger = LogFactory.getLog(BankQuotesAggregationLogic.class);
27
28 public static MuleEvent aggregateEvents(EventGroup events) throws Exception
29 {
30 LoanQuote lowestQuote = null;
31 LoanQuote quote = null;
32 MuleEvent event = null;
33
34 for (Iterator iterator = events.iterator(); iterator.hasNext();)
35 {
36 event = (MuleEvent)iterator.next();
37 Object o = event.getMessage().getPayload();
38 if(o instanceof LoanQuote)
39 {
40 quote = (LoanQuote)o;
41 }
42 else
43 {
44 throw new IllegalArgumentException("Object received by Aggregator is not of expected type. Wanted: "
45 + LoanQuote.class.getName() + " Got: " + o);
46 }
47 logger.info(LocaleMessage.processingQuote(quote));
48
49 if (lowestQuote == null)
50 {
51 lowestQuote = quote;
52 }
53 else
54 {
55 if (quote.getInterestRate() < lowestQuote.getInterestRate())
56 {
57 lowestQuote = quote;
58 }
59 }
60 }
61
62 logger.info(LocaleMessage.lowestQuote(lowestQuote));
63 return new DefaultMuleEvent(new DefaultMuleMessage(lowestQuote, event.getMessage(),
64 event.getMuleContext()), event);
65 }
66 }