Repository: tomee
Updated Branches:
  refs/heads/master 0cfff22d9 -> 3f79e41b8


get rid of keepServerXmlAsthis - thanks David


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/3f79e41b
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/3f79e41b
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/3f79e41b

Branch: refs/heads/master
Commit: 3f79e41b8eadfba586767e62d201ceecb399fc0e
Parents: 0cfff22
Author: Romain Manni-Bucau <[email protected]>
Authored: Wed Jun 10 08:56:59 2015 +0200
Committer: Romain Manni-Bucau <[email protected]>
Committed: Wed Jun 10 08:56:59 2015 +0200

----------------------------------------------------------------------
 .../maven/plugin/AbstractAddressMojo.java       |   6 +-
 .../maven/plugin/AbstractCommandMojo.java       |   7 +
 .../openejb/maven/plugin/AbstractTomEEMojo.java | 169 ++++++++++++-------
 .../openejb/maven/plugin/BuildTomEEMojo.java    |   4 -
 .../apache/tomee/util/QuickServerXmlParser.java |  23 ++-
 5 files changed, 136 insertions(+), 73 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/3f79e41b/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractAddressMojo.java
----------------------------------------------------------------------
diff --git 
a/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractAddressMojo.java
 
b/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractAddressMojo.java
index f47f681..1339b28 100644
--- 
a/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractAddressMojo.java
+++ 
b/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractAddressMojo.java
@@ -21,10 +21,10 @@ import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugins.annotations.Parameter;
 
 public abstract class AbstractAddressMojo extends AbstractMojo {
-    @Parameter(property = "tomee-plugin.http", defaultValue = "8080")
-    protected int tomeeHttpPort = 8080;
+    @Parameter(property = "tomee-plugin.http")
+    protected Integer tomeeHttpPort;
 
-    @Parameter(property = "tomee-plugin.host", defaultValue = "localhost")
+    @Parameter(property = "tomee-plugin.host")
     protected String tomeeHost;
 
     @Parameter(property = "tomee-plugin.user")

http://git-wip-us.apache.org/repos/asf/tomee/blob/3f79e41b/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractCommandMojo.java
----------------------------------------------------------------------
diff --git 
a/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractCommandMojo.java
 
b/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractCommandMojo.java
index 49fca85..eecc1ae 100644
--- 
a/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractCommandMojo.java
+++ 
b/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractCommandMojo.java
@@ -23,6 +23,13 @@ import java.util.Properties;
 
 public abstract class AbstractCommandMojo extends AbstractAddressMojo {
     protected Object lookup(final String name) {
+        if (tomeeHttpPort == null) {
+            tomeeHttpPort = 8080;
+        }
+        if (tomeeHost == null) {
+            tomeeHost = "localhost";
+        }
+
         final Properties props = new Properties();
         props.put(Context.INITIAL_CONTEXT_FACTORY, 
"org.apache.openejb.client.RemoteInitialContextFactory");
         props.put(Context.PROVIDER_URL, "http://"; + tomeeHost + ":" + 
tomeeHttpPort + "/tomee/ejb");

http://git-wip-us.apache.org/repos/asf/tomee/blob/3f79e41b/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
----------------------------------------------------------------------
diff --git 
a/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
 
b/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
index 517b165..0b51b6b 100644
--- 
a/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
+++ 
b/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
@@ -141,8 +141,8 @@ public abstract class AbstractTomEEMojo extends 
AbstractAddressMojo {
     @Parameter(property = "tomee-plugin.classifier", defaultValue = 
"webprofile")
     protected String tomeeClassifier;
 
-    @Parameter(property = "tomee-plugin.shutdown", defaultValue = "8005")
-    protected int tomeeShutdownPort;
+    @Parameter(property = "tomee-plugin.shutdown")
+    protected Integer tomeeShutdownPort;
 
     @Parameter(property = "tomee-plugin.shutdown.attempts", defaultValue = 
"60")
     protected int tomeeShutdownAttempts;
@@ -150,8 +150,8 @@ public abstract class AbstractTomEEMojo extends 
AbstractAddressMojo {
     @Parameter(property = "tomee-plugin.shutdown-command", defaultValue = 
"SHUTDOWN")
     protected String tomeeShutdownCommand;
 
-    @Parameter(property = "tomee-plugin.ajp", defaultValue = "8009")
-    protected int tomeeAjpPort;
+    @Parameter(property = "tomee-plugin.ajp")
+    protected Integer tomeeAjpPort;
 
     @Parameter(property = "tomee-plugin.https")
     protected Integer tomeeHttpsPort;
@@ -195,7 +195,7 @@ public abstract class AbstractTomEEMojo extends 
AbstractAddressMojo {
     /**
      * relative to tomee.base.
      */
-    @Parameter(defaultValue = "webapps")
+    @Parameter
     protected String webappDir;
 
     /**
@@ -309,9 +309,6 @@ public abstract class AbstractTomEEMojo extends 
AbstractAddressMojo {
     @Parameter(defaultValue = "${project.packaging}", readonly = true)
     protected String packaging;
 
-    @Parameter(property = "tomee-plugin.keep-server-xml", defaultValue = 
"false")
-    protected boolean keepServerXmlAsthis;
-
     @Parameter(property = "tomee-plugin.check-started", defaultValue = "false")
     protected boolean checkStarted;
 
@@ -384,31 +381,6 @@ public abstract class AbstractTomEEMojo extends 
AbstractAddressMojo {
             }
 
             unzip(resolve());
-            if (removeDefaultWebapps) { // do it first to let add other war
-                removeDefaultWebapps(removeTomeeWebapp, existingWebapps);
-            }
-            copyLibs(libs, new File(catalinaBase, libDir), "jar");
-            copyLibs(endorsedLibs, new File(catalinaBase, "endorsed"), "jar");
-            copyLibs(webapps, new File(catalinaBase, webappDir), "war");
-            copyLibs(apps, new File(catalinaBase, appDir), "jar");
-            overrideConf(config, "conf");
-            overrideConf(lib, "lib");
-            final Collection<File> copied = overrideConf(bin, "bin");
-
-            for (final File copy : copied) {
-                if (copy.getName().endsWith(".sh")) {
-                    if (!copy.setExecutable(true)) {
-                        getLog().warn("can't make " + copy.getPath() + " 
executable");
-                    }
-                }
-            }
-
-            if (classpaths == null) { // NPE protection for 
activateSimpleLog() and run()
-                classpaths = new ArrayList<String>();
-            }
-            if (simpleLog) {
-                activateSimpleLog();
-            }
 
             if (inlinedServerXml != null && inlinedServerXml.getChildCount() > 
0) {
                 final File serverXml = new File(catalinaBase, 
"conf/server.xml");
@@ -428,9 +400,37 @@ public abstract class AbstractTomEEMojo extends 
AbstractAddressMojo {
                     throw new MojoExecutionException(e.getMessage(), e);
                 }
             }
-            if (!keepServerXmlAsthis) {
-                overrideAddresses();
+
+            overrideConf(config, "conf");
+            overrideServerXml();
+            alignConfigOnServerXmlCurrentConfig();
+
+            if (removeDefaultWebapps) { // do it first to let add other war
+                removeDefaultWebapps(removeTomeeWebapp, existingWebapps);
+            }
+
+            if (classpaths == null) { // NPE protection for 
activateSimpleLog() and run()
+                classpaths = new ArrayList<>();
+            }
+            if (simpleLog) {
+                activateSimpleLog();
             }
+
+            copyLibs(libs, new File(catalinaBase, libDir), "jar");
+            copyLibs(endorsedLibs, new File(catalinaBase, "endorsed"), "jar");
+            copyLibs(webapps, new File(catalinaBase, webappDir), "war");
+            copyLibs(apps, new File(catalinaBase, appDir), "jar");
+            overrideConf(lib, "lib");
+            final Collection<File> copied = overrideConf(bin, "bin");
+
+            for (final File copy : copied) {
+                if (copy.getName().endsWith(".sh")) {
+                    if (!copy.setExecutable(true)) {
+                        getLog().warn("can't make " + copy.getPath() + " 
executable");
+                    }
+                }
+            }
+
             if (!skipCurrentProject) {
                 copyWar();
             }
@@ -482,11 +482,47 @@ public abstract class AbstractTomEEMojo extends 
AbstractAddressMojo {
                     thread.setContextClassLoader(currentLoader);
                 }
             }
+        } else {
+            alignConfigOnServerXmlCurrentConfig();
         }
 
         run();
     }
 
+    private void alignConfigOnServerXmlCurrentConfig() {
+        final File sXml = new File(catalinaBase, "conf/server.xml");
+        if (sXml.isFile()) {
+            final QuickServerXmlParser quickServerXmlParser = 
QuickServerXmlParser.parse(sXml, false);
+            final String http = quickServerXmlParser.value("HTTP", null);
+            if (http != null) {
+                tomeeHttpPort = Integer.parseInt(http);
+            }
+            final String https = quickServerXmlParser.value("HTTPS", null);
+            if (https != null) {
+                tomeeHttpsPort = Integer.parseInt(https);
+            }
+            final String ajp = quickServerXmlParser.value("AJP", null);
+            if (ajp != null) {
+                tomeeAjpPort = Integer.parseInt(ajp);
+            }
+            final String stop = quickServerXmlParser.value("STOP", null);
+            if (stop != null) {
+                tomeeShutdownPort = Integer.parseInt(stop);
+            }
+            final String host = quickServerXmlParser.value("host", null);
+            if (host != null) {
+                tomeeHost = host;
+            }
+            final String appBase = quickServerXmlParser.value("app-base", 
null);
+            if (appBase != null) {
+                webappDir = appBase;
+            }
+        }
+        if (webappDir == null) {
+            webappDir = "webapps";
+        }
+    }
+
     @SuppressWarnings("unchecked")
     private ClassLoader createClassLoader(final ClassLoader parent) {
         final List<URL> urls = new ArrayList<>();
@@ -549,7 +585,7 @@ public abstract class AbstractTomEEMojo extends 
AbstractAddressMojo {
 
     private List<String> webappsAlreadyAdded() {
         final List<String> list = new ArrayList<String>();
-        final File webapps = new File(catalinaBase, webappDir);
+        final File webapps = new File(catalinaBase, 
webappDirOrImplicitDefault());
         if (webapps.exists() && webapps.isDirectory()) {
             final File[] files = webapps.listFiles();
             if (files != null) {
@@ -561,6 +597,10 @@ public abstract class AbstractTomEEMojo extends 
AbstractAddressMojo {
         return list;
     }
 
+    private String webappDirOrImplicitDefault() {
+        return webappDir == null ? "webapps" : webappDir;
+    }
+
     private void activateSimpleLog() {
         // replacing java.util.logging.SimpleFormatter by SimpleTomEEFormatter
         final File loggingProperties = new File(catalinaBase, 
"conf/logging.properties");
@@ -581,7 +621,7 @@ public abstract class AbstractTomEEMojo extends 
AbstractAddressMojo {
     }
 
     private void removeDefaultWebapps(final boolean removeTomee, final 
Collection<String> providedWebapps) {
-        final File webapps = new File(catalinaBase, webappDir);
+        final File webapps = new File(catalinaBase, 
webappDirOrImplicitDefault());
         if (webapps.isDirectory()) {
             final File[] files = webapps.listFiles();
             if (null != files) {
@@ -811,7 +851,7 @@ public abstract class AbstractTomEEMojo extends 
AbstractAddressMojo {
         return warFile.getName();
     }
 
-    private void overrideAddresses() {
+    private void overrideServerXml() {
         final File serverXml = new File(catalinaBase, "conf/server.xml");
         if (!serverXml.exists()) { // openejb
             return;
@@ -819,7 +859,8 @@ public abstract class AbstractTomEEMojo extends 
AbstractAddressMojo {
 
         final QuickServerXmlParser parser = 
QuickServerXmlParser.parse(serverXml);
 
-        String value = read(serverXml);
+        final String original = read(serverXml);
+        String value = original;
 
         File keystoreFile = new File(parser.keystore());
 
@@ -842,25 +883,35 @@ public abstract class AbstractTomEEMojo extends 
AbstractAddressMojo {
                     "                clientAuth=\"false\" sslProtocol=\"TLS\" 
keystoreFile=\"" + keystoreFilePath + "\" />\n");
         }
 
-        if (tomeeHttpsPort == null) {
-            // avoid NPE
-            tomeeHttpsPort = 8443;
+        if (tomeeHttpPort != null) {
+            value = value.replace("\"" + parser.http() + '"', '"' + 
Integer.toString(tomeeHttpPort) + '"');
+        }
+        if (tomeeHttpsPort != null) {
+            value = value.replace("\"" + parser.https() + '"', '"' + 
Integer.toString(tomeeHttpsPort) + '"');
+        }
+        if (tomeeAjpPort != null) {
+            value = value.replace("\"" + parser.ajp() + '"', '"' + 
Integer.toString(tomeeAjpPort) + '"');
+        }
+        if (tomeeShutdownPort != null) {
+            value = value.replace("\"" + parser.stop() + '"', '"' + 
Integer.toString(tomeeShutdownPort) + '"');
+        }
+        if (webappDir != null) {
+            value = value.replace("\"" + parser.value("app-base", "webapps") + 
'"', '"' + webappDir + '"');
+        }
+        if (tomeeHost != null) {
+            value = value.replace("\"" + parser.host() + '"', '"' + tomeeHost 
+ '"');
         }
 
-        FileWriter writer = null;
-        try {
-            writer = new FileWriter(serverXml);
-            writer.write(value
-                    .replace(parser.http(), Integer.toString(tomeeHttpPort))
-                    .replace(parser.https(), Integer.toString(tomeeHttpsPort))
-                    .replace(parser.ajp(), Integer.toString(tomeeAjpPort))
-                    .replace(parser.stop(), 
Integer.toString(tomeeShutdownPort))
-                    .replace(parser.host(), tomeeHost)
-                    .replace(parser.appBase(), webappDir));
-        } catch (final IOException e) {
-            throw new TomEEException(e.getMessage(), e);
-        } finally {
-            close(writer);
+        if (!original.equals(value)) {
+            FileWriter writer = null;
+            try {
+                writer = new FileWriter(serverXml);
+                writer.write(value);
+            } catch (final IOException e) {
+                throw new TomEEException(e.getMessage(), e);
+            } finally {
+                close(writer);
+            }
         }
     }
 
@@ -931,7 +982,7 @@ public abstract class AbstractTomEEMojo extends 
AbstractAddressMojo {
 
     protected void run() {
         if (classpaths == null) { // NPE protection when execute is skipped 
and mojo delegates to run directly
-            classpaths = new ArrayList<String>();
+            classpaths = new ArrayList<>();
         }
 
         final List<String> strings = generateJVMArgs();
@@ -952,10 +1003,10 @@ public abstract class AbstractTomEEMojo extends 
AbstractAddressMojo {
 
         if (TOM_EE.equals(container)) {
 
-            server.setPortStartup(tomeeHttpPort);
+            server.setPortStartup(tomeeHttpPort == null ? tomeeHttpsPort : 
tomeeHttpPort);
 
             getLog().info("Running '" + 
getClass().getName().replace("TomEEMojo", "").toLowerCase(Locale.ENGLISH)
-                    + "'. Configured TomEE in plugin is " + tomeeHost + ":" + 
tomeeHttpPort
+                    + "'. Configured TomEE in plugin is " + tomeeHost + ":" + 
server.getPortStartup()
                     + " (plugin shutdown port is " + tomeeShutdownPort + " and 
https port is " + tomeeHttpsPort + ")");
         } else {
             getLog().info("Running '" + 
getClass().getSimpleName().replace("TomEEMojo", 
"").toLowerCase(Locale.ENGLISH));

http://git-wip-us.apache.org/repos/asf/tomee/blob/3f79e41b/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/BuildTomEEMojo.java
----------------------------------------------------------------------
diff --git 
a/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/BuildTomEEMojo.java
 
b/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/BuildTomEEMojo.java
index be84905..ce4f8f1 100644
--- 
a/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/BuildTomEEMojo.java
+++ 
b/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/BuildTomEEMojo.java
@@ -27,7 +27,6 @@ import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.annotations.ResolutionScope;
-import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectHelper;
 import org.apache.openejb.loader.Files;
 import org.apache.openejb.loader.IO;
@@ -61,9 +60,6 @@ public class BuildTomEEMojo extends AbstractTomEEMojo {
     @Component
     protected MavenProjectHelper projectHelper;
 
-    @Parameter(defaultValue = "${project}", readonly = true)
-    protected MavenProject project;
-
     @Parameter(property = "tomee-plugin.classifier")
     protected String classifier = null;
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/3f79e41b/tomee/tomee-util/src/main/java/org/apache/tomee/util/QuickServerXmlParser.java
----------------------------------------------------------------------
diff --git 
a/tomee/tomee-util/src/main/java/org/apache/tomee/util/QuickServerXmlParser.java
 
b/tomee/tomee-util/src/main/java/org/apache/tomee/util/QuickServerXmlParser.java
index 4dd0fde..8f87f4f 100644
--- 
a/tomee/tomee-util/src/main/java/org/apache/tomee/util/QuickServerXmlParser.java
+++ 
b/tomee/tomee-util/src/main/java/org/apache/tomee/util/QuickServerXmlParser.java
@@ -56,12 +56,17 @@ public class QuickServerXmlParser extends DefaultHandler {
     private final Map<String, String> values = new TreeMap<String, 
String>(String.CASE_INSENSITIVE_ORDER);
 
     public QuickServerXmlParser() { // ensure defaults are present
-        values.put(STOP_KEY, DEFAULT_STOP_PORT);
-        values.put(HTTP_KEY, DEFAULT_HTTP_PORT);
-        values.put(AJP_KEY, DEFAULT_AJP_PORT);
-        values.put(HOST_KEY, DEFAULT_HOST);
-        values.put(APP_BASE_KEY, DEFAULT_APP_BASE);
-        values.put(KEYSTORE_KEY, DEFAULT_KEYSTORE);
+        this(true);
+    }
+    public QuickServerXmlParser(final boolean useDefaults) {
+        if (useDefaults) {
+            values.put(STOP_KEY, DEFAULT_STOP_PORT);
+            values.put(HTTP_KEY, DEFAULT_HTTP_PORT);
+            values.put(AJP_KEY, DEFAULT_AJP_PORT);
+            values.put(HOST_KEY, DEFAULT_HOST);
+            values.put(APP_BASE_KEY, DEFAULT_APP_BASE);
+            values.put(KEYSTORE_KEY, DEFAULT_KEYSTORE);
+        }
     }
 
     @Override
@@ -108,7 +113,11 @@ public class QuickServerXmlParser extends DefaultHandler {
     }
 
     public static QuickServerXmlParser parse(final File serverXml) {
-        final QuickServerXmlParser handler = new QuickServerXmlParser();
+        return parse(serverXml, true);
+    }
+
+    public static QuickServerXmlParser parse(final File serverXml, final 
boolean defaults) {
+        final QuickServerXmlParser handler = new 
QuickServerXmlParser(defaults);
         try {
             final SAXParser parser = FACTORY.newSAXParser();
             parser.parse(serverXml, handler);

Reply via email to