1
2
3
4
5
6
7
8 package org.mule.issues;
9
10 import static org.junit.Assert.assertEquals;
11
12 import org.mule.api.MuleContext;
13 import org.mule.api.lifecycle.Disposable;
14 import org.mule.api.lifecycle.Initialisable;
15 import org.mule.api.lifecycle.Startable;
16 import org.mule.api.lifecycle.Stoppable;
17 import org.mule.tck.functional.FunctionalTestComponent;
18 import org.mule.tck.junit4.FunctionalTestCase;
19
20 import java.util.ArrayList;
21 import java.util.List;
22 import org.junit.Test;
23
24 public class AsyncComponentLifecycleIssue5649TestCase extends FunctionalTestCase implements FunctionalTestComponent.LifecycleCallback
25 {
26 List<String> componentPhases = new ArrayList<String>();
27
28 @Override
29 protected MuleContext createMuleContext() throws Exception
30 {
31 componentPhases.clear();
32 FunctionalTestComponent.addLifecycleCallback(this);
33 return super.createMuleContext();
34 }
35
36 @Override
37 protected void doTearDown() throws Exception
38 {
39 FunctionalTestComponent.removeLifecycleCallback(this);
40 }
41
42 @Override
43 protected String getConfigResources()
44 {
45 return "org/mule/issues/async-component-lifecycle-5649.xml";
46 }
47
48
49 @Test
50 public void testConfig() throws Exception
51 {
52 muleContext.stop();
53 muleContext.dispose();
54 FunctionalTestComponent.removeLifecycleCallback(this);
55 System.out.println(componentPhases);
56 assertEquals(4, componentPhases.size());
57 assertEquals(Initialisable.PHASE_NAME, componentPhases.get(0));
58 assertEquals(Startable.PHASE_NAME, componentPhases.get(1));
59 assertEquals(Stoppable.PHASE_NAME, componentPhases.get(2));
60 assertEquals(Disposable.PHASE_NAME, componentPhases.get(3));
61 }
62
63 public void onTransition(String name, String newPhase)
64 {
65 componentPhases.add(newPhase);
66 }
67
68 }