1
2
3
4
5
6
7
8
9
10
11 package org.mule.registry;
12
13 import org.mule.api.MuleContext;
14 import org.mule.api.MuleException;
15 import org.mule.construct.Flow;
16 import org.mule.tck.junit4.AbstractMuleContextTestCase;
17 import org.mule.tck.testmodels.mule.TestConnector;
18
19 import org.junit.Test;
20
21 import static org.junit.Assert.assertEquals;
22
23 public class RegistryBrokerTestCase extends AbstractMuleContextTestCase
24 {
25
26 private String tracker;
27
28 @Override
29 protected void doSetUp() throws Exception
30 {
31 super.doSetUp();
32 tracker = new String();
33 }
34
35 @Override
36 protected boolean isStartContext()
37 {
38 return false;
39 }
40
41 @Test
42 public void testCrossRegistryLifecycleOrder() throws MuleException
43 {
44
45 TransientRegistry reg1 = new TransientRegistry(muleContext);
46 reg1.initialise();
47 TransientRegistry reg2 = new TransientRegistry(muleContext);
48 reg2.initialise();
49
50 reg1.registerObject("conn", new LifecycleTrackerConnector("conn", muleContext));
51 reg2.registerObject("conn2", new LifecycleTrackerConnector("conn2", muleContext));
52 reg1.registerObject("flow", new LifecycleTrackerFlow("flow", muleContext));
53 reg2.registerObject("flow2", new LifecycleTrackerFlow("flow2", muleContext));
54
55 muleContext.addRegistry(reg1);
56 muleContext.addRegistry(reg2);
57
58 muleContext.start();
59
60
61 assertEquals("conn2-start conn-start flow2-start flow-start ", tracker.toString());
62
63 tracker = new String();
64 muleContext.stop();
65
66
67 assertEquals("flow2-stop flow-stop conn2-stop conn-stop ", tracker);
68 }
69
70 class LifecycleTrackerConnector extends TestConnector
71 {
72
73 public LifecycleTrackerConnector(String name, MuleContext context)
74 {
75 super(context);
76 this.name = name;
77 }
78
79 @Override
80 protected void doStart()
81 {
82 super.doStart();
83 tracker += name + "-start ";
84 }
85
86 @Override
87 protected void doStop()
88 {
89 super.doStop();
90 tracker += name + "-stop ";
91 }
92 }
93
94 class LifecycleTrackerFlow extends Flow
95 {
96
97 public LifecycleTrackerFlow(String name, MuleContext muleContext)
98 {
99 super(name, muleContext);
100 }
101
102 @Override
103 protected void doStart() throws MuleException
104 {
105 super.doStart();
106 tracker += name + "-start ";
107 }
108
109 @Override
110 protected void doStop() throws MuleException
111 {
112 super.doStop();
113 tracker += name + "-stop ";
114 }
115 }
116
117 }