[jbpm-commits] JBoss JBPM SVN: r6213 - projects/jsf-console/branches/jsf-console-3.2-soa/gpd-deployer/src/main/java/org/jbpm/web.

do-not-reply at jboss.org do-not-reply at jboss.org
Mon Mar 8 19:51:01 EST 2010


Author: alex.guizar at jboss.com
Date: 2010-03-08 19:51:01 -0500 (Mon, 08 Mar 2010)
New Revision: 6213

Modified:
   projects/jsf-console/branches/jsf-console-3.2-soa/gpd-deployer/src/main/java/org/jbpm/web/ProcessUploadServlet.java
Log:
JBPM-2678: merge r6092:6117 from branch jsf-console-3.3.1.SP

Modified: projects/jsf-console/branches/jsf-console-3.2-soa/gpd-deployer/src/main/java/org/jbpm/web/ProcessUploadServlet.java
===================================================================
--- projects/jsf-console/branches/jsf-console-3.2-soa/gpd-deployer/src/main/java/org/jbpm/web/ProcessUploadServlet.java	2010-03-08 11:35:50 UTC (rev 6212)
+++ projects/jsf-console/branches/jsf-console-3.2-soa/gpd-deployer/src/main/java/org/jbpm/web/ProcessUploadServlet.java	2010-03-09 00:51:01 UTC (rev 6213)
@@ -24,7 +24,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintWriter;
-import java.net.MalformedURLException;
+import java.util.List;
 import java.util.zip.ZipInputStream;
 
 import javax.servlet.ServletException;
@@ -41,7 +41,31 @@
 import org.jbpm.JbpmConfiguration;
 import org.jbpm.JbpmContext;
 import org.jbpm.graph.def.ProcessDefinition;
+import org.jbpm.jpdl.JpdlException;
+import org.jbpm.jpdl.xml.Problem;
+import org.jbpm.util.IoUtil;
 
+/**
+ * <p>
+ * Deploys process definitions zipped and posted as multipart requests.
+ * </p>
+ * <h3>Configuration</h3> Servlet context initialization parameters
+ * <table border="1">
+ * <tr>
+ * <th>Name</th>
+ * <th>Description</th>
+ * <th>Default value</th>
+ * </tr>
+ * <tr>
+ * <td>jbpm.configuration.resource</td>
+ * <td>name of classpath resource containing the configuration</td>
+ * <td>jbpm.cfg.xml</td>
+ * </tr>
+ * </table>
+ * 
+ * @author Koen Aers
+ * @author Alejandro Guizar
+ */
 public class ProcessUploadServlet extends javax.servlet.http.HttpServlet {
 
   private static final long serialVersionUID = 1L;
@@ -54,9 +78,7 @@
   }
 
   protected void doGet(HttpServletRequest request, HttpServletResponse response)
-      throws ServletException, IOException {
-    if (log.isTraceEnabled()) log.trace("handling status request");
-
+    throws ServletException, IOException {
     PrintWriter out = response.getWriter();
     writeHeader(out);
     out.println("<p>GPD deployer is operational</p>");
@@ -64,9 +86,7 @@
   }
 
   protected void doPost(HttpServletRequest request, HttpServletResponse response)
-      throws ServletException, IOException {
-    if (log.isTraceEnabled()) log.trace("handling upload request");
-
+    throws ServletException, IOException {
     try {
       InputStream processStream = parseRequest(request, response);
       JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
@@ -74,6 +94,15 @@
         ProcessDefinition processDefinition = parseProcessArchive(processStream);
         deployProcessDefinition(processDefinition, response);
       }
+      catch (JpdlException e) {
+        List problems = e.getProblems();
+        StringBuffer message = new StringBuffer();
+        for (int i = 0, n = problems.size(); i < n; i++) {
+          Problem problem = (Problem) problems.get(i);
+          message.append(problem).append(IoUtil.lineSeparator);
+        }
+        response.sendError(HttpServletResponse.SC_BAD_REQUEST, message.toString());
+      }
       finally {
         jbpmContext.close();
       }
@@ -83,7 +112,7 @@
     }
   }
 
-  private void writeHeader(PrintWriter out) throws MalformedURLException {
+  private void writeHeader(PrintWriter out) {
     out.println("<html>");
     out.println("<head>");
     out.println("<title>Process Deployment</title>");
@@ -99,35 +128,31 @@
     out.println("</html>");
   }
 
-  private InputStream parseRequest(HttpServletRequest request,
-      HttpServletResponse response) throws IOException, FileUploadException {
+  private InputStream parseRequest(HttpServletRequest request, HttpServletResponse response)
+    throws IOException, FileUploadException {
     // check if request is multipart content
-    if (!ServletFileUpload.isMultipartContent(request))
+    if (!ServletFileUpload.isMultipartContent(request)) {
       throw new FileUploadException("request does not carry multipart content");
-
+    }
     // Create a new file upload handler
     ServletFileUpload upload = new ServletFileUpload();
     // Parse the request
     for (FileItemIterator i = upload.getItemIterator(request); i.hasNext();) {
       FileItemStream part = i.next();
       if (!part.isFormField()) {
-        if (log.isTraceEnabled())
-          log.trace("retrieved file " + part.getName());
+        if (log.isTraceEnabled()) log.trace("retrieved file " + part.getName());
         return part.openStream();
       }
     }
-
-    // no file found, bang
+    // file not found
     throw new FileUploadException("request contains no file");
   }
 
-  private ProcessDefinition parseProcessArchive(InputStream processStream)
-      throws IOException {
+  private ProcessDefinition parseProcessArchive(InputStream processStream) throws IOException {
     ZipInputStream processArchiveStream = new ZipInputStream(processStream);
     try {
       ProcessDefinition processDefinition = ProcessDefinition.parseParZipInputStream(processArchiveStream);
-      if (log.isTraceEnabled())
-        log.trace("parsed process definition " + processDefinition.getName());
+      if (log.isTraceEnabled()) log.trace("parsed " + processDefinition);
       return processDefinition;
     }
     finally {
@@ -136,21 +161,20 @@
   }
 
   private void deployProcessDefinition(ProcessDefinition processDefinition,
-      HttpServletResponse response) throws IOException {
-    String processName = processDefinition.getName();
+    HttpServletResponse response) throws IOException {
     JbpmContext jbpmContext = jbpmConfiguration.getCurrentJbpmContext();
     try {
       jbpmContext.deployProcessDefinition(processDefinition);
+      if (log.isTraceEnabled()) log.trace("deployed " + processDefinition);
 
-      if (log.isTraceEnabled())
-        log.trace("deployed process definition " + processName);
-
       PrintWriter out = response.getWriter();
       writeHeader(out);
       out.println("<h3>Deployment report</h3>");
       out.print("<p>Process <em>");
-      out.print(processName);
-      out.println("</em> was deployed successfully</p>");
+      out.print(processDefinition.getName());
+      out.print("</em> v");
+      out.print(processDefinition.getVersion());
+      out.println(" deployed successfully</p>");
       out.print("<p><a href='");
       out.print(getServletContext().getContextPath());
       out.println("/index.html'>Deploy another process</a></p>");
@@ -159,8 +183,9 @@
     catch (RuntimeException e) {
       jbpmContext.setRollbackOnly();
 
-      log.error("failed to deploy process definition " + processName, e);
-      response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Failed to deploy process");
+      log.error("failed to deploy " + processDefinition, e);
+      response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
+        "Failed to deploy process");
     }
   }
 



More information about the jbpm-commits mailing list