1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.geronimo.mavenplugins.geronimo.server;
20
21 import org.apache.maven.plugin.MojoExecutionException;
22
23 import org.apache.geronimo.genesis.ObjectHolder;
24 import org.apache.geronimo.mavenplugins.geronimo.ServerProxy;
25 import org.apache.geronimo.mavenplugins.geronimo.reporting.ReportingMojoSupport;
26
27 import java.util.Timer;
28 import java.util.TimerTask;
29
30 /**
31 * Wait for a Geronimo server to start.
32 *
33 * @goal wait-for-server
34 *
35 * @version $Rev: 453457 $ $Date: 2006-10-05 18:51:18 -0700 (Thu, 05 Oct 2006) $
36 */
37 public class WaitForServerMojo
38 extends ReportingMojoSupport
39 {
40 /**
41 * Time in seconds to wait while verifing that the server has started.
42 *
43 * @parameter expression="${timeout}" default-value="-1"
44 */
45 private int timeout = -1;
46
47 private Timer timer = new Timer(true);
48
49
50
51
52
53 protected void doExecute() throws Exception {
54 log.info("Waiting for Geronimo server...");
55
56
57 final ObjectHolder verifyTimedOut = new ObjectHolder();
58
59 TimerTask timeoutTask = new TimerTask() {
60 public void run() {
61 verifyTimedOut.set(Boolean.TRUE);
62 }
63 };
64
65 if (timeout > 0) {
66 log.debug("Starting verify timeout task; triggers in: " + timeout + "s");
67 timer.schedule(timeoutTask, timeout * 1000);
68 }
69
70
71 ServerProxy server = new ServerProxy(hostname, port, username, password);
72 boolean started = false;
73 while (!started) {
74 if (verifyTimedOut.isSet()) {
75 throw new MojoExecutionException("Unable to verify if the server was started in the given time");
76 }
77
78 started = server.isFullyStarted();
79
80 if (!started) {
81 Throwable error = server.getLastError();
82 if (error != null) {
83 log.debug("Server query failed; ignoring", error);
84 }
85
86 Thread.sleep(1000);
87 }
88 }
89
90
91 timeoutTask.cancel();
92
93 log.info("Geronimo server started");
94 }
95
96 protected String getGoalName() {
97
98
99
100 return "wait-for-server";
101 }
102 }