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.api.processor.MessageProcessors;
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 MessageProcessorChainFactoryBean implements FactoryBean
23 {
24
25 protected List processors;
26 protected String name;
27
28 public Class getObjectType()
29 {
30 return MessageProcessor.class;
31 }
32
33 public void setMessageProcessors(List processors)
34 {
35 this.processors = processors;
36 }
37
38 public Object getObject() throws Exception
39 {
40 DefaultMessageProcessorChainBuilder builder = new DefaultMessageProcessorChainBuilder();
41 builder.setName("processor chain '"+name+"'");
42 for (Object processor : processors)
43 {
44 if (processor instanceof MessageProcessor)
45 {
46 builder.chain((MessageProcessor) processor);
47 }
48 else if (processor instanceof MessageProcessorBuilder)
49 {
50 builder.chain((MessageProcessorBuilder) processor);
51 }
52 else
53 {
54 throw new IllegalArgumentException(
55 "MessageProcessorBuilder should only have MessageProcessor's or MessageProcessorBuilder's configured");
56 }
57 }
58 return MessageProcessors.lifecyleAwareMessageProcessorWrapper(builder.build());
59 }
60
61 public boolean isSingleton()
62 {
63 return false;
64 }
65
66 public void setName(String name)
67 {
68 this.name = name;
69 }
70
71 }