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 17:31:57 UTC

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

Author: tveronezi
Date: Wed Jun  6 15:31:56 2012
New Revision: 1346948

URL: http://svn.apache.org/viewvc?rev=1346948&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/servlet/DeployServlet.java
      - copied, changed from r1346883, openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/FileUploadServlet.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/FileUploadServlet.java
    openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml
    openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/Application.js
    openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationController.js
    openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationModel.js
    openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/view/ApplicationViewApps.js

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=1346948&r1=1346947&r2=1346948&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 15:31:56 2012
@@ -55,6 +55,11 @@
     </servlet>
 
     <servlet>
+        <servlet-name>DeployServlet</servlet-name>
+        <servlet-class>org.apache.tomee.webapp.servlet.DeployServlet</servlet-class>
+    </servlet>
+
+    <servlet>
         <servlet-name>WsConsole</servlet-name>
         <servlet-class>org.apache.tomee.webapp.servlet.ConsoleServlet</servlet-class>
     </servlet>
@@ -85,6 +90,11 @@
     </servlet-mapping>
 
     <servlet-mapping>
+        <servlet-name>DeployServlet</servlet-name>
+        <url-pattern>/deploy/*</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
         <servlet-name>WsConsole</servlet-name>
         <url-pattern>/ws/console/*</url-pattern>
     </servlet-mapping>

Copied: openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java (from r1346883, openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/FileUploadServlet.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java?p2=openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java&p1=openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/FileUploadServlet.java&r1=1346883&r2=1346948&rev=1346948&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/FileUploadServlet.java (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/DeployServlet.java Wed Jun  6 15:31:56 2012
@@ -21,46 +21,33 @@ import com.google.gson.Gson;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 
-import javax.naming.NamingException;
 import javax.servlet.ServletException;
-import javax.servlet.annotation.MultipartConfig;
-import javax.servlet.http.*;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
-import java.lang.System;
 import java.util.HashMap;
 import java.util.Map;
 
 
-public class FileUploadServlet extends HttpServlet {
-    public static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, FileUploadServlet.class);
+public class DeployServlet extends HttpServlet {
+    public static final Logger LOGGER = Logger.getInstance(LogCategory.OPENEJB, DeployServlet.class);
 
     @Override
     protected void doPost(HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
-        final File tempDir = (File) getServletContext().getAttribute("javax.servlet.context.tempdir");
+        final String path = req.getParameter("path");
+        final File file = new File(path);
 
-        final Part filePart = req.getPart("file");
-        final String filename = getFileName(filePart);
-        final File file = new File(tempDir, filename);
-        filePart.write(file.getAbsolutePath());
+        //TODO: deploy the file as David said (DeployerEjb)
+        //TODO: avoid sending the full file path. I dont think this is safe
 
         final Map<String, Object> result = new HashMap<String, Object>();
         result.put("file", file.getAbsolutePath());
+        result.put("deployed", Boolean.TRUE);
 
         resp.setContentType("text/plain");
         resp.setCharacterEncoding("UTF-8");
         resp.getWriter().write(new Gson().toJson(result));
     }
-
-    private String getFileName(Part part) {
-        String partHeader = part.getHeader("content-disposition");
-        for (String cd : partHeader.split(";")) {
-            if (cd.trim().startsWith("filename")) {
-                return cd.substring(cd.indexOf('=') + 1).trim().replace("\"", "");
-            }
-        }
-        return null;
-    }
 }

Modified: openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/FileUploadServlet.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/FileUploadServlet.java?rev=1346948&r1=1346947&r2=1346948&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/FileUploadServlet.java (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/FileUploadServlet.java Wed Jun  6 15:31:56 2012
@@ -21,15 +21,13 @@ import com.google.gson.Gson;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 
-import javax.naming.NamingException;
 import javax.servlet.ServletException;
-import javax.servlet.annotation.MultipartConfig;
-import javax.servlet.http.*;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.Part;
 import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
-import java.lang.System;
 import java.util.HashMap;
 import java.util.Map;
 

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=1346948&r1=1346947&r2=1346948&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 15:31:56 2012
@@ -55,6 +55,11 @@
     </servlet>
 
     <servlet>
+        <servlet-name>DeployServlet</servlet-name>
+        <servlet-class>org.apache.tomee.webapp.servlet.DeployServlet</servlet-class>
+    </servlet>
+
+    <servlet>
         <servlet-name>WsConsole</servlet-name>
         <servlet-class>org.apache.tomee.webapp.servlet.ConsoleServlet</servlet-class>
     </servlet>
@@ -85,6 +90,11 @@
     </servlet-mapping>
 
     <servlet-mapping>
+        <servlet-name>DeployServlet</servlet-name>
+        <url-pattern>/deploy/*</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
         <servlet-name>WsConsole</servlet-name>
         <url-pattern>/ws/console/*</url-pattern>
     </servlet-mapping>

Modified: openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/Application.js
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/Application.js?rev=1346948&r1=1346947&r2=1346948&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/Application.js (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/Application.js Wed Jun  6 15:31:56 2012
@@ -27,4 +27,6 @@ $(document).ready(function () {
     TOMEE.ApplicationController();
 });
 
-TOMEE.baseURL = '/tomee/';
+TOMEE.baseURL = function(url) {
+    return '/tomee/' + url;
+};

Modified: openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationController.js
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationController.js?rev=1346948&r1=1346947&r2=1346948&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationController.js (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationController.js Wed Jun  6 15:31:56 2012
@@ -27,6 +27,10 @@ TOMEE.ApplicationController = function (
     //The views communicate with the controller (or other components) through this object
     var channel = TOMEE.ApplicationChannel({});
 
+    var model = TOMEE.ApplicationModel({
+        channel:channel
+    });
+
     var appsView = TOMEE.ApplicationViewApps({
         channel:channel
     });
@@ -119,6 +123,14 @@ TOMEE.ApplicationController = function (
         alert('name: ' + params.bean.text);
     });
 
+    channel.bind('deploy.file.uploaded', function (params) {
+        model.deployApp(params.file);
+    });
+
+    channel.bind('app.deployment.result', function (params) {
+        alert('file: ' + params.file + '; deployed: ' + params.deployed + ';');
+    });
+
     var view = TOMEE.ApplicationView({
         channel:channel,
         groups:{

Modified: openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationModel.js
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationModel.js?rev=1346948&r1=1346947&r2=1346948&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationModel.js (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationModel.js Wed Jun  6 15:31:56 2012
@@ -26,77 +26,30 @@ TOMEE.ApplicationModel = function (cfg) 
 
     var channel = cfg.channel;
 
-    /**
-     * Prepare internal values.
-     *
-     * @param data request json value
-     */
-    var prepareDataMethod = cfg.prepareDataMethod;
-    if(!prepareDataMethod) {
-        throw "You need to give me the prepareDataMethod";
-    }
-
-    var methodType = cfg.methodType;
-    if(!methodType) {
-        throw "You need to give me the methodType (GET, POST, PUT etc)";
-    }
-
-    var url = cfg.url;
-    if(!url) {
-        throw "You need to give me the url";
-    }
-
-    //holder for all the request parameters.
-    var requestParameters = {};
-
-    //keep tracking of the current request
-    //so we can cancel it if necessary
-    var currentRequest = null;
-
-
-    /**
-     * Delayed task for the remote request.
-     */
-    var load = new TOMEE.DelayedTask({
-        callback: function () {
-            //if we already have a running request, cancel it.
-            if (currentRequest) {
-                currentRequest.abort();
+    var request = function (params) {
+        $.ajax({
+                url:params.url,
+                type:params.method,
+                data:params.data,
+                dataType:'json',
+                success:params.success,
+                error:params.error
             }
+        );
+    };
 
-            //start a new request
-            currentRequest = $.ajax({
-                type: methodType,
-                dataType: 'json',
-                data: requestParameters,
-                url: url,
-                success: function (data) {
-                    prepareDataMethod(data);
-                    channel.send('connection_new_data', {});
+    return {
+        deployApp:function (path) {
+            request({
+                method:'POST',
+                url:TOMEE.baseURL('deploy'),
+                data:{
+                    path:path
                 },
-                error: function (data) {
-                    channel.send('connection_exception', {});
+                success:function (data) {
+                    channel.send('app.deployment.result', data);
                 }
             });
         }
-    });
-
-    var getRequestParameter = function (key) {
-        return requestParameters[key];
-    };
-
-    var setRequestParameter = function (key, value) {
-        requestParameters[key] = value;
-    };
-
-    return {
-        setRequestParameter: setRequestParameter,
-        getRequestParameter: getRequestParameter,
-        load: function () {
-            //wait 1 second before triggering this request
-            //the user may be still selecting his parameters
-            //the last calling thread will trigger the request
-            load.delay(1000);
-        }
     };
 };
\ No newline at end of file

Modified: openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/view/ApplicationViewApps.js
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/view/ApplicationViewApps.js?rev=1346948&r1=1346947&r2=1346948&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/view/ApplicationViewApps.js (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/view/ApplicationViewApps.js Wed Jun  6 15:31:56 2012
@@ -76,8 +76,11 @@ TOMEE.ApplicationViewApps = function (cf
                 fileForm.myFrame.unbind('load', fileUploadedHandler);
                 var text = TOMEE.utils.getSafe(function() {
                     return fileForm.myFrame.contents().first()[0].body.innerText;
-                }, '')
-                alert(text);
+                }, '');
+
+                var json = jQuery.parseJSON(text);
+
+                channel.send('deploy.file.uploaded', json);
             };
 
             var frameId = TOMEE.Sequence.next('uploadFrame');
@@ -88,7 +91,7 @@ TOMEE.ApplicationViewApps = function (cf
                     style:'background-color:#EEE; border-top: 1px solid #E5E5E5; height: 30px;margin-bottom: 0px;',
                     method: 'post',
                     enctype: 'multipart/form-data',
-                    action: TOMEE.baseURL + 'upload',
+                    action: TOMEE.baseURL('upload'),
                     target: frameId
                 },
                 children:[
@@ -116,11 +119,8 @@ TOMEE.ApplicationViewApps = function (cf
                         }
                     }
                 ]
-
             });
 
-
-
             content.append(fileForm.main);
         })();