[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