[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