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