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.builder.InterceptingChainMessageProcessorBuilder;
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 responseMessageProcessors;
26
27 public Class getObjectType()
28 {
29 return MessageProcessor.class;
30 }
31
32 public void setResponseMessageProcessors(List responseMessageProcessors)
33 {
34 this.responseMessageProcessors = responseMessageProcessors;
35 }
36
37 public Object getObject() throws Exception
38 {
39 InterceptingChainMessageProcessorBuilder builder = new InterceptingChainMessageProcessorBuilder();
40 for (Object processor : responseMessageProcessors)
41 {
42 if (processor instanceof MessageProcessor)
43 {
44 builder.chain((MessageProcessor) processor);
45 }
46 else if (processor instanceof MessageProcessorBuilder)
47 {
48 builder.chain((MessageProcessorBuilder) processor);
49 }
50 else
51 {
52 throw new IllegalArgumentException(
53 "MessageProcessorBuilder should only have MessageProcessor's or MessageProcessorBuilder's configured");
54 }
55 }
56 ResponseMessageProcessorAdapter responseAdapter = new ResponseMessageProcessorAdapter();
57 responseAdapter.setProcessor(builder.build());
58 return responseAdapter;
59 }
60
61 public boolean isSingleton()
62 {
63 return false;
64 }
65
66 }