1
2
3
4
5
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 }