1
2
3
4
5
6
7
8
9
10 package org.mule.registry;
11
12 import org.mule.api.MuleException;
13 import org.mule.api.lifecycle.InitialisationException;
14 import org.mule.api.lifecycle.Lifecycle;
15 import org.mule.tck.AbstractMuleTestCase;
16 import org.mule.util.concurrent.Latch;
17
18 import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
19
20 public class RegisteredObjectLifecycleTestCase extends AbstractMuleTestCase
21 {
22 private static final long TIMEOUT = 1000;
23
24 private Latch initLatch;
25 private Latch startLatch;
26 private Latch stopLatch;
27 private Latch disposeLatch;
28
29 private DummyBean bean = new DummyBean();
30
31 @Override
32 protected void doSetUp() throws Exception
33 {
34 bean = new DummyBean();
35 initLatch = new Latch();
36 startLatch = new Latch();
37 stopLatch = new Latch();
38 disposeLatch = new Latch();
39 }
40
41 public void testLifecycleForMuleContext() throws Exception
42 {
43
44 muleContext.getRegistry().registerObject("dummy", bean);
45 assertTrue(initLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
46 assertFalse(startLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
47 assertFalse(stopLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
48 assertFalse(disposeLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
49
50 muleContext.start();
51 assertTrue(startLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
52 assertFalse(stopLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
53 assertFalse(disposeLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
54
55 muleContext.stop();
56 assertTrue(stopLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
57 assertFalse(disposeLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
58
59 muleContext.dispose();
60 assertTrue(disposeLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
61 }
62
63 public void testLifecycleForUnregisteredObject() throws Exception
64 {
65
66 muleContext.getRegistry().registerObject("dummy", bean);
67 assertTrue(initLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
68 assertFalse(startLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
69 assertFalse(stopLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
70 assertFalse(disposeLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
71
72 muleContext.start();
73 assertTrue(startLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
74 assertFalse(stopLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
75 assertFalse(disposeLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
76
77 muleContext.getRegistry().unregisterObject("dummy");
78 assertTrue(stopLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
79 assertTrue(disposeLatch.await(TIMEOUT, TimeUnit.MILLISECONDS));
80 }
81
82 public class DummyBean implements Lifecycle
83 {
84 public String echo(String echo)
85 {
86 return echo;
87 }
88
89 public void initialise() throws InitialisationException
90 {
91 initLatch.countDown();
92 }
93
94 public void start() throws MuleException
95 {
96 startLatch.countDown();
97 }
98
99 public void stop() throws MuleException
100 {
101 stopLatch.countDown();
102 }
103
104 public void dispose()
105 {
106 disposeLatch.countDown();
107 }
108
109 public boolean isInitialised()
110 {
111 return false;
112 }
113
114 public boolean isStarted()
115 {
116 return false;
117 }
118
119 public boolean isStopped()
120 {
121 return false;
122 }
123
124 public boolean isDisposed()
125 {
126 return false;
127 }
128 }
129 }