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