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/09/04 12:15:52 UTC

svn commit: r440010 - in /geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo: InstallerMojoSupport.java StartServerMojo.java

Author: jdillon
Date: Mon Sep  4 03:15:51 2006
New Revision: 440010

URL: http://svn.apache.org/viewvc?view=rev&rev=440010
Log:
Use ObjectHolder instead of Throwable to hold errors in the runner thread
Add support for `mvn geronimo:start -Ddebug=true` to enable a predefined set of JVM debug flags
Add support for server.jar's --override via geronimo:start's startModules configuration

Modified:
    geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo/InstallerMojoSupport.java
    geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo/StartServerMojo.java

Modified: geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo/InstallerMojoSupport.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo/InstallerMojoSupport.java?view=diff&rev=440010&r1=440009&r2=440010
==============================================================================
--- geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo/InstallerMojoSupport.java (original)
+++ geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo/InstallerMojoSupport.java Mon Sep  4 03:15:51 2006
@@ -23,16 +23,17 @@
 import java.util.Map;
 import java.util.HashMap;
 
-import org.apache.tools.ant.taskdefs.Expand;
-import org.apache.maven.project.MavenProject;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.Artifact;
+
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 
 import org.codehaus.plexus.util.FileUtils;
+
+import org.apache.tools.ant.taskdefs.Expand;
 
 /**
  * Common assembly install support.

Modified: geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo/StartServerMojo.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo/StartServerMojo.java?view=diff&rev=440010&r1=440009&r2=440010
==============================================================================
--- geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo/StartServerMojo.java (original)
+++ geronimo/server/trunk/maven-plugins/geronimo-maven-plugin/src/main/java/org/apache/geronimo/mavenplugins/geronimo/StartServerMojo.java Mon Sep  4 03:15:51 2006
@@ -87,6 +87,27 @@
      */
     private int verifyTimeout = -1;
 
+    /**
+     * JVM arguments to be applied when debug is enabled.
+     *
+     * @parameter
+     */
+    private String[] debugArguments = null;
+
+    /**
+     * Enable debug mode.  When true, debugArguments are added to the JVM.
+     *
+     * @parameter expression="${debug}" default-value="false"
+     */
+    private boolean debug = false;
+
+    /**
+     * A list of module names to be started using --override.
+     *
+     * @parameter
+     */
+    private String[] startModules = null;
+
     private Timer timer = new Timer(true);
 
     protected void doExecute() throws Exception {
@@ -114,6 +135,21 @@
             java.setMaxmemory(maximumMemory);
         }
 
+        if (debug) {
+            if (debugArguments == null) {
+                throw new MojoExecutionException("To enable debug mode a set of debugArguments needs to be configured");
+            }
+            else if (debugArguments.length == 0) {
+                throw new MojoExecutionException("At least one argument must be configured with debugArguments");
+            }
+
+            log.info("Enabling debug JVM arguments");
+
+            for (int i=0; i < debugArguments.length; i++) {
+                java.createJvmarg().setValue(debugArguments[i]);
+            }
+        }
+
         if (quiet) {
             java.createArg().setValue("--quiet");
         }
@@ -129,16 +165,22 @@
             java.createArg().setValue("--veryverbose");
         }
 
-        //
-        // TODO: Support --override
-        //
+        if (startModules != null) {
+            if (startModules.length == 0) {
+                throw new MojoExecutionException("At least one module name must be configured with startModule");
+            }
 
-        //
-        // TODO: Support JVM args for debug mode, add debug flag to enable or disable
-        //
+            log.info("Overriding the set of modules to be started");
+
+            java.createArg().setValue("--override");
 
-        // Holds any exception that was thrown during startup (as the cause)
-        final Throwable errorHolder = new Throwable();
+            for (int i=0; i < startModules.length; i++) {
+                java.createArg().setValue(startModules[i]);
+            }
+        }
+        
+        // Holds any exception that was thrown during startup
+        final ObjectHolder errorHolder = new ObjectHolder();
 
         // Start the server int a seperate thread
         Thread t = new Thread("Geronimo Server Runner") {
@@ -147,7 +189,7 @@
                     java.execute();
                 }
                 catch (Exception e) {
-                    errorHolder.initCause(e);
+                    errorHolder.set(e);
 
                     //
                     // NOTE: Don't log here, as when the JVM exists an exception will get thrown by Ant
@@ -183,8 +225,8 @@
                 throw new MojoExecutionException("Unable to verify if the server was started in the given time");
             }
 
-            if (errorHolder.getCause() != null) {
-                throw new MojoExecutionException("Failed to start Geronimo server", errorHolder.getCause());
+            if (errorHolder.isSet()) {
+                throw new MojoExecutionException("Failed to start Geronimo server", (Throwable)errorHolder.get());
             }
 
             started = server.isFullyStarted();