[jboss-svn-commits] JBL Code SVN: r19556 - in labs/jbossrules/trunk/drools-repository/src: test/java/org/drools/repository/remoteapi and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Apr 15 01:19:57 EDT 2008


Author: michael.neale at jboss.com
Date: 2008-04-15 01:19:57 -0400 (Tue, 15 Apr 2008)
New Revision: 19556

Added:
   labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/remoteapi/ResponseTest.java
Modified:
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/remoteapi/Response.java
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/remoteapi/RestAPI.java
   labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/remoteapi/RestAPITest.java
Log:
remote REST api

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/remoteapi/Response.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/remoteapi/Response.java	2008-04-14 20:31:42 UTC (rev 19555)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/remoteapi/Response.java	2008-04-15 05:19:57 UTC (rev 19556)
@@ -1,5 +1,7 @@
 package org.drools.repository.remoteapi;
 
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -38,10 +40,23 @@
 
 
 		@Override
-		void writeData(OutputStream out) {
-
-			// TODO Auto-generated method stub
-
+		void writeData(OutputStream out) throws IOException {
+			try {
+				InputStream in = stream;
+				if (!(out instanceof BufferedOutputStream)) out = new BufferedOutputStream(out);
+				if (!(in instanceof BufferedInputStream)) in = new BufferedInputStream(in);
+	            final byte[] buf = new byte[1024];
+	            int len = 0;
+	            while ( (len = in.read( buf )) >= 0 ) {
+	                out.write( buf,
+	                           0,
+	                           len );
+	            }
+			} finally {
+	            out.flush();
+	            out.close();
+	            stream.close();
+			}
 		}
 
 	}

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/remoteapi/RestAPI.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/remoteapi/RestAPI.java	2008-04-14 20:31:42 UTC (rev 19555)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/remoteapi/RestAPI.java	2008-04-15 05:19:57 UTC (rev 19556)
@@ -29,7 +29,7 @@
 	}
 
 	public Response get(String path) throws UnsupportedEncodingException {
-		String[] bits = path.split("/");
+		String[] bits = split(path);
 		if (bits[0].equals("packages")) {
 			String pkgName = bits[1];
 			if (bits.length == 2) {
@@ -44,6 +44,12 @@
 
 	}
 
+	String[] split(String path) {
+		if (path.startsWith("/")) path = path.substring(1);
+		String[] bits = path.split("/");
+		return bits;
+	}
+
 	private Response loadContent(String pkgName, String resourceFile) throws UnsupportedEncodingException {
 		PackageItem pkg = repo.loadPackage(pkgName);
 		if (resourceFile.equals(".package")) {
@@ -89,14 +95,34 @@
 		return r;
 	}
 
-	public String post(String path, InputStream in) {
-		return null;
+	/** post is for new content. */
+	public void post(String path, InputStream in, boolean binary, String comment) {
+		String[] bits = split(path);
+		if (bits[0].equals("packages")) {
+			String fileName = bits[2];
+			String[] a = fileName.split("\\.");
+			PackageItem pkg = repo.loadPackage(bits[1]);
+			AssetItem asset = pkg.addAsset(a[0], "added remotely");
+			asset.updateFormat(a[1]);
+			if (binary) asset.updateBinaryContentAttachment(in);
+			else {
+				//FAIL !
+			}
+			asset.checkin(comment);
+
+		} else {
+			throw new IllegalArgumentException("Unknown rest path for post.");
+		}
 	}
 
+	/** put is for updating content. It will cause a new revision to be created. */
 	public String put(String path, Date lastModified, InputStream in) {
 		return null;
 	}
 
+	/**
+	 * Should be pretty obvious what this is for.
+	 */
 	public String delete(String path) {
 		return null;
 	}

Added: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/remoteapi/ResponseTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/remoteapi/ResponseTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/remoteapi/ResponseTest.java	2008-04-15 05:19:57 UTC (rev 19556)
@@ -0,0 +1,28 @@
+package org.drools.repository.remoteapi;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+
+import org.drools.repository.remoteapi.Response.Binary;
+
+import junit.framework.TestCase;
+
+public class ResponseTest extends TestCase {
+
+	public void testBinary() throws Exception {
+		Binary b = new Response.Binary();
+		ByteArrayInputStream in = new ByteArrayInputStream("abc".getBytes());
+		b.stream = in;
+		ByteArrayOutputStream out = new ByteArrayOutputStream();
+
+		b.writeData(out);
+
+		byte[] d = out.toByteArray();
+		assertEquals(3, d.length);
+
+		String s = new String(d);
+		assertEquals("abc", s);
+
+	}
+
+}


Property changes on: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/remoteapi/ResponseTest.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/remoteapi/RestAPITest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/remoteapi/RestAPITest.java	2008-04-14 20:31:42 UTC (rev 19555)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/remoteapi/RestAPITest.java	2008-04-15 05:19:57 UTC (rev 19556)
@@ -2,15 +2,12 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.InputStream;
-import java.net.URL;
-import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
-import java.util.Calendar;
 import java.util.Date;
 import java.util.Properties;
 
+import junit.framework.TestCase;
+
 import org.drools.repository.AssetItem;
 import org.drools.repository.PackageItem;
 import org.drools.repository.RepositorySessionUtil;
@@ -18,15 +15,13 @@
 import org.drools.repository.remoteapi.Response.Binary;
 import org.drools.repository.remoteapi.Response.Text;
 
-import junit.framework.TestCase;
-
 public class RestAPITest extends TestCase {
+	String someAsset = "packages/SomeName/SomeFile.drl";
+	String getAList = "packages/SomeName"; //will show a list
+	String getPackageConfig = "packages/SomeName/.package"; //should load package config
 
 
 	public void testGetBasics() throws Exception {
-		String someAsset = "packages/SomeName/SomeFile.drl";
-		String getAList = "packages/SomeName"; //will show a list
-		String getPackageConfig = "packages/SomeName/.package"; //should load package config
 
 
 		RulesRepository repo = RepositorySessionUtil.getRepository();
@@ -46,7 +41,7 @@
 		asset2.checkin("");
 
 		AssetItem asset3 = pkg.addAsset("asset3", "");
-		ByteArrayInputStream in = new ByteArrayInputStream("a b c".getBytes());
+		ByteArrayInputStream in = new ByteArrayInputStream("abc".getBytes());
 		asset3.updateBinaryContentAttachment(in);
 		asset3.updateFormat("xls");
 		asset3.checkin("");
@@ -118,6 +113,24 @@
 		byte[] data = out.toByteArray();
 		assertNotNull(data);
 
+		assertEquals("abc", new String(data));
 
+
 	}
+
+	public void testSplit() {
+		RestAPI a = new RestAPI(null);
+		String[] x = a.split("packages/foo/bar");
+		assertEquals(3, x.length);
+		assertEquals("packages", x[0]);
+		assertEquals("foo", x[1]);
+		assertEquals("bar", x[2]);
+
+		x = a.split("/packages/foo/bar");
+		assertEquals(3, x.length);
+		assertEquals("packages", x[0]);
+		assertEquals("foo", x[1]);
+		assertEquals("bar", x[2]);
+
+	}
 }




More information about the jboss-svn-commits mailing list