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.config.spring.factories;
8   
9   import org.mule.api.processor.MessageProcessor;
10  import org.mule.api.processor.MessageProcessorBuilder;
11  import org.mule.processor.ResponseMessageProcessorAdapter;
12  import org.mule.processor.chain.DefaultMessageProcessorChainBuilder;
13  
14  import java.util.List;
15  
16  import org.springframework.beans.factory.FactoryBean;
17  
18  public class ResponseMessageProcessorsFactoryBean implements FactoryBean
19  {
20  
21      protected List messageProcessors;
22  
23      public Class getObjectType()
24      {
25          return MessageProcessor.class;
26      }
27  
28      public void setMessageProcessors(List messageProcessors)
29      {
30          this.messageProcessors = messageProcessors;
31      }
32  
33      public Object getObject() throws Exception
34      {
35          DefaultMessageProcessorChainBuilder builder = new DefaultMessageProcessorChainBuilder();
36          builder.setName("'response' child processor chain");
37          for (Object processor : messageProcessors)
38          {
39              if (processor instanceof MessageProcessor)
40              {
41                  builder.chain((MessageProcessor) processor);
42              }
43              else if (processor instanceof MessageProcessorBuilder)
44              {
45                  builder.chain((MessageProcessorBuilder) processor);
46              }
47              else
48              {
49                  throw new IllegalArgumentException(
50                      "MessageProcessorBuilder should only have MessageProcessor's or MessageProcessorBuilder's configured");
51              }
52          }
53          ResponseMessageProcessorAdapter responseAdapter = new ResponseMessageProcessorAdapter();
54          responseAdapter.setProcessor(builder.build());
55          return responseAdapter;
56      }
57  
58      public boolean isSingleton()
59      {
60          return false;
61      }
62  
63  }