1
2
3
4
5
6
7
8
9
10
11 package org.mule.config.spring;
12
13 import org.mule.api.MuleContext;
14 import org.mule.api.lifecycle.Disposable;
15 import org.mule.api.lifecycle.Initialisable;
16 import org.mule.api.lifecycle.LifecycleException;
17 import org.mule.api.lifecycle.LifecyclePhase;
18 import org.mule.api.lifecycle.Startable;
19 import org.mule.api.lifecycle.Stoppable;
20 import org.mule.api.registry.Registry;
21 import org.mule.lifecycle.EmptyLifecycleCallback;
22 import org.mule.lifecycle.RegistryLifecycleManager;
23 import org.mule.lifecycle.phases.ContainerManagedLifecyclePhase;
24 import org.mule.lifecycle.phases.MuleContextStartPhase;
25 import org.mule.lifecycle.phases.MuleContextStopPhase;
26 import org.mule.lifecycle.phases.NotInLifecyclePhase;
27 import org.mule.registry.AbstractRegistryBroker;
28
29 public class SpringRegistryLifecycleManager extends RegistryLifecycleManager
30 {
31 public SpringRegistryLifecycleManager(String id, Registry object, MuleContext muleContext)
32 {
33 super(id, object, muleContext);
34 }
35
36 protected void registerPhases()
37 {
38 registerPhase(NotInLifecyclePhase.PHASE_NAME, NOT_IN_LIFECYCLE_PHASE,
39 new EmptyLifecycleCallback<AbstractRegistryBroker>());
40 registerPhase(Initialisable.PHASE_NAME, new SpringContextInitialisePhase());
41 registerPhase(Startable.PHASE_NAME, new MuleContextStartPhase(),
42 new EmptyLifecycleCallback<AbstractRegistryBroker>());
43 registerPhase(Stoppable.PHASE_NAME, new MuleContextStopPhase(),
44 new EmptyLifecycleCallback<AbstractRegistryBroker>());
45 registerPhase(Disposable.PHASE_NAME, new SpringContextDisposePhase());
46 }
47
48
49
50
51
52
53
54
55
56 class SpringContextInitialisePhase extends ContainerManagedLifecyclePhase
57 {
58 public SpringContextInitialisePhase()
59 {
60 super(Initialisable.PHASE_NAME, Initialisable.class, Disposable.PHASE_NAME);
61 registerSupportedPhase(NotInLifecyclePhase.PHASE_NAME);
62 }
63
64
65
66
67
68
69
70 @Override
71 public void applyLifecycle(Object o) throws LifecycleException
72 {
73
74 }
75 }
76
77
78
79
80
81
82 class SpringContextDisposePhase extends ContainerManagedLifecyclePhase
83 {
84 public SpringContextDisposePhase()
85 {
86 super(Disposable.PHASE_NAME, Disposable.class, Initialisable.PHASE_NAME);
87 registerSupportedPhase(NotInLifecyclePhase.PHASE_NAME);
88
89 registerSupportedPhase(LifecyclePhase.ALL_PHASES);
90 }
91
92 @Override
93 public void applyLifecycle(Object o) throws LifecycleException
94 {
95 ((SpringRegistry) o).doDispose();
96 }
97 }
98
99 }