View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
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();    //To change body of overridden methods use File | Settings | File Templates.
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  }