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 2012/06/06 21:58:45 UTC

svn commit: r1347083 - in /openejb/trunk/openejb/tomee: tomee-plus-webapp/src/main/webapp/WEB-INF/ tomee-webapp/src/main/java/org/apache/tomee/webapp/ tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ tomee-webapp/src/main/webapp/WEB-INF/

Author: tveronezi
Date: Wed Jun  6 19:58:44 2012
New Revision: 1347083

URL: http://svn.apache.org/viewvc?rev=1347083&view=rev
Log:
https://issues.apache.org/jira/browse/TOMEE-205
preparing the deployment servlet

Added:
    openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/TomeeException.java
    openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ErrorServlet.java
      - copied, changed from r1347015, openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java
Modified:
    openejb/trunk/openejb/tomee/tomee-plus-webapp/src/main/webapp/WEB-INF/web.xml
    openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java
    openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml

Modified: openejb/trunk/openejb/tomee/tomee-plus-webapp/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-plus-webapp/src/main/webapp/WEB-INF/web.xml?rev=1347083&r1=1347082&r2=1347083&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-plus-webapp/src/main/webapp/WEB-INF/web.xml (original)
+++ openejb/trunk/openejb/tomee/tomee-plus-webapp/src/main/webapp/WEB-INF/web.xml Wed Jun  6 19:58:44 2012
@@ -21,8 +21,16 @@
          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
          version="3.0" metadata-complete="true">
 
+    <display-name>Tomee Application</display-name>
 
-    <display-name>OpenEJB Loader Application</display-name>
+    <error-page>
+        <exception-type>
+            org.apache.tomee.webapp.TomeeException
+        </exception-type>
+        <location>
+            /error
+        </location>
+    </error-page>
 
     <listener>
         <listener-class>org.apache.tomee.webapp.listener.UserSessionListener</listener-class>
@@ -60,6 +68,11 @@
     </servlet>
 
     <servlet>
+        <servlet-name>ErrorServlet</servlet-name>
+        <servlet-class>org.apache.tomee.webapp.servlet.ErrorServlet</servlet-class>
+    </servlet>
+
+    <servlet>
         <servlet-name>WsConsole</servlet-name>
         <servlet-class>org.apache.tomee.webapp.servlet.ConsoleServlet</servlet-class>
     </servlet>
@@ -90,6 +103,11 @@
     </servlet-mapping>
 
     <servlet-mapping>
+        <servlet-name>ErrorServlet</servlet-name>
+        <url-pattern>/error/*</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
         <servlet-name>DeployServlet</servlet-name>
         <url-pattern>/deploy/*</url-pattern>
     </servlet-mapping>

Added: openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/TomeeException.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/TomeeException.java?rev=1347083&view=auto
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/TomeeException.java (added)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/TomeeException.java Wed Jun  6 19:58:44 2012
@@ -0,0 +1,25 @@
+/*
+ * 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.webapp;
+
+public class TomeeException extends RuntimeException {
+
+    public TomeeException(Throwable cause) {
+        super(cause);
+    }
+}

Modified: openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java?rev=1347083&r1=1347082&r2=1347083&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java Wed Jun  6 19:58:44 2012
@@ -18,19 +18,17 @@
 package org.apache.tomee.webapp.servlet;
 
 import com.google.gson.Gson;
-import javax.ejb.EJB;
-import org.apache.openejb.OpenEJBException;
-import org.apache.openejb.OpenEJBRuntimeException;
 import org.apache.openejb.assembler.Deployer;
 import org.apache.openejb.assembler.classic.AppInfo;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
+import org.apache.tomee.webapp.TomeeException;
 
+import javax.ejb.EJB;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.File;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
@@ -44,22 +42,19 @@ public class DeployServlet extends HttpS
 
     @Override
     protected void doPost(HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
-        final String path;
+        final Map<String, Object> result = new HashMap<String, Object>();
+
         try {
             final AppInfo info = deployer.deploy(req.getParameter("path"));
 
             // the path is translated from the parameter to a file path
             // the input can be "mvn:org.superbiz/rest-example.1.0/war" for instance or an http url
-            path = info.path;
-        } catch (OpenEJBException e) {
-            throw new OpenEJBRuntimeException(e); // TODO: show back to the user the exception
-        }
+            result.put("info", info.path);
+            result.put("appId", info.appId);
 
-        final File file = new File(path);
-        final Map<String, Object> result = new HashMap<String, Object>();
-        result.put("deployed", Boolean.TRUE);
-        // TODO: is it needed or do we use the input path since it is more explicit for the user?
-        result.put("file", file.getAbsolutePath());
+        } catch (Exception e) {
+            throw new TomeeException(e);
+        }
 
         resp.setContentType("text/plain");
         resp.setCharacterEncoding("UTF-8");

Copied: openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ErrorServlet.java (from r1347015, openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ErrorServlet.java?p2=openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ErrorServlet.java&p1=openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java&r1=1347015&r2=1347083&rev=1347083&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/ErrorServlet.java Wed Jun  6 19:58:44 2012
@@ -18,48 +18,47 @@
 package org.apache.tomee.webapp.servlet;
 
 import com.google.gson.Gson;
-import javax.inject.Inject;
-import org.apache.openejb.OpenEJBException;
-import org.apache.openejb.OpenEJBRuntimeException;
-import org.apache.openejb.assembler.Deployer;
-import org.apache.openejb.assembler.classic.AppInfo;
-import org.apache.openejb.util.LogCategory;
-import org.apache.openejb.util.Logger;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.File;
 import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
 import java.util.HashMap;
 import java.util.Map;
 
 
-public class DeployServlet extends HttpServlet {
-    public static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, DeployServlet.class);
-
-    @Inject
-    private Deployer deployer;
+public class ErrorServlet extends HttpServlet {
 
     @Override
     protected void doPost(HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
-        final String path;
-        try {
-            final AppInfo info = deployer.deploy(req.getParameter("path"));
-
-            // the path is translated from the parameter to a file path
-            // the input can be "mvn:org.superbiz/rest-example.1.0/war" for instance or an http url
-            path = info.path;
-        } catch (OpenEJBException e) {
-            throw new OpenEJBRuntimeException(e); // TODO: show back to the user the exception
-        }
+        writeJson(req, resp);
+    }
+
+    @Override
+    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+        writeJson(req, resp);
+    }
 
-        final File file = new File(path);
+    private void writeJson(final HttpServletRequest req, final HttpServletResponse resp) throws IOException {
         final Map<String, Object> result = new HashMap<String, Object>();
-        result.put("deployed", Boolean.TRUE);
-        // TODO: is it needed or do we use the input path since it is more explicit for the user?
-        result.put("file", file.getAbsolutePath());
+
+        result.put("status_code", String.valueOf(req.getAttribute("javax.servlet.error.status_code")));
+        result.put("message", String.valueOf(req.getAttribute("javax.servlet.error.message")));
+
+        {
+            final Throwable throwable = (Throwable) req.getAttribute("javax.servlet.error.exception");
+
+            final Writer writer = new StringWriter();
+            final PrintWriter printWriter = new PrintWriter(writer);
+            throwable.printStackTrace(printWriter);
+
+            result.put("stackTrace", writer.toString());
+            result.put("exception_type", throwable.getClass().getName());
+        }
 
         resp.setContentType("text/plain");
         resp.setCharacterEncoding("UTF-8");

Modified: openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml?rev=1347083&r1=1347082&r2=1347083&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml Wed Jun  6 19:58:44 2012
@@ -21,8 +21,16 @@
          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
          version="3.0" metadata-complete="true">
 
+    <display-name>Tomee Application</display-name>
 
-    <display-name>OpenEJB Loader Application</display-name>
+    <error-page>
+        <exception-type>
+            org.apache.tomee.webapp.TomeeException
+        </exception-type>
+        <location>
+            /error
+        </location>
+    </error-page>
 
     <listener>
         <listener-class>org.apache.tomee.webapp.listener.UserSessionListener</listener-class>
@@ -60,6 +68,11 @@
     </servlet>
 
     <servlet>
+        <servlet-name>ErrorServlet</servlet-name>
+        <servlet-class>org.apache.tomee.webapp.servlet.ErrorServlet</servlet-class>
+    </servlet>
+
+    <servlet>
         <servlet-name>WsConsole</servlet-name>
         <servlet-class>org.apache.tomee.webapp.servlet.ConsoleServlet</servlet-class>
     </servlet>
@@ -90,6 +103,11 @@
     </servlet-mapping>
 
     <servlet-mapping>
+        <servlet-name>ErrorServlet</servlet-name>
+        <url-pattern>/error/*</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
         <servlet-name>DeployServlet</servlet-name>
         <url-pattern>/deploy/*</url-pattern>
     </servlet-mapping>