You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by tv...@apache.org on 2013/10/10 15:28:49 UTC

svn commit: r1530970 - in /tomee/tomee/trunk/tomee: tomee-catalina/src/main/java/org/apache/tomee/catalina/ tomee-common/src/main/java/org/apache/tomee/installer/ tomee-webapp/src/main/java/org/apache/tomee/webapp/installer/

Author: tveronezi
Date: Thu Oct 10 13:28:49 2013
New Revision: 1530970

URL: http://svn.apache.org/r1530970
Log:
https://issues.apache.org/jira/browse/TOMEE-1054
bug fix and a few cosmetic changes.

Added:
    tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/InstallerTools.java
    tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Status.java
Modified:
    tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
    tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
    tomee/tomee/trunk/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/installer/Runner.java

Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java?rev=1530970&r1=1530969&r2=1530970&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java (original)
+++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java Thu Oct 10 13:28:49 2013
@@ -53,6 +53,7 @@ import org.apache.tomcat.util.scan.Const
 import org.apache.tomee.catalina.deployment.TomcatWebappDeployer;
 import org.apache.tomee.installer.Installer;
 import org.apache.tomee.installer.Paths;
+import org.apache.tomee.installer.Status;
 import org.apache.tomee.loader.TomcatHelper;
 
 import java.io.File;
@@ -153,7 +154,7 @@ public class TomcatLoader implements Loa
             Paths paths = new Paths(new File(openejbWarDir));
             if (paths.verify()) {
                 Installer installer = new Installer(paths);
-                if (installer.getStatus() != Installer.Status.INSTALLED) {
+                if (installer.getStatus() != Status.INSTALLED) {
                     installer.installConfigFiles();
                 }
             }

Modified: tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java?rev=1530970&r1=1530969&r2=1530970&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java (original)
+++ tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java Thu Oct 10 13:28:49 2013
@@ -18,15 +18,14 @@
 package org.apache.tomee.installer;
 
 import org.apache.openejb.loader.IO;
+import org.apache.openejb.loader.Options;
 import org.apache.openejb.loader.SystemInstance;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
-import java.lang.reflect.Method;
 import java.util.Arrays;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.jar.JarFile;
 import java.util.zip.ZipEntry;
@@ -36,21 +35,21 @@ import java.util.zip.ZipOutputStream;
 public class Installer {
     private final Alerts alerts = new Alerts();
 
-    public enum Status {
-        NONE, INSTALLED, REBOOT_REQUIRED
-    }
+    private final Paths paths;
+    private Status status = Status.NONE;
+    private boolean force = false;
 
     private static final boolean listenerInstalled;
     private static final boolean agentInstalled;
-
-    private boolean force = false;
-
     static {
+        final Options opts = SystemInstance.get().getOptions();
         // is the OpenEJB listener installed
-        listenerInstalled = "OpenEJBListener".equals(SystemInstance.get().getOptions().get("openejb.embedder.source", "")) ||  "ServerListener".equals(SystemInstance.get().getOptions().get("openejb.embedder.source", ""));
+        listenerInstalled = "OpenEJBListener".equals(opts.get("openejb.embedder.source", ""))
+                || "ServerListener".equals(opts.get("openejb.embedder.source", ""));
 
         // is the OpenEJB javaagent installed
-        agentInstalled = invokeStaticNoArgMethod("org.apache.openejb.javaagent.Agent", "getInstrumentation") != null;
+        agentInstalled = InstallerTools.invokeStaticNoArgMethod(
+                "org.apache.openejb.javaagent.Agent", "getInstrumentation") != null;
     }
 
     public static boolean isListenerInstalled() {
@@ -61,9 +60,6 @@ public class Installer {
         return agentInstalled;
     }
 
-    private final Paths paths;
-    private Status status = Status.NONE;
-
     public Installer(Paths paths) {
         this.paths = paths;
 
@@ -73,15 +69,14 @@ public class Installer {
     }
 
     public Installer(Paths paths, boolean force) {
-        this (paths);
+        this(paths);
         this.force = force;
     }
 
-
     public Alerts getAlerts() {
         return alerts;
     }
-    
+
     public void reset() {
         alerts.reset();
     }
@@ -92,9 +87,7 @@ public class Installer {
 
     public void installAll() {
         installListener();
-
         installJavaagent();
-
         installConfigFiles();
 
         removeTomcatLibJar("annotations-api.jar");
@@ -102,7 +95,6 @@ public class Installer {
         addJavaeeInEndorsed();
 
         addTomEEAdminConfInTomcatUsers();
-
         addTomEELinkToTomcatHome();
 
         if (!alerts.hasErrors()) {
@@ -136,20 +128,20 @@ public class Installer {
         // add our listener
         final String roleUserTags =
                 "  <role rolename=\"tomee-admin\" />\n" +
-                "  <user username=\"tomee\" password=\"tomee\" roles=\"tomee-admin,manager-gui\" />\n";
-        String content = null;
+                        "  <user username=\"tomee\" password=\"tomee\" roles=\"tomee-admin,manager-gui\" />\n";
+        final String content;
         if (!securityActivated) {
             content =
-                "  <!-- Activate those lines to get access to TomEE GUI -->\n" +
-                "  <!--\n" +
-                roleUserTags +
-                "  -->\n" +
-                "</tomcat-users>\n";
+                    "  <!-- Activate those lines to get access to TomEE GUI -->\n" +
+                            "  <!--\n" +
+                            roleUserTags +
+                            "  -->\n" +
+                            "</tomcat-users>\n";
         } else {
             content =
-                "  <!-- Activate those lines to get access to TomEE GUI\n -->" +
-                roleUserTags +
-                "</tomcat-users>\n";
+                    "  <!-- Activate those lines to get access to TomEE GUI\n -->" +
+                            roleUserTags +
+                            "</tomcat-users>\n";
 
         }
         final String newTomcatUsers = tomcatUsersXml.replace("</tomcat-users>", content);
@@ -162,7 +154,6 @@ public class Installer {
 
     public void installFull() {
         installListener("org.apache.tomee.catalina.ServerListener");
-
         installJavaagent();
 
         commentDeploymentDir();
@@ -174,7 +165,6 @@ public class Installer {
         moveLibs();
 
         addTomEEAdminConfInTomcatUsers();
-
         addTomEELinkToTomcatHome();
 
         if (!alerts.hasErrors()) {
@@ -186,12 +176,12 @@ public class Installer {
         final File tomeeXml = new File(paths.getCatalinaConfDir(), "tomee.xml");
         if (!tomeeXml.exists()) {
             Installers.writeAll(tomeeXml,
-                "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
-                "<tomee>\n" +
-                "  <!-- see http://tomee.apache.org/containers-and-resources.html -->\n\n" +
-                "  <!-- activate next line to be able to deploy applications in apps -->\n" +
-                "  <!-- <Deployments dir=\"apps\" /> -->\n" +
-                "</tomee>\n", alerts);
+                    "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+                            "<tomee>\n" +
+                            "  <!-- see http://tomee.apache.org/containers-and-resources.html -->\n\n" +
+                            "  <!-- activate next line to be able to deploy applications in apps -->\n" +
+                            "  <!-- <Deployments dir=\"apps\" /> -->\n" +
+                            "</tomee>\n", alerts);
         }
     }
 
@@ -209,14 +199,13 @@ public class Installer {
 
         final String newIndeJsp = indeJsp.replaceFirst("<div id=\"actions\">",
                 "<div id=\\\"actions\\\">\r\n" +
-                "                    <div class=\"button\">\n" +
-                "                        <a class=\"container shadow\" href=\"/tomee\"><span>TomEE Gui</span></a>\n" +
-                "                    </div>");
+                        "                    <div class=\"button\">\n" +
+                        "                        <a class=\"container shadow\" href=\"/tomee\"><span>TomEE Gui</span></a>\n" +
+                        "                    </div>");
         Installers.writeAll(home, newIndeJsp, alerts);
     }
 
     private void moveLibs() {
-
         final File libs = paths.getCatalinaLibDir();
         final File[] files = paths.getOpenEJBLibDir().listFiles();
         if (files != null) {
@@ -226,29 +215,29 @@ public class Installer {
 
                 try {
                     Installers.copyFile(file, new File(libs, file.getName()));
-                    if(!file.delete()){
+                    if (!file.delete()) {
                         file.deleteOnExit();
                     }
                     alerts.addInfo("Copy " + file.getName() + " to lib");
                 } catch (IOException e) {
-                    alerts.addError("Unable to " + file.getName() + " to Tomcat lib directory.  This will need to be performed manually.", e);
+                    alerts.addError("Unable to " + file.getName() + " to Tomcat lib directory.  This will need to be " +
+                            "performed manually.", e);
                 }
             }
         }
     }
 
     private void addJavaeeInEndorsed() {
-
         File endorsed = new File(paths.getCatalinaHomeDir(), "endorsed");
         if (!endorsed.mkdir()) {
             alerts.addWarning("can't create endorsed directory");
         }
 
-
         copyClasses(paths.getJavaEEAPIJar(), new File(endorsed, "annotation-api.jar"), "javax/annotation/.*");
 
         final File jaxbApi = paths.findOpenEJBJar("geronimo-jaxb_2.2_spec");
-        copyClasses(paths.getJavaEEAPIJar(), jaxbApi, new File(endorsed, "jaxb-api.jar"), "javax/xml/bind/.*", Arrays.asList("javax/xml/bind/ContextFinder.class", "javax/xml/bind/DatatypeConverter.class"));
+        copyClasses(paths.getJavaEEAPIJar(), jaxbApi, new File(endorsed, "jaxb-api.jar"), "javax/xml/bind/.*",
+                Arrays.asList("javax/xml/bind/ContextFinder.class", "javax/xml/bind/DatatypeConverter.class"));
         removeJar(jaxbApi);
 
         // don't put jaxb-impl in endorsed since it relies on the jvm itself
@@ -260,57 +249,10 @@ public class Installer {
                 alerts.addError("can't copy " + paths.getJAXBImpl().getPath() + " to " + endorsed.getPath() + "/jaxb-impl.jar");
             }
         }
-
-        /* no more needed with the last upgrade of jaxb
-        String setClasspathSh = Installers.readAll(paths.getSetClasspathSh(), alerts);
-        if (setClasspathSh != null && !setClasspathSh.contains("any endorsed lib for java 7")) {
-            if (Installers.backup(paths.getSetClasspathSh(), alerts)) {
-                // add our magic bits to the catalina sh file
-                final String newSetClasspathSh = setClasspathSh.replace("JAVA_ENDORSED_DIRS=\"$CATALINA_HOME\"/endorsed",
-                        "# Don't override the endorsed dir if the user has set it previously\n" +
-                        "if [ -z \"$JAVA_ENDORSED_DIRS\" ]; then\n" +
-                        "  # Set the default -Djava.endorsed.dirs argument\n" +
-                        "  JAVA_ENDORSED_DIRS=\"$CATALINA_HOME\"/endorsed\n" +
-                        "  java_version=`$JRE_HOME/bin/java -version 2>&1 | grep version`\n" +
-                        "  case \"$java_version\" in \n" +
-                        "    *1.7*)\n" +
-                        "      JAVA_ENDORSED_DIRS=\"$CATALINA_HOME\"/endorsed7\n" +
-                        "    ;;\n" +
-                        "  esac\n" +
-                        "fi\n");
-                if (Installers.writeAll(paths.getSetClasspathSh(), newSetClasspathSh, alerts)) {
-                    alerts.addInfo("Endorsed lib set for java 6 and ignored for java 7 (unix)");
-                }
-            }
-        }
-
-        String setClasspathBat = Installers.readAll(paths.getSetClasspathBat(), alerts);
-        if (setClasspathBat != null && !setClasspathBat.contains("any endorsed lib for java 7")) {
-            if (Installers.backup(paths.getSetClasspathBat(), alerts)) {
-                // add our magic bits to the catalina bat file
-                // note how windows is not adapted to scripting
-                final String newSetClasspathBat = setClasspathBat.replace("set \"JAVA_ENDORSED_DIRS=%CATALINA_HOME%\\endorsed\"",
-                        "\nrem Set the default -Djava.endorsed.dirs argument\n" +
-                        "rem easier way to get java version in bat is to dump the version in a file\n" +
-                        "set JAVA_VERSION_FILE=%CATALINA_HOME%\\tmp_java_version.txt\n" +
-                        "\"%JRE_HOME%\\bin\\java\" -version 2> %JAVA_VERSION_FILE%\n" +
-                        "set /p JAVA_VERSION= < %JAVA_VERSION_FILE%\n" +
-                        "del %JAVA_VERSION_FILE%\n" +
-                        "rem extract minor version\n" +
-                        "set JAVA_VERSION=%JAVA_VERSION:~16,1%\n" +
-                        "\n" +
-                        "rem adjust endorsed lib depending on the java version\n" +
-                        "set JAVA_ENDORSED_DIRS=endorsed\n" +
-                        "if \"%JAVA_VERSION%\" == \"7\" set JAVA_ENDORSED_DIRS=\"%CATALINA_HOME%\"\\endorsed7\n");
-                if (Installers.writeAll(paths.getSetClasspathBat(), newSetClasspathBat, alerts)) {
-                    alerts.addInfo("Endorsed lib set for java 6 and ignored for java 7 (win)");
-                }
-            }
-        }
-        */
     }
 
-    private void copyClasses(final File javaEEAPIJar, final File sourceJar, final File destinationJar, final String pattern, final List<String> exceptions) {
+    private void copyClasses(final File javaEEAPIJar, final File sourceJar, final File destinationJar,
+                             final String pattern, final List<String> exceptions) {
         if (javaEEAPIJar == null) throw new NullPointerException("javaEEAPIJar");
         if (sourceJar == null) throw new NullPointerException("sourceJar");
         if (destinationJar == null) throw new NullPointerException("destinationJar");
@@ -320,23 +262,18 @@ public class Installer {
         if (destinationJar.exists()) return;
 
         try {
-
             final ByteArrayOutputStream destinationBuffer = new ByteArrayOutputStream(524288);
             final ZipOutputStream destination = new ZipOutputStream(destinationBuffer);
-
             final ZipInputStream source = new ZipInputStream(IO.read(sourceJar));
             for (ZipEntry entry; (entry = source.getNextEntry()) != null; ) {
                 final String entryName = entry.getName();
                 if (!entryName.matches(pattern) || exceptions.contains(entryName)) {
                     continue;
                 }
-
                 destination.putNextEntry(new ZipEntry(entryName));
-
                 IO.copy(source, destination);
             }
             IO.close(source);
-
             final ZipInputStream source2 = new ZipInputStream(IO.read(javaEEAPIJar));
             for (ZipEntry entry; (entry = source2.getNextEntry()) != null; ) {
                 final String entryName = entry.getName();
@@ -349,9 +286,7 @@ public class Installer {
                 IO.copy(source2, destination);
             }
             IO.close(source2);
-
             IO.close(destination);
-
             IO.copy(destinationBuffer.toByteArray(), destinationJar);
         } catch (IOException e) {
             alerts.addError(e.getMessage());
@@ -366,25 +301,17 @@ public class Installer {
         if (destinationJar.exists()) return;
 
         try {
-
             final ZipInputStream source = new ZipInputStream(IO.read(sourceJar));
-
             final ByteArrayOutputStream destinationBuffer = new ByteArrayOutputStream(524288);
             final ZipOutputStream destination = new ZipOutputStream(destinationBuffer);
-
             for (ZipEntry entry; (entry = source.getNextEntry()) != null; ) {
                 String entryName = entry.getName();
-
                 if (!entryName.matches(pattern)) continue;
-
                 destination.putNextEntry(new ZipEntry(entryName));
-
                 IO.copy(source, destination);
             }
-
             IO.close(source);
             IO.close(destination);
-
             IO.copy(destinationBuffer.toByteArray(), destinationJar);
         } catch (IOException e) {
             alerts.addError(e.getMessage());
@@ -411,23 +338,18 @@ public class Installer {
 
     public void installListener(final String listener) {
         if (listenerInstalled && !force) {
-//            addInfo("OpenEJB Listener already installed");
+            // OpenEJB Listener already installed
             return;
         }
-
         boolean copyOpenEJBLoader = true;
 
         // copy loader jar to lib
         File destination = new File(paths.getCatalinaLibDir(), paths.getOpenEJBTomcatLoaderJar().getName());
         if (destination.exists()) {
-            if (paths.getOpenEJBTomcatLoaderJar().length() != destination.length()) {
-                // md5 diff the files
-            } else {
-//                addInfo("OpenEJB loader jar already installed in Tomcat lib directory.");
+            if (paths.getOpenEJBTomcatLoaderJar().length() == destination.length()) {
                 copyOpenEJBLoader = false;
             }
         }
-
         if (copyOpenEJBLoader) {
             try {
                 Installers.copyFile(paths.getOpenEJBTomcatLoaderJar(), destination);
@@ -482,7 +404,7 @@ public class Installer {
     //       because it needs some OSGi API we don't want to add
     public void installJavaagent() {
         if (agentInstalled && !force) {
-//            addInfo("OpenEJB Agent already installed");
+            // OpenEJB Agent already installed"
             return;
         }
 
@@ -492,10 +414,7 @@ public class Installer {
         boolean copyJavaagentJar = true;
         File javaagentJar = new File(paths.getCatalinaLibDir(), "openejb-javaagent.jar");
         if (javaagentJar.exists()) {
-            if (paths.getOpenEJBJavaagentJar().length() != javaagentJar.length()) {
-                // md5 diff the files
-            } else {
-//                addInfo("OpenEJB javaagent jar already installed in Tomcat lib directory.");
+            if (paths.getOpenEJBJavaagentJar().length() == javaagentJar.length()) {
                 copyJavaagentJar = false;
             }
         }
@@ -537,17 +456,29 @@ public class Installer {
         String openejbJavaagentPath = paths.getCatalinaHomeDir().toURI().relativize(javaagentJar.toURI()).getPath();
         String newCatalinaSh = catalinaShOriginal.replace("# ----- Execute The Requested Command",
                 "# Add OpenEJB javaagent\n" +
-                "if [ -r \"$CATALINA_HOME\"/" + openejbJavaagentPath + " ]; then\n" +
-                "  JAVA_OPTS=\"\"-javaagent:$CATALINA_HOME/" + openejbJavaagentPath + "\" $JAVA_OPTS\"\n" +
-                "fi\n" +
-                "\n" +
-                "# ----- Execute The Requested Command");
+                        "if [ -r \"$CATALINA_HOME\"/" + openejbJavaagentPath + " ]; then\n" +
+                        "  JAVA_OPTS=\"\"-javaagent:$CATALINA_HOME/" + openejbJavaagentPath + "\" $JAVA_OPTS\"\n" +
+                        "fi\n" +
+                        "\n" +
+                        "# ----- Execute The Requested Command");
 
         // overwrite the catalina.sh file
         if (Installers.writeAll(paths.getCatalinaShFile(), newCatalinaSh, alerts)) {
             alerts.addInfo("Add OpenEJB JavaAgent to catalina.sh");
         }
 
+        boolean isCatalinaShExecutable = paths.getCatalinaShFile().canExecute();
+        if(!isCatalinaShExecutable) {
+            try {
+                isCatalinaShExecutable = paths.getCatalinaShFile().setExecutable(true);
+            } catch (SecurityException e) {
+                alerts.addWarning("Cannot change CatalinaSh executable attribute.");
+            }
+        }
+        if(!isCatalinaShExecutable) {
+            alerts.addWarning("CatalinaSh is not executable.");
+        }
+
         //
         // bin/catalina.bat
         //
@@ -575,17 +506,18 @@ public class Installer {
         openejbJavaagentPath = openejbJavaagentPath.replace('/', '\\');
         String newCatalinaBat = catalinaBatOriginal.replace("rem ----- Execute The Requested Command",
                 "rem Add OpenEJB javaagent\r\n" +
-                "if not exist \"%CATALINA_HOME%\\" + openejbJavaagentPath + "\" goto noOpenEJBJavaagent\r\n" +
-                "set JAVA_OPTS=\"-javaagent:%CATALINA_HOME%\\" + openejbJavaagentPath + "\" %JAVA_OPTS%\r\n" +
-                ":noOpenEJBJavaagent\r\n" +
-                "\r\n" +
-                "rem ----- Execute The Requested Command");
+                        "if not exist \"%CATALINA_HOME%\\" + openejbJavaagentPath + "\" goto noOpenEJBJavaagent\r\n" +
+                        "set JAVA_OPTS=\"-javaagent:%CATALINA_HOME%\\" + openejbJavaagentPath + "\" %JAVA_OPTS%\r\n" +
+                        ":noOpenEJBJavaagent\r\n" +
+                        "\r\n" +
+                        "rem ----- Execute The Requested Command");
 
         // overwrite the catalina.bat file
         if (Installers.writeAll(paths.getCatalinaBatFile(), newCatalinaBat, alerts)) {
             alerts.addInfo("Add OpenEJB JavaAgent to catalina.bat");
         }
     }
+
     /**
      * Installs conf/tomee.xml and conf/logging.properties files.
      * This method retrieves the tomee.xml and logging.properties files
@@ -618,7 +550,6 @@ public class Installer {
         //
         // conf/tomee.xml
         //
-
         File openEjbXmlFile = new File(confDir, "tomee.xml");
         if (!openEjbXmlFile.exists()) {
             // read in the openejb.xml file from the openejb core jar
@@ -783,13 +714,11 @@ public class Installer {
                     }
                 }
             }
-
         }
 
         //
         // conf/web.xml
         //
-
         JarFile openejbTomcatCommonJar;
         try {
             openejbTomcatCommonJar = new JarFile(paths.geOpenEJBTomcatCommonJar());
@@ -802,30 +731,4 @@ public class Installer {
             alerts.addInfo("Set jasper in production mode in TomEE web.xml");
         }
     }
-
-    public static Object invokeStaticNoArgMethod(String className, String propertyName) {
-        try {
-            Class<?> clazz = loadClass(className, Installer.class.getClassLoader());
-            Method method = clazz.getMethod(propertyName);
-            return method.invoke(null, (Object[]) null);
-        } catch (Throwable e) {
-            return null;
-        }
-    }
-
-    public static Class<?> loadClass(String className, ClassLoader classLoader) throws ClassNotFoundException {
-        LinkedList<ClassLoader> loaders = new LinkedList<ClassLoader>();
-        for (ClassLoader loader = classLoader; loader != null; loader = loader.getParent()) {
-            loaders.addFirst(loader);
-        }
-        for (ClassLoader loader : loaders) {
-            try {
-                return Class.forName(className, true, loader);
-            } catch (ClassNotFoundException e) {
-                // no-op
-            }
-        }
-        return null;
-    }
-
 }

Added: tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/InstallerTools.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/InstallerTools.java?rev=1530970&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/InstallerTools.java (added)
+++ tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/InstallerTools.java Thu Oct 10 13:28:49 2013
@@ -0,0 +1,33 @@
+package org.apache.tomee.installer;
+
+import java.lang.reflect.Method;
+import java.util.LinkedList;
+
+public class InstallerTools {
+
+    public static Object invokeStaticNoArgMethod(String className, String propertyName) {
+        try {
+            Class<?> clazz = loadClass(className, Installer.class.getClassLoader());
+            Method method = clazz.getMethod(propertyName);
+            return method.invoke(null, (Object[]) null);
+        } catch (Throwable e) {
+            return null;
+        }
+    }
+
+    public static Class<?> loadClass(String className, ClassLoader classLoader) throws ClassNotFoundException {
+        LinkedList<ClassLoader> loaders = new LinkedList<ClassLoader>();
+        for (ClassLoader loader = classLoader; loader != null; loader = loader.getParent()) {
+            loaders.addFirst(loader);
+        }
+        for (ClassLoader loader : loaders) {
+            try {
+                return Class.forName(className, true, loader);
+            } catch (ClassNotFoundException e) {
+                // no-op
+            }
+        }
+        return null;
+    }
+
+}

Added: tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Status.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Status.java?rev=1530970&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Status.java (added)
+++ tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Status.java Thu Oct 10 13:28:49 2013
@@ -0,0 +1,22 @@
+/**
+ *
+ * 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.tomee.installer;
+
+public enum Status {
+    NONE, INSTALLED, REBOOT_REQUIRED
+}

Modified: tomee/tomee/trunk/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/installer/Runner.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/installer/Runner.java?rev=1530970&r1=1530969&r2=1530970&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/installer/Runner.java (original)
+++ tomee/tomee/trunk/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/installer/Runner.java Thu Oct 10 13:28:49 2013
@@ -65,7 +65,7 @@ public class Runner {
         final Paths paths = new Paths(openejbWarDir);
         final Installer installer = new Installer(paths);
         final List<Map<String, String>> result = new ArrayList<Map<String, String>>();
-        if (Installer.Status.NONE.equals(installer.getStatus())) {
+        if (org.apache.tomee.installer.Status.NONE.equals(installer.getStatus())) {
             paths.reset();
             installer.reset();
             paths.setCatalinaHomeDir(this.catalinaHome);