| 1 10 11 package org.mule.samples.loanbroker.routers; 12 13 import org.mule.config.i18n.Message; 14 import org.mule.impl.MuleMessage; 15 import org.mule.routing.AggregationException; 16 import org.mule.routing.inbound.CorrelationAggregator; 17 import org.mule.routing.inbound.EventGroup; 18 import org.mule.samples.loanbroker.LoanQuote; 19 import org.mule.umo.UMOEvent; 20 import org.mule.umo.UMOMessage; 21 import org.mule.umo.transformer.TransformerException; 22 23 import java.util.Iterator ; 24 25 32 public class BankQuotesAggregator extends CorrelationAggregator 33 { 34 45 protected UMOMessage aggregateEvents(EventGroup events) throws AggregationException 46 { 47 try 48 { 49 LoanQuote lowestQuote = null; 50 LoanQuote quote = null; 51 UMOEvent event = null; 52 53 for (Iterator iterator = events.iterator(); iterator.hasNext();) 54 { 55 event = (UMOEvent)iterator.next(); 56 quote = (LoanQuote)event.getTransformedMessage(); 57 logger.info("Processing quote: " + quote); 58 59 if (lowestQuote == null) 60 { 61 lowestQuote = quote; 62 } 63 else 64 { 65 if (quote.getInterestRate() < lowestQuote.getInterestRate()) 66 { 67 lowestQuote = quote; 68 } 69 } 70 } 71 72 return new MuleMessage(lowestQuote, event.getMessage()); 73 } 74 catch (TransformerException e) 75 { 76 throw new AggregationException(Message.createStaticMessage("Failed to get lowest quote"), events, 77 null, e); 78 } 79 } 80 81 90 protected boolean shouldAggregate(EventGroup events) 91 { 92 return super.shouldAggregate(events); 93 } 94 } 95 | Popular Tags |