[jboss-svn-commits] JBL Code SVN: r19773 - in labs/jbossrules/trunk/drools-jbrms/src: test/java/org/drools/brms/server/files and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Apr 30 03:45:37 EDT 2008
Author: michael.neale at jboss.com
Date: 2008-04-30 03:45:37 -0400 (Wed, 30 Apr 2008)
New Revision: 19773
Modified:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/RestAPIServlet.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/MockHTTPRequest.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/MockHTTPResponse.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/RestAPIServletTest.java
Log:
JBRULES-1562 remote REST api
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/RestAPIServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/RestAPIServlet.java 2008-04-30 07:44:58 UTC (rev 19772)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/RestAPIServlet.java 2008-04-30 07:45:37 UTC (rev 19773)
@@ -18,7 +18,10 @@
import java.io.IOException;
-import java.io.UnsupportedEncodingException;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
import javax.security.auth.login.LoginException;
import javax.servlet.ServletException;
@@ -30,7 +33,6 @@
import org.apache.util.Base64;
import org.drools.brms.server.util.TestEnvironmentSessionHelper;
import org.drools.repository.RulesRepository;
-import org.drools.repository.RulesRepositoryException;
import org.drools.repository.remoteapi.Response;
import org.drools.repository.remoteapi.RestAPI;
import org.jboss.seam.Component;
@@ -51,8 +53,15 @@
protected void doPost(final HttpServletRequest req,
final HttpServletResponse res) throws ServletException,
IOException {
-
-
+ doAuthorizedAction(req, res, new A() {
+ public void a() throws Exception {
+ res.setContentType( "text/html" );
+ RestAPI api = getAPI();
+ String comment = req.getHeader("Checkin-Comment");
+ api.post(req.getRequestURI(), req.getInputStream(), (comment != null)? comment : "");
+ res.getWriter().write( "OK" );
+ }
+ });
}
@@ -76,13 +85,47 @@
}
@Override
- protected void doPut(HttpServletRequest req, HttpServletResponse resp)
+ protected void doPut(final HttpServletRequest req, final HttpServletResponse res)
throws ServletException, IOException {
+ doAuthorizedAction(req, res, new A() {
+ public void a() throws Exception {
+ res.setContentType( "text/html" );
+ RestAPI api = getAPI();
+ String comment = req.getHeader("Checkin-Comment");
+ Calendar lastMod = getModified(req.getHeader("Last-Modified"));
+ api.put(req.getRequestURI(), lastMod, req.getInputStream(), (comment != null)? comment : "");
+ res.getWriter().write( "OK" );
+ }
+ });
}
- @Override
- protected void doDelete(HttpServletRequest req, HttpServletResponse resp)
+ Calendar getModified(String f) throws ParseException {
+
+ if (f == null) return null;
+ Calendar c = Calendar.getInstance();
+ SimpleDateFormat sdf = RestAPI.getISODateFormat();
+ try {
+ c.setTime(sdf.parse(f));
+ } catch (ParseException e) {
+ DateFormat df = DateFormat.getInstance();
+ c.setTime(df.parse(f));
+ }
+ return c;
+ }
+
+
+
+ @Override
+ protected void doDelete(final HttpServletRequest req, final HttpServletResponse res)
throws ServletException, IOException {
+ doAuthorizedAction(req, res, new A() {
+ public void a() throws Exception {
+ res.setContentType( "text/html" );
+ RestAPI api = getAPI();
+ api.delete(req.getRequestURI());
+ res.getWriter().write( "OK" );
+ }
+ });
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/MockHTTPRequest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/MockHTTPRequest.java 2008-04-30 07:44:58 UTC (rev 19772)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/MockHTTPRequest.java 2008-04-30 07:45:37 UTC (rev 19773)
@@ -2,6 +2,7 @@
import java.io.BufferedReader;
import java.io.IOException;
+import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.security.Principal;
import java.util.Enumeration;
@@ -18,12 +19,19 @@
final private String uri;
private Map<String, String> headers;
+ ServletInputStream stream;
public MockHTTPRequest(String uri, Map<String, String> headers) {
this.uri = uri;
this.headers = headers;
}
+ public MockHTTPRequest(String uri, Map<String, String> headers, InputStream in) {
+ this.uri = uri;
+ this.headers = headers;
+ this.stream = new MockInput(in);
+ }
+
public String getAuthType() {
// TODO Auto-generated method stub
return null;
@@ -173,8 +181,8 @@
}
public ServletInputStream getInputStream() throws IOException {
- // TODO Auto-generated method stub
- return null;
+
+ return stream ;
}
public Locale getLocale() {
@@ -273,4 +281,19 @@
}
+
+ static class MockInput extends ServletInputStream {
+
+ private InputStream stream;
+
+ MockInput(InputStream in) {
+ this.stream = in;
+ }
+
+ public int read() throws IOException {
+ // TODO Auto-generated method stub
+ return stream.read();
+ }
+
+ }
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/MockHTTPResponse.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/MockHTTPResponse.java 2008-04-30 07:44:58 UTC (rev 19772)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/MockHTTPResponse.java 2008-04-30 07:45:37 UTC (rev 19773)
@@ -3,6 +3,7 @@
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
+import java.io.StringWriter;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
@@ -17,6 +18,8 @@
String contentType;
Map<String, String> headers = new HashMap<String, String>();
int errorCode;
+ StringWriter stringWriter = new StringWriter();
+ private PrintWriter writer = new PrintWriter(stringWriter);
public MockHTTPResponse(OutputStream out) {
@@ -135,8 +138,8 @@
}
public PrintWriter getWriter() throws IOException {
- // TODO Auto-generated method stub
- return null;
+
+ return writer ;
}
public boolean isCommitted() {
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/RestAPIServletTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/RestAPIServletTest.java 2008-04-30 07:44:58 UTC (rev 19772)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/RestAPIServletTest.java 2008-04-30 07:45:37 UTC (rev 19773)
@@ -1,5 +1,6 @@
package org.drools.brms.server.files;
+import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.HashMap;
import java.util.Map;
@@ -9,8 +10,10 @@
import org.apache.util.Base64;
import org.drools.brms.server.util.TestEnvironmentSessionHelper;
import org.drools.repository.AssetItem;
+import org.drools.repository.AssetItemIterator;
import org.drools.repository.PackageItem;
import org.drools.repository.RulesRepository;
+import org.jboss.seam.mock.MockHttpServletResponse;
import junit.framework.TestCase;
@@ -98,13 +101,110 @@
assertEquals("application/x-download", res.contentType);
assertEquals(true, res.containsHeader("Content-Disposition"));
+ }
+ public void testPost() throws Exception {
+ RulesRepository repo = new RulesRepository( TestEnvironmentSessionHelper.getSession( true ) );
+ PackageItem pkg = repo.createPackage("testPostRestServlet", "");
+ HashMap<String, String> headers = new HashMap<String, String>() {
+ {
+ put("Authorization", "BASIC " + new String(Base64.encode("test:password".getBytes())));
+ }
+ };
+ ByteArrayInputStream in = new ByteArrayInputStream("some new content".getBytes());
+ RestAPIServlet serv = new RestAPIServlet();
+ MockHTTPRequest req = new MockHTTPRequest("http://foo/api/packages/testPostRestServlet/asset1.drl", headers, in);
+ MockHTTPResponse res = new MockHTTPResponse(null);
+ serv.doPost(req, res);
+ assertEquals("OK", res.stringWriter.toString());
+ AssetItemIterator it = pkg.listAssetsByFormat(new String[] {"drl"});
+ AssetItem ass = it.next();
+ assertEquals("asset1", ass.getName());
+ assertEquals("drl", ass.getFormat());
+ assertFalse(ass.isBinary());
+ assertEquals("some new content", ass.getContent());
+
+ in = new ByteArrayInputStream("more content".getBytes());
+ req = new MockHTTPRequest("http://foo/api/packages/testPostRestServlet/asset2.xls", headers, in);
+ res = new MockHTTPResponse(null);
+ serv.doPost(req, res);
+ assertEquals("OK", res.stringWriter.toString());
+
+ AssetItem ass2 = pkg.loadAsset("asset2");
+ assertEquals("xls", ass2.getFormat());
+ assertTrue(ass2.isBinary());
+
+
+ String out = new String(ass2.getBinaryContentAsBytes());
+ assertEquals("more content", out);
+
}
+ public void testPut() throws Exception {
+ RulesRepository repo = new RulesRepository( TestEnvironmentSessionHelper.getSession( true ) );
+ PackageItem pkg = repo.createPackage("testPutRestServlet", "");
+ AssetItem ass = pkg.addAsset("asset1", "abc");
+ ass.updateFormat("drl");
+ ass.checkin("");
+ long ver = ass.getVersionNumber();
+
+ HashMap<String, String> headers = new HashMap<String, String>() {
+ {
+ put("Authorization", "BASIC " + new String(Base64.encode("test:password".getBytes())));
+ put("Checkin-Comment", "hey ho");
+ }
+ };
+
+ ByteArrayInputStream in = new ByteArrayInputStream("some new content".getBytes());
+ RestAPIServlet serv = new RestAPIServlet();
+ MockHTTPRequest req = new MockHTTPRequest("http://foo/api/packages/testPutRestServlet/asset1.drl", headers, in);
+
+
+ MockHTTPResponse res = new MockHTTPResponse(null);
+ serv.doPut(req, res);
+
+ assertEquals("OK", res.stringWriter.toString());
+
+ ass = pkg.loadAsset("asset1");
+ assertEquals("some new content", ass.getContent());
+ assertEquals(ver + 1, ass.getVersionNumber());
+ assertEquals("hey ho", ass.getCheckinComment());
+ }
+
+
+ public void testDelete() throws Exception {
+ RulesRepository repo = new RulesRepository( TestEnvironmentSessionHelper.getSession( true ) );
+ PackageItem pkg = repo.createPackage("testDeleteRestServlet", "");
+ AssetItem ass = pkg.addAsset("asset1", "abc");
+ ass.updateFormat("drl");
+ ass.checkin("");
+
+ HashMap<String, String> headers = new HashMap<String, String>() {
+ {
+ put("Authorization", "BASIC " + new String(Base64.encode("test:password".getBytes())));
+ }
+ };
+
+ ByteArrayInputStream in = new ByteArrayInputStream("some new content".getBytes());
+ RestAPIServlet serv = new RestAPIServlet();
+ MockHTTPRequest req = new MockHTTPRequest("http://foo/api/packages/testDeleteRestServlet/asset1.drl", headers, in);
+
+ MockHTTPResponse res = new MockHTTPResponse(null);
+ serv.doDelete(req, res);
+
+ assertEquals("OK", res.stringWriter.toString());
+
+
+
+ pkg = repo.loadPackage("testDeleteRestServlet");
+ assertFalse(pkg.listAssetsByFormat(new String[] {"drl"}).hasNext());
+
+
+ }
}
More information about the jboss-svn-commits
mailing list