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
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
52 if (component1 != null) {
53 component1.assertStopOrderCorrect();
54 }
55 if (component2 != null) {
56 component2.assertStopOrderCorrect();
57 }
58 }
59 }