[jboss-svn-commits] JBL Code SVN: r36144 - in labs/jbossrules/trunk/drools-guvnor/src: main/java/org/drools/guvnor/server/files and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Dec 1 08:46:31 EST 2010


Author: jervisliu
Date: 2010-12-01 08:46:30 -0500 (Wed, 01 Dec 2010)
New Revision: 36144

Added:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files/ActionsAPIServlet.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/rest/
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/rest/ActionsAPI.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/rest/Parameters.java
   labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/ActionAPIServletTest.java
Modified:
   labs/jbossrules/trunk/drools-guvnor/src/main/webapp/WEB-INF/web.xml
   labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/MockHTTPRequest.java
   labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/MockHTTPResponse.java
Log:
GUVNOR-1080?\239?\188?\154INCOMPLETE GUVNOR REST APIS

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files/ActionsAPIServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files/ActionsAPIServlet.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/files/ActionsAPIServlet.java	2010-12-01 13:46:30 UTC (rev 36144)
@@ -0,0 +1,43 @@
+package org.drools.guvnor.server.files;
+
+import org.drools.guvnor.server.rest.ActionsAPI;
+import org.drools.repository.RulesRepository;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Map;
+import org.drools.guvnor.server.RepositoryServiceServlet;
+import org.drools.guvnor.server.ServiceImplementation;
+
+/**
+ * Entrance point to basic actions API.
+ *
+ * Fix for GUVNOR-1080
+ *
+ * @author andrew.waterman at gmail.com
+ */
+public class ActionsAPIServlet extends RepositoryServlet {
+
+    public static final Logger log = LoggerFactory.getLogger(
+            ActionsAPIServlet.class);
+
+    @Override
+    protected void doPost(final HttpServletRequest req,
+        final HttpServletResponse res) throws ServletException, IOException
+    {
+        final RulesRepository repository = RestAPIServlet.getRepository();
+        final ServiceImplementation service = RepositoryServiceServlet.getService();
+
+        doAuthorizedAction(req, res, new A() {
+            public void a() throws Exception {
+                Map map = req.getParameterMap();
+                ActionsAPI api = new ActionsAPI();
+                api.post(service, repository, req, res);
+            }
+        });
+    }
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/rest/ActionsAPI.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/rest/ActionsAPI.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/rest/ActionsAPI.java	2010-12-01 13:46:30 UTC (rev 36144)
@@ -0,0 +1,84 @@
+package org.drools.guvnor.server.rest;
+
+import org.drools.guvnor.server.ServiceImplementation;
+import org.drools.repository.*;
+
+import java.io.*;
+import java.net.URLDecoder;
+import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Basic API for executing simple actions against Guvnor:
+ * compilation and snapshot creation for packages.
+ *
+ * Fix for GUVNOR-1080
+ *
+ * @author andrew.waterman at gmail.com
+ */
+public class ActionsAPI {
+
+    /**
+     * Post is for actions.
+     *
+     * URL should be:  http://servername:port/action/compile
+     *                 http://servername:port/action/snapshot
+     *
+     * parameters:  package-name
+     *              snapshot-name
+     *
+     * @throws IOException
+     * @throws RulesRepositoryException */
+    public void post(ServiceImplementation service, RulesRepository repository,
+            HttpServletRequest request, HttpServletResponse response)
+        throws IOException
+    {
+        try {
+            Map<String,String> parameters = request.getParameterMap();
+            String[] pathstr = split (request.getPathTranslated());
+            String packageName = parameters.get(Parameters.PackageName.toString());
+            if (pathstr [ 0 ].equals("compile")) {
+                if (repository.containsPackage(packageName)) {
+                    PackageIterator iter = repository.listPackages();
+                    while (iter.hasNext()) {
+                        PackageItem p = iter.next();
+                        if (p.getName().equals(packageName)) {
+                            String uuid = p.getUUID();
+                            service.buildPackage(uuid, true);
+                            break;
+                        }}
+                    } 
+            } else if (pathstr [ 0 ].equals ("snapshot"))
+                if(repository.containsPackage(packageName)) {
+                    repository.createPackageSnapshot(packageName, (String)
+                        parameters.get(Parameters.SnapshotName.toString()));
+            } else {
+                throw new RulesRepositoryException ("Unknown action request: "
+                        + request.getContextPath());
+            }
+            
+            response.setContentType( "text/html" );
+            response.setStatus(200);
+            response.getWriter().write("OK");
+
+        } catch (Exception e) {
+            throw new IOException (e.getMessage());
+        }
+    }
+
+    /**
+     * Split from RestAPI
+     */
+    String[] split(String path) throws UnsupportedEncodingException {
+        if (path.indexOf("action") > -1) {
+            path = path.split("action")[1];
+        }
+        if (path.startsWith("/")) path = path.substring(1);
+        String[] bits = path.split("/");
+        for (int i = 0; i < bits.length; i++) {
+            bits[i] = URLDecoder.decode(bits[i], "UTF-8");
+        }
+        return bits;
+    }
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/rest/Parameters.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/rest/Parameters.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/rest/Parameters.java	2010-12-01 13:46:30 UTC (rev 36144)
@@ -0,0 +1,21 @@
+package org.drools.guvnor.server.rest;
+
+/**
+ * Simple parameter names for Actions exposed
+ * in the ActionsAPI.
+ */
+public enum Parameters {
+    
+    PackageName {
+        public String toString() {
+            return "package-name";
+        }
+    },
+
+    SnapshotName {
+        public String toString() {
+            return "snapshot-name";
+        }
+    };
+
+}

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/webapp/WEB-INF/web.xml
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/webapp/WEB-INF/web.xml	2010-12-01 13:30:07 UTC (rev 36143)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/webapp/WEB-INF/web.xml	2010-12-01 13:46:30 UTC (rev 36144)
@@ -1,134 +1,127 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
-<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
-    <display-name>JBoss Drools Guvnor</display-name>
-    <filter>
-        <filter-name>Seam Filter</filter-name>
-        <filter-class>org.jboss.seam.web.ContextFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>Seam Filter</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-    <listener>
-        <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
-    </listener>
-    <!-- servlets - mostly to do with file management -->
+<?xml version="1.0"?>
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+                         "http://java.sun.com/dtd/web-app_2_3.dtd">
+<web-app>
+	<display-name>JBoss Drools Guvnor</display-name>
+	<filter>
+		<filter-name>Seam Filter</filter-name>
+		<filter-class>org.jboss.seam.web.ContextFilter</filter-class>
+	</filter>
+	<filter-mapping>
+		<filter-name>Seam Filter</filter-name>
+		<url-pattern>/*</url-pattern>
+	</filter-mapping>
+	<listener>
+		<listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
+	</listener>
+	<!-- servlets - mostly to do with file management -->
+	<servlet>
+		<servlet-name>guvnorService</servlet-name>
+		<servlet-class>org.drools.guvnor.server.RepositoryServiceServlet</servlet-class>
+	</servlet>
+	<servlet>
+		<servlet-name>securityService</servlet-name>
+		<servlet-class>org.drools.guvnor.server.SecurityServiceServlet</servlet-class>
+	</servlet>
+	<servlet>
+		<servlet-name>AssetFileServlet</servlet-name>
+		<servlet-class>org.drools.guvnor.server.files.AssetFileServlet</servlet-class>
+	</servlet>
+	<servlet>
+		<servlet-name>PackageDeploymentServlet</servlet-name>
+		<servlet-class>org.drools.guvnor.server.files.PackageDeploymentServlet</servlet-class>
+	</servlet>
+	<servlet>
+		<servlet-name>RepositoryBackupServlet</servlet-name>
+		<servlet-class>org.drools.guvnor.server.files.RepositoryBackupServlet</servlet-class>
+	</servlet>
+	<servlet>
+		<servlet-name>WebdavServlet</servlet-name>
+		<servlet-class>org.drools.guvnor.server.files.WebdavServlet</servlet-class>
+	</servlet>
+	<servlet>
+		<servlet-name>RestAPIServlet</servlet-name>
+		<servlet-class>org.drools.guvnor.server.files.RestAPIServlet</servlet-class>
+	</servlet>
     <servlet>
-        <servlet-name>guvnorService</servlet-name>
-        <servlet-class>org.drools.guvnor.server.RepositoryServiceServlet</servlet-class>
+        <servlet-name>ActionsAPIServlet</servlet-name>
+        <servlet-class>org.drools.guvnor.server.files.ActionsAPIServlet</servlet-class>
     </servlet>
-    <servlet>
-        <servlet-name>securityService</servlet-name>
-        <servlet-class>org.drools.guvnor.server.SecurityServiceServlet</servlet-class>
-    </servlet>
-    <servlet>
-        <servlet-name>AssetFileServlet</servlet-name>
-        <servlet-class>org.drools.guvnor.server.files.AssetFileServlet</servlet-class>
-    </servlet>
-    <servlet>
-        <servlet-name>PackageDeploymentServlet</servlet-name>
-        <servlet-class>org.drools.guvnor.server.files.PackageDeploymentServlet</servlet-class>
-    </servlet>
-    <servlet>
-        <servlet-name>RepositoryBackupServlet</servlet-name>
-        <servlet-class>org.drools.guvnor.server.files.RepositoryBackupServlet</servlet-class>
-    </servlet>
-    <servlet>
-        <servlet-name>WebdavServlet</servlet-name>
-        <servlet-class>org.drools.guvnor.server.files.WebdavServlet</servlet-class>
-    </servlet>
-    <servlet>
-        <servlet-name>RestAPIServlet</servlet-name>
-        <servlet-class>org.drools.guvnor.server.files.RestAPIServlet</servlet-class>
-    </servlet>
-    <servlet>
-        <servlet-name>FeedServlet</servlet-name>
-        <servlet-class>org.drools.guvnor.server.files.FeedServlet</servlet-class>
-    </servlet>
-    <servlet>
-        <servlet-name>WorkflowManagerServlet</servlet-name>
-        <servlet-class>org.gridcc.mce.mceworkflow.servlets.WorkflowManagerServlet</servlet-class>
-    </servlet>
-    <servlet>
-        <servlet-name>WSDLParserServlet</servlet-name>
-        <servlet-class>org.gridcc.mce.mceworkflow.servlets.WSDLParserServlet</servlet-class>
-    </servlet>
-    <servlet>
-        <servlet-name>guvnorAPI</servlet-name>
-        <servlet-class>org.drools.guvnor.server.GuvnorAPIServlet</servlet-class>
-    </servlet>
-    <servlet>
-        <servlet-name>verificationService</servlet-name>
-        <servlet-class>org.drools.guvnor.server.VerificationServiceImplementation</servlet-class>
-    </servlet>
-    <servlet>
-        <servlet-name>standaloneEditorService</servlet-name>
-        <servlet-class>org.drools.guvnor.server.StandaloneEditorServiceImplementation</servlet-class>
-    </servlet>
-    <servlet>
-        <servlet-name>standaloneEditorServlet</servlet-name>
-        <servlet-class>org.drools.guvnor.server.StandaloneEditorServlet</servlet-class>
-    </servlet>
+	<servlet>
+		<servlet-name>FeedServlet</servlet-name>
+		<servlet-class>org.drools.guvnor.server.files.FeedServlet</servlet-class>
+	</servlet>
+	<servlet>
+		<servlet-name>WorkflowManagerServlet</servlet-name>
+		<servlet-class>org.gridcc.mce.mceworkflow.servlets.WorkflowManagerServlet</servlet-class>
+	</servlet>
+	<servlet>
+		<servlet-name>WSDLParserServlet</servlet-name>
+		<servlet-class>org.gridcc.mce.mceworkflow.servlets.WSDLParserServlet</servlet-class>
+	</servlet>
+	<servlet>
+		<servlet-name>guvnorAPI</servlet-name>
+		<servlet-class>org.drools.guvnor.server.GuvnorAPIServlet</servlet-class>
+	</servlet>
+	<servlet>
+		<servlet-name>verificationService</servlet-name>
+		<servlet-class>org.drools.guvnor.server.VerificationServiceImplementation</servlet-class>
+	</servlet>
+	<servlet-mapping>
+		<servlet-name>guvnorService</servlet-name>
+		<url-pattern>/org.drools.guvnor.Guvnor/guvnorService</url-pattern>
+	</servlet-mapping>
+	<servlet-mapping>
+		<servlet-name>securityService</servlet-name>
+		<url-pattern>/org.drools.guvnor.Guvnor/securityService</url-pattern>
+	</servlet-mapping>
+	<servlet-mapping>
+		<servlet-name>AssetFileServlet</servlet-name>
+		<url-pattern>/org.drools.guvnor.Guvnor/asset</url-pattern>
+	</servlet-mapping>
+	<servlet-mapping>
+		<servlet-name>PackageDeploymentServlet</servlet-name>
+		<url-pattern>/org.drools.guvnor.Guvnor/package/*</url-pattern>
+	</servlet-mapping>
+	<servlet-mapping>
+		<servlet-name>RepositoryBackupServlet</servlet-name>
+		<url-pattern>/org.drools.guvnor.Guvnor/backup</url-pattern>
+	</servlet-mapping>
+	<servlet-mapping>
+		<servlet-name>WebdavServlet</servlet-name>
+		<url-pattern>/org.drools.guvnor.Guvnor/webdav/*</url-pattern>
+	</servlet-mapping>
+	<servlet-mapping>
+		<servlet-name>RestAPIServlet</servlet-name>
+		<url-pattern>/org.drools.guvnor.Guvnor/api/*</url-pattern>
+	</servlet-mapping>
     <servlet-mapping>
-        <servlet-name>guvnorService</servlet-name>
-        <url-pattern>/org.drools.guvnor.Guvnor/guvnorService</url-pattern>
+        <servlet-name>ActionsAPIServlet</servlet-name>
+        <url-pattern>/org.drools.guvnor.Guvnor/action/*</url-pattern>
     </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>securityService</servlet-name>
-        <url-pattern>/org.drools.guvnor.Guvnor/securityService</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>AssetFileServlet</servlet-name>
-        <url-pattern>/org.drools.guvnor.Guvnor/asset</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>PackageDeploymentServlet</servlet-name>
-        <url-pattern>/org.drools.guvnor.Guvnor/package/*</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>RepositoryBackupServlet</servlet-name>
-        <url-pattern>/org.drools.guvnor.Guvnor/backup</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>WebdavServlet</servlet-name>
-        <url-pattern>/org.drools.guvnor.Guvnor/webdav/*</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>RestAPIServlet</servlet-name>
-        <url-pattern>/org.drools.guvnor.Guvnor/api/*</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>FeedServlet</servlet-name>
-        <url-pattern>/org.drools.guvnor.Guvnor/feed/*</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>WorkflowManagerServlet</servlet-name>
-        <url-pattern>/org.drools.guvnor.Guvnor/workflowmanager/*</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>WSDLParserServlet</servlet-name>
-        <url-pattern>/org.drools.guvnor.Guvnor/wsdlparser/*</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>guvnorAPI</servlet-name>
-        <url-pattern>/org.drools.guvnor.Guvnor/guvnorAPI</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>verificationService</servlet-name>
-        <url-pattern>/org.drools.guvnor.Guvnor/verificationService</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>standaloneEditorService</servlet-name>
-        <url-pattern>/org.drools.guvnor.Guvnor/standaloneEditorService</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>standaloneEditorServlet</servlet-name>
-        <url-pattern>/org.drools.guvnor.Guvnor/standaloneEditorServlet</url-pattern>
-    </servlet-mapping>
-    <session-config>
-        <session-timeout>180</session-timeout>
-    </session-config>
+	<servlet-mapping>
+		<servlet-name>FeedServlet</servlet-name>
+		<url-pattern>/org.drools.guvnor.Guvnor/feed/*</url-pattern>
+	</servlet-mapping>
+	<servlet-mapping>
+		<servlet-name>WorkflowManagerServlet</servlet-name>
+		<url-pattern>/org.drools.guvnor.Guvnor/workflowmanager/*</url-pattern>
+	</servlet-mapping>
+	<servlet-mapping>
+		<servlet-name>WSDLParserServlet</servlet-name>
+		<url-pattern>/org.drools.guvnor.Guvnor/wsdlparser/*</url-pattern>
+	</servlet-mapping>
+	<servlet-mapping>
+		<servlet-name>guvnorAPI</servlet-name>
+		<url-pattern>/org.drools.guvnor.Guvnor/guvnorAPI</url-pattern>
+	</servlet-mapping>
+	<servlet-mapping>
+		<servlet-name>verificationService</servlet-name>
+		<url-pattern>/org.drools.guvnor.Guvnor/verificationService</url-pattern>
+	</servlet-mapping>
+	<session-config>
+		<session-timeout>180</session-timeout>
+	</session-config>
     <login-config>
         <auth-method>BASIC</auth-method>
     </login-config>

Added: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/ActionAPIServletTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/ActionAPIServletTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/ActionAPIServletTest.java	2010-12-01 13:46:30 UTC (rev 36144)
@@ -0,0 +1,96 @@
+/*
+ *  Copyright 2010, ECOSUR and Andrew Waterman (andrew.waterman at gmail.com)
+ *
+ *  Licensed 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.
+ *  under the License.
+ */
+
+package org.drools.guvnor.server.files;
+
+import ch.ethz.ssh2.crypto.Base64;
+import java.io.ByteArrayInputStream;
+import java.util.HashMap;
+import java.util.UUID;
+import junit.framework.TestCase;
+import org.drools.guvnor.server.rest.Parameters;
+import org.drools.guvnor.server.util.TestEnvironmentSessionHelper;
+import org.drools.repository.RulesRepository;
+
+/**
+ * Some basic unit tests for compilation and snapshot
+ * creation in the ActionsAPIServlet.
+ *
+ * @author andrew.waterman at gmail.com
+ */
+public class ActionAPIServletTest extends TestCase {
+
+    private final String compilationPath = "http://foo/action/compile";
+    private final String snapshotPath = "http://foo/action/snapshot";
+
+    /*
+     * Modeled after testPost in RestAPIServletTest.
+     * @author andrew.waterman at gmail.com
+     */
+    public void testCompilation() throws Exception {
+        final String dynamicPackage = "test-action" + UUID.randomUUID();
+        RulesRepository repo = new RulesRepository(
+                TestEnvironmentSessionHelper.getSession());
+        repo.createPackage(dynamicPackage, "test-action package for testing");
+        HashMap<String, String> headers = new HashMap<String, String>() {
+            {
+                put("Authorization", "BASIC " + new String(Base64.encode(
+                        "test:password".getBytes())));
+            }
+        };
+        HashMap<String,String> parameters = new HashMap<String,String>() {
+            {
+                put (Parameters.PackageName.toString(), dynamicPackage);
+            }
+        };
+        ActionsAPIServlet serv = new ActionsAPIServlet();
+        MockHTTPRequest req = new MockHTTPRequest(compilationPath,
+                headers, parameters);
+        MockHTTPResponse res = new MockHTTPResponse();
+        serv.doPost(req, res);
+        assertEquals(200, res.status);
+        repo.logout();
+    }
+
+    public void testSnapshotCreation () throws Exception {
+        final String dynamicPackage = "test-snap" + UUID.randomUUID();
+        RulesRepository repo = new RulesRepository(
+                TestEnvironmentSessionHelper.getSession());
+        repo.createPackage(dynamicPackage, "test-snapshot package for testing");
+        HashMap<String, String> headers = new HashMap<String, String>() {
+            {
+                put("Authorization", "BASIC " + new String(Base64.encode("test:password".getBytes())));
+            }
+        };
+        HashMap<String,String> parameters = new HashMap<String,String>() {
+            {
+                put (Parameters.PackageName.toString(), dynamicPackage);
+                put (Parameters.SnapshotName.toString(), "test-action-snap1");
+            }
+        };
+
+        ByteArrayInputStream in = new ByteArrayInputStream(
+                "some content".getBytes());
+        ActionsAPIServlet serv = new ActionsAPIServlet();
+        MockHTTPRequest req = new MockHTTPRequest(snapshotPath, headers,
+                parameters, in);
+        MockHTTPResponse res = new MockHTTPResponse();
+        serv.doPost(req, res);
+        assertEquals(200, res.status);
+        repo.logout();        
+    }
+}

Modified: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/MockHTTPRequest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/MockHTTPRequest.java	2010-12-01 13:30:07 UTC (rev 36143)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/MockHTTPRequest.java	2010-12-01 13:46:30 UTC (rev 36144)
@@ -1,18 +1,18 @@
 /**
- * Copyright 2010 JBoss Inc
- *
- * Licensed 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.
- */
+* Copyright 2010 JBoss Inc
+*
+* Licensed 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.drools.guvnor.server.files;
 
@@ -20,6 +20,8 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.security.Principal;
 import java.util.Enumeration;
 import java.util.Locale;
@@ -33,231 +35,253 @@
 
 public class MockHTTPRequest implements HttpServletRequest {
 
-	final private String uri;
-	private Map<String, String> headers;
-	ServletInputStream stream;
-	String queryString;
+    final private URI uri;
+    private Map<String, String> headers;
+    ServletInputStream stream;
+    String queryString;
     Map<String, String> parameters;
     public String method;
 
-    public StringBuffer url = new StringBuffer("http://foo.com"); 
+    public StringBuffer url = new StringBuffer("http://foo.com");
 
 
     public MockHTTPRequest(String uri, Map<String, String> headers) {
-		this.uri = uri;
-		this.headers = headers;
-	}
+        try {
+            this.uri = new URI (uri);
+            this.headers = headers;
+        } catch (URISyntaxException e) {
+            throw new RuntimeException (e);
+        }
+    }
 
     public MockHTTPRequest(String uri, Map<String, String> headers, Map<String, String> parameters) {
-		this.uri = uri;
-		this.headers = headers;
-        this.parameters = parameters;
-	}
+        try {
+            this.uri = new URI (uri);
+            this.headers = headers;
+            this.parameters = parameters;
+        } catch (URISyntaxException e) {
+            throw new RuntimeException (e);
+        }
+    }
 
-	public MockHTTPRequest(String uri, Map<String, String> headers, InputStream in) {
-		this.uri = uri;
-		this.headers = headers;
-		this.stream = new MockInput(in);
-	}
+    public MockHTTPRequest(String uri, Map<String, String> headers, InputStream in) {
+        try {
+            this.uri = new URI (uri);
+            this.headers = headers;
+            this.stream = new MockInput(in);
+        } catch (URISyntaxException e) {
+            throw new RuntimeException (e);
+        }
+    }
 
-	public String getAuthType() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public MockHTTPRequest(String uri, Map<String, String> headers,
+            Map<String,String> parameters, InputStream in)
+    {
+        try {
+            this.uri = new URI (uri);
+            this.headers = headers;
+            this.parameters = parameters;
+            this.stream = new MockInput(in);
+        } catch (URISyntaxException e) {
+            throw new RuntimeException (e);
+        }
+    }
 
-	public String getContextPath() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public String getAuthType() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public Cookie[] getCookies() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public String getContextPath() {
+        return uri.getPath();
+    }
 
-	public long getDateHeader(String arg0) {
-		// TODO Auto-generated method stub
-		return 0;
-	}
+    public Cookie[] getCookies() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public String getHeader(String n) {
-		return headers.get(n);
-	}
+    public long getDateHeader(String arg0) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 
-	public Enumeration getHeaderNames() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public String getHeader(String n) {
+        return headers.get(n);
+    }
 
-	public Enumeration getHeaders(String arg0) {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public Enumeration getHeaderNames() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public int getIntHeader(String arg0) {
-		// TODO Auto-generated method stub
-		return 0;
-	}
+    public Enumeration getHeaders(String arg0) {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public String getMethod() {
+    public int getIntHeader(String arg0) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 
-		return method;
-	}
+    public String getMethod() {
 
-	public String getPathInfo() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+        return method;
+    }
 
-	public String getPathTranslated() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public String getPathInfo() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public String getQueryString() {
-		return queryString;
-	}
+    public String getPathTranslated() {
+        return uri.getPath();
+    }
 
-	public String getRemoteUser() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public String getQueryString() {
+        return queryString;
+    }
 
-	public String getRequestURI() {
-		return uri;
-	}
+    public String getRemoteUser() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public StringBuffer getRequestURL() {
+    public String getRequestURI() {
+        return uri.toString();
+    }
 
+    public StringBuffer getRequestURL() {
+
         return url;
 
-	}
+    }
 
-	public String getRequestedSessionId() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public String getRequestedSessionId() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public String getServletPath() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public String getServletPath() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public HttpSession getSession() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public HttpSession getSession() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public HttpSession getSession(boolean arg0) {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public HttpSession getSession(boolean arg0) {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public Principal getUserPrincipal() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public Principal getUserPrincipal() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public boolean isRequestedSessionIdFromCookie() {
-		// TODO Auto-generated method stub
-		return false;
-	}
+    public boolean isRequestedSessionIdFromCookie() {
+        // TODO Auto-generated method stub
+        return false;
+    }
 
-	public boolean isRequestedSessionIdFromURL() {
-		// TODO Auto-generated method stub
-		return false;
-	}
+    public boolean isRequestedSessionIdFromURL() {
+        // TODO Auto-generated method stub
+        return false;
+    }
 
-	public boolean isRequestedSessionIdFromUrl() {
-		// TODO Auto-generated method stub
-		return false;
-	}
+    public boolean isRequestedSessionIdFromUrl() {
+        // TODO Auto-generated method stub
+        return false;
+    }
 
-	public boolean isRequestedSessionIdValid() {
-		// TODO Auto-generated method stub
-		return false;
-	}
+    public boolean isRequestedSessionIdValid() {
+        // TODO Auto-generated method stub
+        return false;
+    }
 
-	public boolean isUserInRole(String arg0) {
-		// TODO Auto-generated method stub
-		return false;
-	}
+    public boolean isUserInRole(String arg0) {
+        // TODO Auto-generated method stub
+        return false;
+    }
 
-	public Object getAttribute(String arg0) {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public Object getAttribute(String arg0) {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public Enumeration getAttributeNames() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public Enumeration getAttributeNames() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public String getCharacterEncoding() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public String getCharacterEncoding() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public int getContentLength() {
-		// TODO Auto-generated method stub
-		return 0;
-	}
+    public int getContentLength() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 
-	public String getContentType() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public String getContentType() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public ServletInputStream getInputStream() throws IOException {
+    public ServletInputStream getInputStream() throws IOException {
 
-		return stream ;
-	}
+        return stream ;
+    }
 
-	public Locale getLocale() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public Locale getLocale() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public Enumeration getLocales() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public Enumeration getLocales() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public String getParameter(String arg0) {
-		
-		return parameters.get(arg0);
-	}
+    public String getParameter(String arg0) {
 
-	public Map getParameterMap() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+        return parameters.get(arg0);
+    }
 
-	public Enumeration getParameterNames() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public Map getParameterMap() {
+        return parameters;
+    }
 
-	public String[] getParameterValues(String arg0) {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public Enumeration getParameterNames() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public String getProtocol() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public String[] getParameterValues(String arg0) {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public BufferedReader getReader() throws IOException {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public String getProtocol() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public String getRealPath(String arg0) {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public BufferedReader getReader() throws IOException {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
+    public String getRealPath(String arg0) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
     public int getRemotePort() {
         return 0;  //To change body of implemented methods use File | Settings | File Templates.
     }
@@ -275,69 +299,69 @@
     }
 
     public String getRemoteAddr() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public String getRemoteHost() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public String getRemoteHost() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public RequestDispatcher getRequestDispatcher(String arg0) {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public RequestDispatcher getRequestDispatcher(String arg0) {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public String getScheme() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public String getScheme() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public String getServerName() {
-		// TODO Auto-generated method stub
-		return null;
-	}
+    public String getServerName() {
+        // TODO Auto-generated method stub
+        return null;
+    }
 
-	public int getServerPort() {
-		// TODO Auto-generated method stub
-		return 0;
-	}
+    public int getServerPort() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 
-	public boolean isSecure() {
-		// TODO Auto-generated method stub
-		return false;
-	}
+    public boolean isSecure() {
+        // TODO Auto-generated method stub
+        return false;
+    }
 
-	public void removeAttribute(String arg0) {
-		// TODO Auto-generated method stub
+    public void removeAttribute(String arg0) {
+        // TODO Auto-generated method stub
 
-	}
+    }
 
-	public void setAttribute(String arg0, Object arg1) {
-		// TODO Auto-generated method stub
+    public void setAttribute(String arg0, Object arg1) {
+        // TODO Auto-generated method stub
 
-	}
+    }
 
-	public void setCharacterEncoding(String arg0)
-			throws UnsupportedEncodingException {
-		// TODO Auto-generated method stub
+    public void setCharacterEncoding(String arg0)
+            throws UnsupportedEncodingException {
+        // TODO Auto-generated method stub
 
-	}
+    }
 
 
-	static class MockInput extends ServletInputStream {
+    static class MockInput extends ServletInputStream {
 
-		private InputStream stream;
+        private InputStream stream;
 
-		MockInput(InputStream in) {
-			this.stream = in;
-		}
+        MockInput(InputStream in) {
+            this.stream = in;
+        }
 
-		public int read() throws IOException {
-			// TODO Auto-generated method stub
-			return stream.read();
-		}
+        public int read() throws IOException {
+            // TODO Auto-generated method stub
+            return stream.read();
+        }
 
-	}
-}
+    }
+    }

Modified: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/MockHTTPResponse.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/MockHTTPResponse.java	2010-12-01 13:30:07 UTC (rev 36143)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/files/MockHTTPResponse.java	2010-12-01 13:46:30 UTC (rev 36144)
@@ -40,6 +40,7 @@
 	private String contentType;
 	Map<String, String> headers = new HashMap<String, String>();
 	int errorCode;
+	int status;
 
 
     public MockHTTPResponse() {
@@ -139,8 +140,7 @@
 	}
 
 	public void setStatus(int arg0) {
-		// TODO Auto-generated method stub
-
+		status = arg0;
 	}
 
 	public void setStatus(int arg0, String arg1) {



More information about the jboss-svn-commits mailing list