View Javadoc
1   package org.codehaus.plexus.test;
2   
3   import org.codehaus.plexus.personality.plexus.lifecycle.phase.Startable;
4   import org.codehaus.plexus.personality.plexus.lifecycle.phase.StartingException;
5   import org.codehaus.plexus.personality.plexus.lifecycle.phase.StoppingException;
6   
7   import static junit.framework.Assert.assertTrue;
8   
9   public class AbstractStartableComponent implements StartableComponent, Startable {
10      public int startOrder;
11  
12      public int stopOrder;
13  
14      public AbstractStartableComponent component1;
15  
16      public AbstractStartableComponent component2;
17  
18      public void start() throws StartingException {
19          startOrder = startGenerator.getAndIncrement();
20      }
21  
22      public void stop() throws StoppingException {
23          stopOrder = stopGenerator.getAndIncrement();
24      }
25  
26      public void assertStartOrderCorrect() {
27          if (component1 != null) {
28              assertTrue("This component started before injected component1", startOrder > component1.startOrder);
29          }
30          if (component2 != null) {
31              assertTrue("This component started before injected component2", startOrder > component2.startOrder);
32          }
33  
34          // assert children are correct
35          if (component1 != null) {
36              component1.assertStartOrderCorrect();
37          }
38          if (component2 != null) {
39              component2.assertStartOrderCorrect();
40          }
41      }
42  
43      public void assertStopOrderCorrect() {
44          if (component1 != null) {
45              assertTrue("This component stopped after injected component1", stopOrder < component1.stopOrder);
46          }
47          if (component2 != null) {
48              assertTrue("This component stopped after injected component2", stopOrder < component2.stopOrder);
49          }
50  
51          // assert children are correct
52          if (component1 != null) {
53              component1.assertStopOrderCorrect();
54          }
55          if (component2 != null) {
56              component2.assertStopOrderCorrect();
57          }
58      }
59  }