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.builder.InterceptingChainMessageProcessorBuilder;
16
17 import java.util.List;
18
19 import org.springframework.beans.factory.FactoryBean;
20
21 public class MessageProcessorChainFactoryBean implements FactoryBean
22 {
23
24 protected List processors;
25 protected String name;
26
27 public Class getObjectType()
28 {
29 return MessageProcessor.class;
30 }
31
32 public void setMessageProcessors(List processors)
33 {
34 this.processors = processors;
35 }
36
37 public Object getObject() throws Exception
38 {
39 InterceptingChainMessageProcessorBuilder builder = new InterceptingChainMessageProcessorBuilder();
40 builder.setName(name);
41 for (Object processor : processors)
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 return builder.build();
58 }
59
60 public boolean isSingleton()
61 {
62 return false;
63 }
64
65 public void setName(String name)
66 {
67 this.name = name;
68 }
69
70 }