1
2
3
4
5
6
7
8
9
10
11 package org.mule.config.spring.factories;
12
13 import org.mule.api.MuleContext;
14 import org.mule.api.context.MuleContextAware;
15 import org.mule.api.processor.MessageProcessor;
16 import org.mule.api.routing.filter.Filter;
17 import org.mule.routing.MessageProcessorFilterPair;
18 import org.mule.routing.filters.AcceptAllFilter;
19 import org.mule.routing.filters.ExpressionFilter;
20
21 import org.springframework.beans.factory.FactoryBean;
22
23 public class MessageProcessorFilterPairFactoryBean implements FactoryBean, MuleContextAware
24 {
25 private MessageProcessor messageProcessor;
26 private Filter filter = new ExpressionFilter();
27
28 public void setFilter(Filter filter)
29 {
30 this.filter = filter;
31 }
32
33 public void setMessageProcessor(MessageProcessor messageProcessor)
34 {
35 this.messageProcessor = messageProcessor;
36 }
37
38 public void setExpression(String expression)
39 {
40 ((ExpressionFilter)filter).setExpression(expression);
41 }
42
43 public void setEvaluator(String evaluator)
44 {
45 ((ExpressionFilter)filter).setEvaluator(evaluator);
46 }
47
48 public void setCustomEvaluator(String customEvaluator)
49 {
50 ((ExpressionFilter)filter).setCustomEvaluator(customEvaluator);
51 }
52
53 public Object getObject() throws Exception
54 {
55 return filter == null
56 ? new MessageProcessorFilterPair(messageProcessor, AcceptAllFilter.INSTANCE)
57 : new MessageProcessorFilterPair(messageProcessor, filter);
58 }
59
60 public Class<?> getObjectType()
61 {
62 return MessageProcessorFilterPair.class;
63 }
64
65 public boolean isSingleton()
66 {
67 return true;
68 }
69
70 public void setMuleContext(MuleContext context)
71 {
72 if (messageProcessor != null && messageProcessor instanceof MuleContextAware)
73 {
74 ((MuleContextAware) messageProcessor).setMuleContext(context);
75 }
76 if (filter != null && filter instanceof MuleContextAware)
77 {
78 ((MuleContextAware) filter).setMuleContext(context);
79 }
80 }
81
82 }