Coverage Report - org.mule.routing.DefaultRouterResultsHandler
 
Classes in this File Line Coverage Branch Coverage Complexity
DefaultRouterResultsHandler
0%
0/14
0%
0/8
0
DefaultRouterResultsHandler$1
0%
0/2
0%
0/4
0
 
 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.routing;
 8  
 
 9  
 import org.mule.DefaultMessageCollection;
 10  
 import org.mule.DefaultMuleEvent;
 11  
 import org.mule.DefaultMuleMessage;
 12  
 import org.mule.api.MuleContext;
 13  
 import org.mule.api.MuleEvent;
 14  
 import org.mule.api.MuleMessageCollection;
 15  
 import org.mule.api.routing.RouterResultsHandler;
 16  
 import org.mule.util.CollectionUtils;
 17  
 
 18  
 import java.util.List;
 19  
 
 20  
 import org.apache.commons.collections.Predicate;
 21  
 
 22  
 /**
 23  
  * The default results handler for all outbound endpoint. Depending on the number of
 24  
  * messages passed it the returning message will be different. If the 'results' param
 25  
  * is null or empty, null is returned. If the 'results' param contains a single
 26  
  * {@link org.mule.api.MuleMessage}, than that message is returned. If the 'results'
 27  
  * param contains more than one message a {@link org.mule.api.MuleMessageCollection}
 28  
  * instance is returned.
 29  
  * <p/>
 30  
  * Note that right now (as of Mule 2.0.1) this SPI is not pluggable and this
 31  
  * implementation is the default and only implementation.
 32  
  * 
 33  
  * @see org.mule.api.MuleMessageCollection
 34  
  * @see org.mule.api.MuleMessage
 35  
  * @see org.mule.DefaultMessageCollection
 36  
  */
 37  0
 public class DefaultRouterResultsHandler implements RouterResultsHandler
 38  
 {
 39  
     @SuppressWarnings(value = {"unchecked"})
 40  
     public MuleEvent aggregateResults(final List<MuleEvent> results,
 41  
                                       final MuleEvent previous,
 42  
                                       MuleContext muleContext)
 43  
     {
 44  0
         if (results == null)
 45  
         {
 46  0
             return null;
 47  
         }
 48  
         else
 49  
         {
 50  0
             List<MuleEvent> nonNullResults = (List<MuleEvent>) CollectionUtils.select(results,
 51  
                 new Predicate()
 52  0
                 {
 53  
                     public boolean evaluate(Object object)
 54  
                     {
 55  0
                         return object != null && ((MuleEvent) object).getMessage() != null;
 56  
                     }
 57  
                 });
 58  
 
 59  0
             if (nonNullResults.size() == 0)
 60  
             {
 61  0
                 return null;
 62  
             }
 63  0
             else if (nonNullResults.size() == 1)
 64  
             {
 65  0
                 return nonNullResults.get(0);
 66  
             }
 67  
             else
 68  
             {
 69  0
                 return createMessageCollection(nonNullResults, previous, muleContext);
 70  
             }
 71  
         }
 72  
     }
 73  
 
 74  
     @SuppressWarnings("deprecation")
 75  
     private MuleEvent createMessageCollection(final List<MuleEvent> nonNullResults,
 76  
                                               final MuleEvent previous,
 77  
                                               MuleContext muleContext)
 78  
     {
 79  0
         MuleMessageCollection coll = new DefaultMessageCollection(muleContext);
 80  0
         for (MuleEvent event : nonNullResults)
 81  
         {
 82  0
             coll.addMessage(event.getMessage());
 83  
         }
 84  0
         ((DefaultMuleMessage) coll).copyInvocationProperties(previous.getMessage());
 85  0
         return new DefaultMuleEvent(coll, previous);
 86  
     }
 87  
 }