1 /* 2 * $Id: SingleResponseRouter.java 7976 2007-08-21 14:26:13Z dirk.olmes $ 3 * -------------------------------------------------------------------------------------- 4 * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com 5 * 6 * The software in this package is published under the terms of the CPAL v1.0 7 * license, a copy of which has been included with this distribution in the 8 * LICENSE.txt file. 9 */ 10 11 package org.mule.routing.response; 12 13 import org.mule.routing.inbound.EventGroup; 14 import org.mule.umo.UMOEvent; 15 import org.mule.umo.UMOMessage; 16 import org.mule.umo.routing.RoutingException; 17 18 /** 19 * Handles single event responses from a replyTo address. If multiple responses will 20 * be received for a single invocation, the {@link ResponseCorrelationAggregator} 21 * should be used. 22 */ 23 public class SingleResponseRouter extends AbstractResponseAggregator 24 { 25 /** 26 * The <code>SingleResponseRouter</code> will return true if the event group 27 * size is 1. If the group size is greater than 1, a warning will be logged. 28 * 29 * @param events 30 * @return true if the event group size is 1 or greater 31 * @see {@link AbstractResponseAggregator#shouldAggregateEvents(EventGroup)} 32 */ 33 protected boolean shouldAggregateEvents(EventGroup events) 34 { 35 if (events.expectedSize() > 1) 36 { 37 logger.warn("CorrelationGroup's expected size is not 1." 38 + " The SingleResponseAggregator will only handle single replyTo events;" 39 + " if there will be multiple events for a single request, " 40 + " use the 'ResponseCorrelationAggregator'"); 41 } 42 43 return (events.size() != 0); 44 } 45 46 /** 47 * The <code>SingleResponseRouter</code> will always return the first event of 48 * an event group. 49 * 50 * @param events the event group for this request 51 * @return an aggregated message 52 * @throws org.mule.umo.routing.RoutingException if the aggregation fails. in 53 * this scenario the whole event group is removed and passed to the 54 * exception handler for this componenet 55 * @see {@link AbstractResponseAggregator#aggregateEvents(EventGroup)} 56 */ 57 protected UMOMessage aggregateEvents(EventGroup events) throws RoutingException 58 { 59 return ((UMOEvent) events.iterator().next()).getMessage(); 60 } 61 62 }