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 2014/02/20 01:07:19 UTC
svn commit: r1570004 - in /tomee/tomee/trunk: ./
tomee/tomee-common/src/main/java/org/apache/tomee/installer/
tomee/tomee-webapp/
tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/installer/
tomee/tomee-webapp/src/main/webapp/ tomee/tomee-webapp...
Author: tveronezi
Date: Thu Feb 20 00:07:18 2014
New Revision: 1570004
URL: http://svn.apache.org/r1570004
Log:
https://issues.apache.org/jira/browse/TOMEE-1128
Align Installer and WebAccess GUI style
Added:
tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/InstallerInterface.java
tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/PathsInterface.java
tomee/tomee/trunk/tomee/tomee-webapp/src/test/
tomee/tomee/trunk/tomee/tomee-webapp/src/test/java/
tomee/tomee/trunk/tomee/tomee-webapp/src/test/java/org/
tomee/tomee/trunk/tomee/tomee-webapp/src/test/java/org/apache/
tomee/tomee/trunk/tomee/tomee-webapp/src/test/java/org/apache/tomee/
tomee/tomee/trunk/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/
tomee/tomee/trunk/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/installer/
tomee/tomee/trunk/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/installer/test/
tomee/tomee/trunk/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/installer/test/RunnerTest.java
Removed:
tomee/tomee/trunk/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/installer/Status.java
Modified:
tomee/tomee/trunk/pom.xml
tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java
tomee/tomee/trunk/tomee/tomee-webapp/pom.xml
tomee/tomee/trunk/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/installer/InstallerServlet.java
tomee/tomee/trunk/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/installer/Runner.java
tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml
tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/app.css
tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/app.js
tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/index.html
Modified: tomee/tomee/trunk/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/pom.xml?rev=1570004&r1=1570003&r2=1570004&view=diff
==============================================================================
--- tomee/tomee/trunk/pom.xml (original)
+++ tomee/tomee/trunk/pom.xml Thu Feb 20 00:07:18 2014
@@ -180,6 +180,7 @@
<!-- arquillian related -->
<version.arquillian.bom>1.1.2.Final</version.arquillian.bom>
<version.shrinkwrap.resolver.bom>2.0.1</version.shrinkwrap.resolver.bom>
+ <version.shrinkwrap.resolvers>2.0.2</version.shrinkwrap.resolvers>
</properties>
<build>
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=1570004&r1=1570003&r2=1570004&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 Feb 20 00:07:18 2014
@@ -32,7 +32,7 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
-public class Installer {
+public class Installer implements InstallerInterface {
private final Alerts alerts = new Alerts();
private final Paths paths;
@@ -73,18 +73,27 @@ public class Installer {
this.force = force;
}
+ @Override
+ public PathsInterface getPaths() {
+ return paths;
+ }
+
+ @Override
public Alerts getAlerts() {
return alerts;
}
+ @Override
public void reset() {
alerts.reset();
}
+ @Override
public Status getStatus() {
return status;
}
+ @Override
public void installAll() {
installListener();
installJavaagent();
@@ -187,6 +196,9 @@ public class Installer {
private void addTomEELinkToTomcatHome() {
final File home = paths.getHome();
+ if(!home.exists()) {
+ return;
+ }
final String indeJsp = Installers.readAll(home, alerts);
if (indeJsp == null) {
return;
Added: tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/InstallerInterface.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/InstallerInterface.java?rev=1570004&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/InstallerInterface.java (added)
+++ tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/InstallerInterface.java Thu Feb 20 00:07:18 2014
@@ -0,0 +1,33 @@
+/**
+ *
+ * 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 interface InstallerInterface {
+
+ void installAll();
+
+ Status getStatus();
+
+ Alerts getAlerts();
+
+ PathsInterface getPaths();
+
+ void reset();
+
+}
Modified: tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java?rev=1570004&r1=1570003&r2=1570004&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java (original)
+++ tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java Thu Feb 20 00:07:18 2014
@@ -15,6 +15,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.tomee.installer;
import org.apache.openejb.jpa.integration.MakeTxLookup;
@@ -30,7 +31,7 @@ import java.util.List;
*
*
*/
-public class Paths {
+public class Paths implements PathsInterface {
/**
* The openejb webapp directory under <<tomcat-install>>/webapps
@@ -65,6 +66,7 @@ public class Paths {
* Returns the directory represented by the catalina.home system property
* @return The directory represented by the catalina.home system property
*/
+ @Override
public File getCatalinaHomeDir() {
if (catalinaHomeDir == null) {
String catalinaHome = System.getProperty("catalina.home");
@@ -78,6 +80,7 @@ public class Paths {
* Sets the catalina home directory
* @param catalinaHomeDir the absolute path of the catalina home directory
*/
+ @Override
public void setCatalinaHomeDir(String catalinaHomeDir) {
this.catalinaHomeDir = createFile(catalinaHomeDir);
}
@@ -85,6 +88,7 @@ public class Paths {
* Sets the catalina home directory
* @param catalinaHomeDir the file representing the absolute path of the catalina home directory
*/
+ @Override
public void setCatalinaHomeDir(File catalinaHomeDir) {
this.catalinaHomeDir = catalinaHomeDir;
}
@@ -92,6 +96,7 @@ public class Paths {
* Returns the directory represented by the catalina.base system property
* @return The directory represented by the catalina.base system property
*/
+ @Override
public File getCatalinaBaseDir() {
if (catalinaBaseDir == null) {
String catalinaBase = System.getProperty("catalina.base");
@@ -105,6 +110,7 @@ public class Paths {
* Sets the catalina base directory
* @param catalinaBaseDir the absolute path of the catalina base directory
*/
+ @Override
public void setCatalinaBaseDir(String catalinaBaseDir) {
setCatalinaBaseDir(createFile(catalinaBaseDir));
}
@@ -112,6 +118,7 @@ public class Paths {
* Sets the catalina base directory
* @param catalinaBaseDir the file representing the absolute path of the catalina base directory
*/
+ @Override
public void setCatalinaBaseDir(File catalinaBaseDir) {
this.catalinaBaseDir = catalinaBaseDir;
}
@@ -119,6 +126,7 @@ public class Paths {
* Returns the file representing <<tomcat-install>>/conf/server.xml
* @return the file representing <<tomcat-install>>/conf/server.xml
*/
+ @Override
public File getServerXmlFile() {
if (serverXmlFile == null) {
File confdir = getCatalinaConfDir();
@@ -130,6 +138,7 @@ public class Paths {
return serverXmlFile;
}
+ @Override
public File getHome() {
return new File(getCatalinaBaseDir(), "webapps/ROOT/index.jsp");
}
@@ -138,6 +147,7 @@ public class Paths {
* Sets the server.xml file
* @param serverXmlFile the absolute path of the server.xml file
*/
+ @Override
public void setServerXmlFile(String serverXmlFile) {
this.serverXmlFile = createFile(serverXmlFile);
}
@@ -145,6 +155,7 @@ public class Paths {
* Sets the server.xml file
* @param serverXmlFile the file representing the absolute path of the server.xml file
*/
+ @Override
public void setServerXmlFile(File serverXmlFile) {
this.serverXmlFile = serverXmlFile;
}
@@ -152,6 +163,7 @@ public class Paths {
* Returns the directory representing {@link #catalinaHomeDir}/lib for Tomcat 6. For Tomcat 5.x it returns {@link #catalinaHomeDir}/server/lib
* @return the directory representing {@link #catalinaHomeDir}/lib
*/
+ @Override
public File getCatalinaLibDir() {
File catalinaHomeDir = getCatalinaHomeDir();
@@ -167,6 +179,7 @@ public class Paths {
* Returns the directory representing {@link #catalinaBaseDir}/conf
* @return the directory representing {@link #catalinaBaseDir}/conf
*/
+ @Override
public File getCatalinaConfDir() {
File catalinaBaseDir = getCatalinaBaseDir();
@@ -178,6 +191,7 @@ public class Paths {
* Returns the directory representing {@link #catalinaHomeDir}/bin
* @return the directory representing {@link #catalinaHomeDir}/bin
*/
+ @Override
public File getCatalinaBinDir() {
File catalinaHomeDir = getCatalinaHomeDir();
@@ -189,6 +203,7 @@ public class Paths {
* Returns the {@link #getCatalinaBinDir()}/catalina.sh file
* @return the {@link #getCatalinaBinDir()}/catalina.sh file
*/
+ @Override
public File getCatalinaShFile() {
File binDir = getCatalinaBinDir();
@@ -200,6 +215,7 @@ public class Paths {
* Returns the {@link #getCatalinaBinDir()}/catalina.bat file
* @return the {@link #getCatalinaBinDir()}/catalina.bat file
*/
+ @Override
public File getCatalinaBatFile() {
File binDir = getCatalinaBinDir();
@@ -212,6 +228,7 @@ public class Paths {
* Returns null if {@link #openejbWarDir} is null
* @return the {@link #openejbWarDir}/lib directory
*/
+ @Override
public File getOpenEJBLibDir() {
if (openejbWarDir == null) return null;
@@ -221,14 +238,17 @@ public class Paths {
* Returns the tomee-loader.jar file
* @return the tomee-loader.jar file
*/
+ @Override
public File getOpenEJBTomcatLoaderJar() {
return findOpenEJBJar("tomee-loader");
}
+ @Override
public File getJavaEEAPIJar() {
return findOpenEJBJar("javaee-api");
}
+ @Override
public File getJAXBImpl() {
return findOpenEJBJar("jaxb-impl");
}
@@ -237,6 +257,7 @@ public class Paths {
* Returns the openejb-javaagent.jar file
* @return the openejb-javaagent.jar file
*/
+ @Override
public File getOpenEJBJavaagentJar() {
return findOpenEJBJar("openejb-javaagent");
}
@@ -244,22 +265,27 @@ public class Paths {
* Returns the openejb-core.jar file
* @return the openejb-core.jar file
*/
+ @Override
public File getOpenEJBCoreJar() {
return findOpenEJBJar("openejb-core");
}
+ @Override
public File geOpenEJBTomcatCommonJar() {
return findOpenEJBJar("tomee-common");
}
+ @Override
public File findOpenEJBJar(String namePrefix) {
return findJar(getOpenEJBLibDir(), namePrefix);
}
+ @Override
public File findOpenEJBWebJar(String namePrefix) {
return findJar(getOpenEJBWebLibDir(), namePrefix);
}
+ @Override
public File findTomEELibJar(final String prefix) {
File jar = findJar(getCatalinaLibDir(), prefix);
if (jar == null) { // maybe tomcat/openejb integration
@@ -314,6 +340,7 @@ public class Paths {
*
* @return true if verification succeeds
*/
+ @Override
public boolean verify() {
if (openejbWarDir == null) {
addError("OpenEJB war is not unpacked");
@@ -364,6 +391,7 @@ public class Paths {
/**
* Clears out all verification errors from the underlying list
*/
+ @Override
public void reset() {
errors.clear();
}
@@ -371,6 +399,7 @@ public class Paths {
* Checks to see if there are any verification errors
* @return true if there are verification errors
*/
+ @Override
public boolean hasErrors() {
return !errors.isEmpty();
}
@@ -378,6 +407,7 @@ public class Paths {
* Returns a list of verification errors
* @return a list of verification errors
*/
+ @Override
public List<String> getErrors() {
return errors;
}
@@ -458,6 +488,7 @@ public class Paths {
return null;
}
+ @Override
public File getOpenEJBWebLibDir() {
if (openEJBWebLibDir == null) {
openEJBWebLibDir = new File(openejbWarDir, "WEB-INF/lib");
@@ -465,6 +496,7 @@ public class Paths {
return openEJBWebLibDir;
}
+ @Override
public File getTomcatUsersXml() {
if (tomcatUsersXml == null) {
final File confdir = getCatalinaConfDir();
@@ -476,6 +508,7 @@ public class Paths {
return tomcatUsersXml;
}
+ @Override
public File getSetClasspathSh() {
final File binDir = getCatalinaBinDir();
if (binDir == null) {
@@ -484,6 +517,7 @@ public class Paths {
return new File(binDir, "setclasspath.sh");
}
+ @Override
public File getSetClasspathBat() {
final File binDir = getCatalinaBinDir();
if (binDir == null) {
Added: tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/PathsInterface.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/PathsInterface.java?rev=1570004&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/PathsInterface.java (added)
+++ tomee/tomee/trunk/tomee/tomee-common/src/main/java/org/apache/tomee/installer/PathsInterface.java Thu Feb 20 00:07:18 2014
@@ -0,0 +1,90 @@
+/**
+ *
+ * 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;
+
+import java.io.File;
+import java.util.List;
+
+public interface PathsInterface {
+ File getCatalinaHomeDir();
+
+ void setCatalinaHomeDir(String catalinaHomeDir);
+
+ void setCatalinaHomeDir(File catalinaHomeDir);
+
+ File getCatalinaBaseDir();
+
+ void setCatalinaBaseDir(String catalinaBaseDir);
+
+ void setCatalinaBaseDir(File catalinaBaseDir);
+
+ File getServerXmlFile();
+
+ File getHome();
+
+ void setServerXmlFile(String serverXmlFile);
+
+ void setServerXmlFile(File serverXmlFile);
+
+ File getCatalinaLibDir();
+
+ File getCatalinaConfDir();
+
+ File getCatalinaBinDir();
+
+ File getCatalinaShFile();
+
+ File getCatalinaBatFile();
+
+ File getOpenEJBLibDir();
+
+ File getOpenEJBTomcatLoaderJar();
+
+ File getJavaEEAPIJar();
+
+ File getJAXBImpl();
+
+ File getOpenEJBJavaagentJar();
+
+ File getOpenEJBCoreJar();
+
+ File geOpenEJBTomcatCommonJar();
+
+ File findOpenEJBJar(String namePrefix);
+
+ File findOpenEJBWebJar(String namePrefix);
+
+ File findTomEELibJar(String prefix);
+
+ boolean verify();
+
+ void reset();
+
+ boolean hasErrors();
+
+ List<String> getErrors();
+
+ File getOpenEJBWebLibDir();
+
+ File getTomcatUsersXml();
+
+ File getSetClasspathSh();
+
+ File getSetClasspathBat();
+}
Modified: tomee/tomee/trunk/tomee/tomee-webapp/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webapp/pom.xml?rev=1570004&r1=1570003&r2=1570004&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webapp/pom.xml (original)
+++ tomee/tomee/trunk/tomee/tomee-webapp/pom.xml Thu Feb 20 00:07:18 2014
@@ -27,12 +27,13 @@
<groupId>org.apache.openejb</groupId>
<version>1.6.1-SNAPSHOT</version>
</parent>
-
<modelVersion>4.0.0</modelVersion>
<artifactId>tomee-webapp</artifactId>
<packaging>jar</packaging>
<name>OpenEJB :: TomEE :: Webapp</name>
-
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
<build>
<plugins>
<plugin> <!-- the jar is only for resources and other classes are for the gui -->
@@ -82,6 +83,12 @@
</build>
<dependencies>
<dependency>
+ <groupId>org.easymock</groupId>
+ <artifactId>easymock</artifactId>
+ <version>3.2</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>3.1.0</version>
Modified: tomee/tomee/trunk/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/installer/InstallerServlet.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/installer/InstallerServlet.java?rev=1570004&r1=1570003&r2=1570004&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/installer/InstallerServlet.java (original)
+++ tomee/tomee/trunk/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/installer/InstallerServlet.java Thu Feb 20 00:07:18 2014
@@ -17,6 +17,9 @@
package org.apache.tomee.webapp.installer;
+import org.apache.tomee.installer.Installer;
+import org.apache.tomee.installer.Paths;
+
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
@@ -30,6 +33,9 @@ import java.util.Map;
public class InstallerServlet extends HttpServlet {
private String escape(String str) {
+ if (str == null) {
+ return "";
+ }
return str.replaceAll("\"", "\\\\\"").replaceAll("\\\\", "\\\\\\\\");
}
@@ -50,16 +56,16 @@ public class InstallerServlet extends Ht
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
final ServletContext ctx = req.getServletContext();
final String rootPath = ctx.getRealPath("/");
- final Status statusManager = new Status(new File(rootPath));
+ final Runner installer = new Runner(new Installer(new Paths(new File(rootPath))));
resp.setContentType("application/json");
- resp.getOutputStream().print(getJsonList(statusManager.get()));
+ resp.getOutputStream().print(getJsonList(installer.execute(false)));
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
final ServletContext ctx = req.getServletContext();
final String rootPath = ctx.getRealPath("/");
- final Runner installer = new Runner(new File(rootPath));
+ final Runner installer = new Runner(new Installer(new Paths(new File(rootPath))));
if (req.getParameter("catalinaBaseDir") != null && "".equals(req.getParameter("catalinaBaseDir").trim())) {
installer.setCatalinaBaseDir(req.getParameter("catalinaBaseDir").trim());
}
@@ -70,6 +76,6 @@ public class InstallerServlet extends Ht
installer.setServerXmlFile(req.getParameter("serverXmlFile").trim());
}
resp.setContentType("application/json");
- resp.getOutputStream().print(getJsonList(installer.execute()));
+ resp.getOutputStream().print(getJsonList(installer.execute(true)));
}
}
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=1570004&r1=1570003&r2=1570004&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 Feb 20 00:07:18 2014
@@ -18,8 +18,8 @@
package org.apache.tomee.webapp.installer;
-import org.apache.tomee.installer.Installer;
-import org.apache.tomee.installer.Paths;
+import org.apache.tomee.installer.InstallerInterface;
+import org.apache.tomee.installer.PathsInterface;
import javax.naming.Context;
import javax.naming.InitialContext;
@@ -31,13 +31,16 @@ import java.util.Map;
import java.util.Properties;
public class Runner {
- private final File openejbWarDir;
+ private final InstallerInterface installer;
private String catalinaHome = System.getProperty("catalina.home");
private String catalinaBase = System.getProperty("catalina.base");
private String serverXmlFile = System.getProperty("catalina.base") + "/conf/server.xml";
- public Runner(File openejbWarDir) {
- this.openejbWarDir = openejbWarDir;
+ private static List<Map<String, String>> installerResults = null;
+ private static org.apache.tomee.installer.Status installerStatus = null;
+
+ public Runner(InstallerInterface installer) {
+ this.installer = installer;
}
public void setCatalinaHome(String catalinaHome) {
@@ -52,33 +55,38 @@ public class Runner {
this.serverXmlFile = serverXmlFile;
}
- private void setAlerts(String key, List<String> messages, List<Map<String, String>> result) {
+ private void setAlerts(String key, List<String> messages) {
if (messages == null) {
return;
}
for (String message : messages) {
- result.add(Common.build(key, message));
+ installerResults.add(Common.build(key, message));
}
}
- public List<Map<String, String>> execute() {
- final Paths paths = new Paths(openejbWarDir);
- final Installer installer = new Installer(paths);
- final List<Map<String, String>> result = new ArrayList<Map<String, String>>();
- if (org.apache.tomee.installer.Status.NONE.equals(installer.getStatus())) {
- paths.reset();
- installer.reset();
- paths.setCatalinaHomeDir(this.catalinaHome);
- paths.setCatalinaBaseDir(this.catalinaBase);
- paths.setServerXmlFile(this.serverXmlFile);
- if (paths.verify()) {
- installer.installAll();
- }
+ public synchronized List<Map<String, String>> execute(boolean install) {
+ if (org.apache.tomee.installer.Status.INSTALLED.equals(installerStatus) ||
+ org.apache.tomee.installer.Status.REBOOT_REQUIRED.equals(installerStatus)) {
+ return installerResults;
+ }
+ final PathsInterface paths = installer.getPaths();
+ paths.reset();
+ installer.reset();
+ paths.setCatalinaHomeDir(this.catalinaHome);
+ paths.setCatalinaBaseDir(this.catalinaBase);
+ paths.setServerXmlFile(this.serverXmlFile);
+ if (paths.verify() && install) {
+ installer.installAll();
}
- result.add(Common.build("status", String.valueOf(installer.getStatus())));
- setAlerts("errors", installer.getAlerts().getErrors(), result);
- setAlerts("warnings", installer.getAlerts().getWarnings(), result);
- setAlerts("infos", installer.getAlerts().getInfos(), result);
+ installerResults = new ArrayList<Map<String, String>>();
+ installerResults.add(Common.build("catalinaHomeDir", String.valueOf(catalinaHome)));
+ installerResults.add(Common.build("catalinaBaseDir", String.valueOf(catalinaBase)));
+ installerResults.add(Common.build("serverXmlFile", String.valueOf(serverXmlFile)));
+ installerStatus = installer.getStatus();
+ installerResults.add(Common.build("status", String.valueOf(installerStatus)));
+ setAlerts("errors", installer.getAlerts().getErrors());
+ setAlerts("warnings", installer.getAlerts().getWarnings());
+ setAlerts("infos", installer.getAlerts().getInfos());
{
boolean hasHome = false;
boolean doesHomeExist = false;
@@ -95,10 +103,10 @@ public class Runner {
hasLibDirectory = libDir.exists();
}
}
- result.add(Common.build("hasHome", String.valueOf(hasHome)));
- result.add(Common.build("doesHomeExist", String.valueOf(doesHomeExist)));
- result.add(Common.build("isHomeDirectory", String.valueOf(isHomeDirectory)));
- result.add(Common.build("hasLibDirectory", String.valueOf(hasLibDirectory)));
+ installerResults.add(Common.build("hasHome", String.valueOf(hasHome)));
+ installerResults.add(Common.build("doesHomeExist", String.valueOf(doesHomeExist)));
+ installerResults.add(Common.build("isHomeDirectory", String.valueOf(isHomeDirectory)));
+ installerResults.add(Common.build("hasLibDirectory", String.valueOf(hasLibDirectory)));
}
{
boolean wereTheOpenEJBClassesInstalled = false;
@@ -137,11 +145,11 @@ public class Runner {
} catch (Exception e) {
// noop
}
- result.add(Common.build("wereTheOpenEJBClassesInstalled", String.valueOf(wereTheOpenEJBClassesInstalled)));
- result.add(Common.build("wereTheEjbClassesInstalled", String.valueOf(wereTheEjbClassesInstalled)));
- result.add(Common.build("wasOpenEJBStarted", String.valueOf(wasOpenEJBStarted)));
- result.add(Common.build("canILookupAnything", String.valueOf(canILookupAnything)));
+ installerResults.add(Common.build("wereTheOpenEJBClassesInstalled", String.valueOf(wereTheOpenEJBClassesInstalled)));
+ installerResults.add(Common.build("wereTheEjbClassesInstalled", String.valueOf(wereTheEjbClassesInstalled)));
+ installerResults.add(Common.build("wasOpenEJBStarted", String.valueOf(wasOpenEJBStarted)));
+ installerResults.add(Common.build("canILookupAnything", String.valueOf(canILookupAnything)));
}
- return result;
+ return installerResults;
}
}
Modified: tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml?rev=1570004&r1=1570003&r2=1570004&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml (original)
+++ tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml Thu Feb 20 00:07:18 2014
@@ -60,7 +60,7 @@
<security-constraint>
<web-resource-collection>
<web-resource-name>Static Content</web-resource-name>
- <url-pattern>/app/lib/*</url-pattern>
+ <url-pattern>/webjars/*</url-pattern>
</web-resource-collection>
</security-constraint>
<security-constraint>
Modified: tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/app.css
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/app.css?rev=1570004&r1=1570003&r2=1570004&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/app.css (original)
+++ tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/app.css Thu Feb 20 00:07:18 2014
@@ -15,28 +15,99 @@
* limitations under the License.
*/
-div.ux-status-panel {
+div.ux-hidden {
+ display: none;
+}
+
+.ux-contentarea {
margin: 0;
position: absolute;
- top: 5px;
- bottom: 270px;
- right: 5px;
- left: 5px;
+ bottom: 0;
+ right: 0;
+ left: 0;
+ top: 50px;
+ overflow: hidden;
}
-div.ux-status-panel > div.panel-body{
+
+.ux-full-screen {
margin: 0;
position: absolute;
- top: 45px;
- right: 5px;
- left: 5px;
- bottom: 5px;
- overflow: auto;
+ bottom: 0;
+ right: 0;
+ left: 0;
+ top: 0;
+ overflow: hidden;
}
-div.ux-installer-panel {
+
+div.ux-installer > div {
margin: 0;
position: absolute;
- bottom: 5px;
right: 5px;
left: 5px;
- height: 260px;
-}
\ No newline at end of file
+}
+
+div.ux-installer > div.ux-status-panel {
+ top: 5px;
+ bottom: 255px;
+ overflow: auto;
+}
+
+div.ux-installer > div.ux-installer-params-panel {
+ height: 245px;
+ bottom: 5px;
+}
+
+div.ux-installer > div.ux-webaccess-installer {
+ top: 5px;
+ bottom: 5px;
+}
+
+p.lead {
+ text-align: center;
+ margin: 0;
+}
+
+.site-wrapper {
+ display: table;
+ width: 100%;
+ height: 100%; /* For at least Firefox */
+ min-height: 100%;
+}
+
+.site-wrapper-inner {
+ display: table-cell;
+ vertical-align: top;
+}
+
+.cover-container {
+ margin-right: auto;
+ margin-left: auto;
+}
+
+.inner {
+ padding: 30px;
+}
+
+.cover {
+ padding: 0 20px;
+}
+
+.cover {
+ padding: 10px 20px;
+ font-weight: bold;
+}
+
+@media (min-width: 768px) {
+ .site-wrapper-inner {
+ vertical-align: middle;
+ }
+ .cover-container {
+ width: 100%;
+ }
+}
+
+@media (min-width: 992px) {
+ .cover-container {
+ width: 700px;
+ }
+}
Modified: tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/app.js
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/app.js?rev=1570004&r1=1570003&r2=1570004&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/app.js (original)
+++ tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/app.js Thu Feb 20 00:07:18 2014
@@ -35,8 +35,7 @@ $(function () {
method: 'POST',
dataType: 'json',
success: function (data) {
- populateGrid(data);
- notification.modal({});
+ window.location.reload();
}
});
});
@@ -51,7 +50,7 @@ $(function () {
}
}
- function populateGrid(data) {
+ function setData(data) {
var table = $($('.ux-status-table').get(0));
table.empty();
var systemStatus = {};
@@ -59,21 +58,26 @@ $(function () {
systemStatus[item.key] = item.value;
table.append('<tr><td>' + item.key + '</td><td>' + item.value + '</td></tr>')
});
- if (data && data.length > 0) {
- if (systemStatus.status === 'NONE') {
- installBtn.removeClass('disabled');
- }
- catalinaHome.val(systemStatus.catalinaHomeDir);
- catalinaBase.val(systemStatus.catalinaBaseDir);
- serverXmlFile.val(systemStatus.serverXmlFile);
+ if (systemStatus.status === 'INSTALLED') {
+ $('.ux-server-ready-panel').removeClass('ux-hidden');
+ var providerLink = $($('.ux-provider-url').get(0));
+ providerLink.attr('href', window.location.href + 'ejb');
+ providerLink.html(window.location.href + 'ejb');
+ } else if (systemStatus.status === 'REBOOT_REQUIRED') {
+ $('.ux-installer-reboot-panel').removeClass('ux-hidden');
+ } else {
+ $('.ux-installer-panel').removeClass('ux-hidden');
}
+ catalinaHome.val(systemStatus.catalinaHomeDir);
+ catalinaBase.val(systemStatus.catalinaBaseDir);
+ serverXmlFile.val(systemStatus.serverXmlFile);
}
$.ajaxSetup({ cache: false });
$.ajax({
- url: 'installer',
+ url: 'installer?ts=' + (new Date()).getTime(),
method: 'GET',
dataType: 'json',
- success: populateGrid
+ success: setData
});
});
\ No newline at end of file
Modified: tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/index.html
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/index.html?rev=1570004&r1=1570003&r2=1570004&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/index.html (original)
+++ tomee/tomee/trunk/tomee/tomee-webapp/src/main/webapp/index.html Thu Feb 20 00:07:18 2014
@@ -25,65 +25,96 @@ limitations under the License.
<script src="webjars/bootstrap/3.1.0/js/bootstrap.min.js"></script>
<script src="app.js"></script>
</head>
+
<body>
-<div class="panel panel-default ux-status-panel">
- <div class="panel-heading">
- <h3 class="panel-title">System Status</h3>
- </div>
- <div class="panel-body">
- <table class="table ux-status-table"></table>
+<nav class="navbar navbar-inverse navbar-fixed-top">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex8-collapse">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="http://tomee.apache.org/documentation.html">Apache TomEE</a>
</div>
-</div>
-<div class="panel panel-default ux-installer-panel">
- <div class="panel-heading">
- <h3 class="panel-title">Installer</h3>
+ <div class="collapse navbar-collapse navbar-ex8-collapse">
+ <ul class="nav navbar-nav">
+ <li class="ux-app-menu-item active"><a href="#">Installer</a></li>
+ </ul>
</div>
- <div class="panel-body">
- <form class="bs-example form-horizontal">
- <div class="form-group">
- <label for="catalinaHome" class="col-lg-2 control-label">catalinaHome</label>
+</nav>
+<div class="ux-contentarea">
+ <div class="ux-installer ux-installer-panel ux-full-screen ux-hidden">
+ <div class="panel panel-default ux-status-panel">
+ <div class="panel-heading">
+ <h3 class="panel-title">System Status</h3>
+ </div>
+ <div class="panel-body">
+ <table class="table ux-status-table"></table>
+ </div>
+ </div>
+ <div class="panel panel-default ux-installer-params-panel">
+ <div class="panel-heading">
+ <h3 class="panel-title">Installer</h3>
+ </div>
+ <div class="panel-body">
+ <form class="bs-example form-horizontal">
+ <div class="form-group">
+ <label for="catalinaHome" class="col-lg-2 control-label">catalinaHome</label>
- <div class="col-lg-10">
- <input type="text" class="form-control ux-catalinaHome-txt" id="catalinaHome"/>
- </div>
- </div>
- <div class="form-group">
- <label for="catalinaBase" class="col-lg-2 control-label">catalinaBase</label>
+ <div class="col-lg-10">
+ <input type="text" class="form-control ux-catalinaHome-txt" id="catalinaHome"/>
+ </div>
+ </div>
+ <div class="form-group">
+ <label for="catalinaBase" class="col-lg-2 control-label">catalinaBase</label>
- <div class="col-lg-10">
- <input type="text" class="form-control ux-catalinaBase-txt" id="catalinaBase"/>
- </div>
+ <div class="col-lg-10">
+ <input type="text" class="form-control ux-catalinaBase-txt" id="catalinaBase"/>
+ </div>
+ </div>
+ <div class="form-group">
+ <label for="serverXmlFile" class="col-lg-2 control-label">serverXmlFile</label>
+
+ <div class="col-lg-10">
+ <input type="text" class="form-control ux-serverXmlFile-txt" id="serverXmlFile"/>
+ </div>
+ </div>
+ <div class="form-group">
+ <div class="col-lg-offset-2 col-lg-10">
+ <a href="installer" class="btn btn-primary ux-install-btn">Confirm</a>
+ </div>
+ </div>
+ </form>
</div>
- <div class="form-group">
- <label for="serverXmlFile" class="col-lg-2 control-label">serverXmlFile</label>
+ </div>
+ </div>
- <div class="col-lg-10">
- <input type="text" class="form-control ux-serverXmlFile-txt" id="serverXmlFile"/>
+ <div class="ux-installer ux-server-ready-panel ux-full-screen ux-hidden">
+ <div class="site-wrapper">
+ <div class="site-wrapper-inner">
+ <div class="cover-container">
+ <div class="inner cover">
+ <p class="lead">Your server is fully installed.</p>
+ <p class="lead">Provider URL: <a class="ux-provider-url" href="#"></a></p>
+ </div>
</div>
</div>
- <div class="form-group">
- <div class="col-lg-offset-2 col-lg-10">
- <a href="installer" class="btn btn-primary disabled ux-install-btn">Confirm</a>
+ </div>
+ </div>
+
+ <div class="ux-installer ux-installer-reboot-panel ux-full-screen ux-hidden">
+ <div class="site-wrapper">
+ <div class="site-wrapper-inner">
+ <div class="cover-container">
+ <div class="inner cover">
+ <p class="lead">Please restart your server to complete the installation process.
+ </p>
+ </div>
</div>
</div>
- </form>
+ </div>
</div>
</div>
-<div class="modal fade ux-install-notification">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
- <h4 class="modal-title">System installed</h4>
- </div>
- <div class="modal-body">
- <p>Restart TomEE to apply changes.</p>
- </div>
- <div class="modal-footer">
- <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
- </div>
- </div><!-- /.modal-content -->
- </div><!-- /.modal-dialog -->
-</div><!-- /.modal -->
</body>
</html>
\ No newline at end of file
Added: tomee/tomee/trunk/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/installer/test/RunnerTest.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/installer/test/RunnerTest.java?rev=1570004&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/installer/test/RunnerTest.java (added)
+++ tomee/tomee/trunk/tomee/tomee-webapp/src/test/java/org/apache/tomee/webapp/installer/test/RunnerTest.java Thu Feb 20 00:07:18 2014
@@ -0,0 +1,70 @@
+package org.apache.tomee.webapp.installer.test;
+
+import org.apache.tomee.installer.Alerts;
+import org.apache.tomee.installer.InstallerInterface;
+import org.apache.tomee.installer.PathsInterface;
+import org.apache.tomee.installer.Status;
+import org.apache.tomee.webapp.installer.Runner;
+import org.easymock.EasyMock;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.List;
+import java.util.Map;
+
+public class RunnerTest {
+
+ private Object getValue(String key, List<Map<String, String>> runnerResults) {
+ for (Map<String, String> result : runnerResults) {
+ if (key.equals(result.get("key"))) {
+ return result.get("value");
+ }
+ }
+ return null;
+ }
+
+ @Test
+ public void testInstaller() {
+ {
+ PathsInterface paths = EasyMock.createNiceMock(PathsInterface.class);
+ paths.reset();
+ EasyMock.expectLastCall();
+ paths.verify();
+ EasyMock.expectLastCall().andReturn(Boolean.TRUE).anyTimes();
+
+ InstallerInterface installer = EasyMock.createNiceMock(InstallerInterface.class);
+ installer.getPaths();
+ EasyMock.expectLastCall().andReturn(paths).anyTimes();
+ installer.reset();
+ EasyMock.expectLastCall();
+ installer.getStatus();
+ EasyMock.expectLastCall().andReturn(Status.NONE);
+ installer.getStatus();
+ EasyMock.expectLastCall().andReturn(Status.NONE);
+ installer.getStatus();
+ EasyMock.expectLastCall().andReturn(Status.REBOOT_REQUIRED);
+ installer.getAlerts();
+ EasyMock.expectLastCall().andReturn(new Alerts()).anyTimes();
+
+
+ Runner runner = new Runner(installer);
+ EasyMock.replay(paths, installer);
+ Assert.assertEquals("NONE", getValue("status", runner.execute(false)));
+ Assert.assertEquals("NONE", getValue("status", runner.execute(false)));
+ Assert.assertEquals("REBOOT_REQUIRED", getValue("status", runner.execute(true)));
+ Assert.assertEquals("REBOOT_REQUIRED", getValue("status", runner.execute(false)));
+ Assert.assertEquals("REBOOT_REQUIRED", getValue("status", runner.execute(true)));
+ EasyMock.verify(paths, installer);
+ }
+ {
+ InstallerInterface installer = EasyMock.createStrictMock(InstallerInterface.class);
+ Runner runner = new Runner(installer);
+ EasyMock.replay(installer);
+ Assert.assertEquals("REBOOT_REQUIRED", getValue("status", runner.execute(false)));
+ Assert.assertEquals("REBOOT_REQUIRED", getValue("status", runner.execute(true)));
+ EasyMock.verify(installer);
+ }
+
+ }
+
+}