You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2006/10/06 03:51:19 UTC

svn commit: r453457 - in /geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src: main/java/org/apache/geronimo/mavenplugins/geronimo/server/WaitForServerMojo.java site/apt/usage/server.apt

Author: jdillon
Date: Thu Oct  5 18:51:18 2006
New Revision: 453457

URL: http://svn.apache.org/viewvc?view=rev&rev=453457
Log:
Add goal to simply wait for a server to be started

Added:
    geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo/server/WaitForServerMojo.java   (with props)
Modified:
    geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/site/apt/usage/server.apt

Added: geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo/server/WaitForServerMojo.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo/server/WaitForServerMojo.java?view=auto&rev=453457
==============================================================================
--- geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo/server/WaitForServerMojo.java (added)
+++ geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo/server/WaitForServerMojo.java Thu Oct  5 18:51:18 2006
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.geronimo.mavenplugins.geronimo.server;
+
+import org.apache.maven.plugin.MojoExecutionException;
+
+import org.apache.geronimo.genesis.ObjectHolder;
+import org.apache.geronimo.mavenplugins.geronimo.ServerProxy;
+import org.apache.geronimo.mavenplugins.geronimo.reporting.ReportingMojoSupport;
+
+import java.util.Timer;
+import java.util.TimerTask;
+
+/**
+ * Wait for a Geronimo server to start.
+ *
+ * @goal wait-for-server
+ *
+ * @version $Rev$ $Date$
+ */
+public class WaitForServerMojo
+    extends ReportingMojoSupport
+{
+    /**
+     * Time in seconds to wait while verifing that the server has started.
+     *
+     * @parameter expression="${timeout}" default-value="-1"
+     */
+    private int timeout = -1;
+
+    private Timer timer = new Timer(true);
+
+    //
+    // TODO: See if start-server can share some of this code
+    //
+
+    protected void doExecute() throws Exception {
+        log.info("Waiting for Geronimo server...");
+
+        // Setup a callback to time out verification
+        final ObjectHolder verifyTimedOut = new ObjectHolder();
+
+        TimerTask timeoutTask = new TimerTask() {
+            public void run() {
+                verifyTimedOut.set(Boolean.TRUE);
+            }
+        };
+
+        if (timeout > 0) {
+            log.debug("Starting verify timeout task; triggers in: " + timeout + "s");
+            timer.schedule(timeoutTask, timeout * 1000);
+        }
+
+        // Verify server started
+        ServerProxy server = new ServerProxy(hostname, port, username, password);
+        boolean started = false;
+        while (!started) {
+            if (verifyTimedOut.isSet()) {
+                throw new MojoExecutionException("Unable to verify if the server was started in the given time");
+            }
+
+            started = server.isFullyStarted();
+
+            if (!started) {
+                Throwable error = server.getLastError();
+                if (error != null) {
+                    log.debug("Server query failed; ignoring", error);
+                }
+
+                Thread.sleep(1000);
+            }
+        }
+
+        // Stop the timer, server should be up now
+        timeoutTask.cancel();
+
+        log.info("Geronimo server started");
+    }
+
+    protected String getGoalName() {
+        //
+        //FIXME: There has to be way this can be computed instead of hardcoded absolutely.
+        //
+        return "wait-for-server";
+    }
+}

Propchange: geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo/server/WaitForServerMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo/server/WaitForServerMojo.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo/server/WaitForServerMojo.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/site/apt/usage/server.apt
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/site/apt/usage/server.apt?view=diff&rev=453457&r1=453456&r2=453457
==============================================================================
--- geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/site/apt/usage/server.apt (original)
+++ geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/site/apt/usage/server.apt Thu Oct  5 18:51:18 2006
@@ -154,6 +154,18 @@
 mvn geronimo:start -Ddebug=true
 +----------+
 
+ If you already have a server started and just need to wait until the server has started:
+
++----------+
+mvn geronimo:wait-for-server
++----------+
+
+ To only wait for a specific period you can sepcify a timeout in sections:
+
++----------+
+mvn geronimo:wait-for-server -Dtimeout=60
++----------+
+
 * Stopping Geronimo Server
 
  To stop a server using the defaults, which is probably fine in most cases, just invoke the {{stop}} goal.