View Javadoc

1   /*
2    * $Id: RegisteredObjectLifecycleTestCase.java 19191 2010-08-25 21:05:23Z tcarlson $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
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 }