View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.test.integration.routing;
8   
9   import org.mule.DefaultMuleEvent;
10  import org.mule.DefaultMuleMessage;
11  import org.mule.api.MuleContext;
12  import org.mule.api.MuleEvent;
13  import org.mule.api.transformer.TransformerException;
14  import org.mule.routing.AbstractAggregator;
15  import org.mule.routing.AggregationException;
16  import org.mule.routing.EventGroup;
17  import org.mule.routing.correlation.CollectionCorrelatorCallback;
18  import org.mule.routing.correlation.EventCorrelatorCallback;
19  
20  import java.util.Iterator;
21  
22  public class TestAggregator extends AbstractAggregator
23  {
24      @Override
25      protected EventCorrelatorCallback getCorrelatorCallback(MuleContext muleContext)
26      {
27          return new CollectionCorrelatorCallback(muleContext)
28          {
29              @Override
30              public MuleEvent aggregateEvents(EventGroup events) throws AggregationException
31              {
32                  StringBuffer buffer = new StringBuffer(128);
33  
34                  for (Iterator<MuleEvent> iterator = events.iterator(); iterator.hasNext();)
35                  {
36                      MuleEvent event = iterator.next();
37                      try
38                      {
39                          buffer.append(event.transformMessageToString());
40                      }
41                      catch (TransformerException e)
42                      {
43                          throw new AggregationException(events, null, e);
44                      }
45                  }
46  
47                  logger.debug("event payload is: " + buffer.toString());
48                  return new DefaultMuleEvent(new DefaultMuleMessage(buffer.toString(), muleContext), events.getMessageCollectionEvent());
49              }
50          };
51      }
52  }