1
2
3
4
5
6
7
8
9
10 package org.mule.lifecycle.phases;
11
12 import org.mule.api.MuleContext;
13 import org.mule.api.agent.Agent;
14 import org.mule.api.component.Component;
15 import org.mule.api.construct.FlowConstruct;
16 import org.mule.api.lifecycle.Initialisable;
17 import org.mule.api.lifecycle.Startable;
18 import org.mule.api.lifecycle.Stoppable;
19 import org.mule.api.model.Model;
20 import org.mule.api.registry.Registry;
21 import org.mule.api.routing.OutboundRouter;
22 import org.mule.api.routing.OutboundRouterCollection;
23 import org.mule.api.source.MessageSource;
24 import org.mule.api.transport.Connector;
25 import org.mule.context.notification.MuleContextNotification;
26 import org.mule.lifecycle.LifecycleObject;
27 import org.mule.lifecycle.NotificationLifecycleObject;
28 import org.mule.util.queue.TransactionalQueueManager;
29
30 import java.util.LinkedHashSet;
31 import java.util.Set;
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 public class MuleContextStopPhase extends DefaultLifecyclePhase
53 {
54 public MuleContextStopPhase()
55 {
56 this(new Class[]{Registry.class, MuleContext.class, MessageSource.class, Component.class, OutboundRouterCollection.class, OutboundRouter.class});
57 }
58
59 public MuleContextStopPhase(Class<?>[] ignorredObjects)
60 {
61 super(Stoppable.PHASE_NAME, Stoppable.class, Startable.PHASE_NAME);
62
63 Set<LifecycleObject> stopOrderedObjects = new LinkedHashSet<LifecycleObject>();
64
65 stopOrderedObjects.add(new NotificationLifecycleObject(FlowConstruct.class));
66 stopOrderedObjects.add(new NotificationLifecycleObject(Model.class, MuleContextNotification.class));
67 stopOrderedObjects.add(new NotificationLifecycleObject(Agent.class));
68 stopOrderedObjects.add(new NotificationLifecycleObject(Connector.class));
69 stopOrderedObjects.add(new NotificationLifecycleObject(TransactionalQueueManager.class));
70 stopOrderedObjects.add(new NotificationLifecycleObject(Stoppable.class));
71
72 setIgnoredObjectTypes(ignorredObjects);
73 setOrderedLifecycleObjects(stopOrderedObjects);
74
75 registerSupportedPhase(Initialisable.PHASE_NAME);
76
77 registerSupportedPhase(Startable.PHASE_NAME);
78 }
79 }