1
2
3
4
5
6
7
8
9
10
11 package org.mule.processor.chain;
12
13 import org.mule.api.MuleContext;
14 import org.mule.api.MuleEvent;
15 import org.mule.api.MuleException;
16 import org.mule.api.context.MuleContextAware;
17 import org.mule.api.processor.MessageProcessor;
18 import org.mule.api.processor.MessageProcessorChain;
19 import org.mule.context.notification.MessageProcessorNotification;
20
21 import java.util.List;
22
23
24
25
26
27
28
29 public class InterceptingChainLifecycleWrapper extends AbstractMessageProcessorChain
30 {
31 private MessageProcessorChain chain;
32
33 public InterceptingChainLifecycleWrapper(MessageProcessorChain chain,
34 List<MessageProcessor> processors,
35 String name)
36 {
37 super(name, processors);
38 this.chain = chain;
39 }
40
41 @Override
42 public List<MessageProcessor> getMessageProcessors()
43 {
44 return chain.getMessageProcessors();
45 }
46
47 @Override
48 public String getName()
49 {
50 return chain.getName();
51 }
52
53 @Override
54 protected MuleEvent doProcess(MuleEvent event) throws MuleException
55 {
56 return chain.process(event);
57 }
58
59 @Override
60 public void setMuleContext(MuleContext context)
61 {
62 super.setMuleContext(context);
63 for (MessageProcessor processor : processors)
64 {
65 if (processor instanceof MuleContextAware)
66 {
67 ((MuleContextAware) processor).setMuleContext(context);
68 }
69 }
70 if (chain instanceof MuleContextAware)
71 {
72 ((MuleContextAware) chain).setMuleContext(context);
73 }
74 }
75
76 @Override
77 public MuleEvent process(MuleEvent event) throws MuleException
78 {
79 if (event == null)
80 {
81 return null;
82 }
83
84 fireNotification(event.getFlowConstruct(), event, this,
85 MessageProcessorNotification.MESSAGE_PROCESSOR_PRE_INVOKE);
86
87 MuleEvent result = super.process(event);
88
89 fireNotification(event.getFlowConstruct(), result, this,
90 MessageProcessorNotification.MESSAGE_PROCESSOR_POST_INVOKE);
91
92 return result;
93 }
94 }