[jboss-svn-commits] JBL Code SVN: r19772 - in labs/jbossrules/trunk/drools-repository/src: main/resources and 5 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Apr 30 03:44:58 EDT 2008


Author: michael.neale at jboss.com
Date: 2008-04-30 03:44:58 -0400 (Wed, 30 Apr 2008)
New Revision: 19772

Added:
   labs/jbossrules/trunk/drools-repository/src/main/resources/org/
   labs/jbossrules/trunk/drools-repository/src/main/resources/org/drools/
   labs/jbossrules/trunk/drools-repository/src/main/resources/org/drools/repository/
   labs/jbossrules/trunk/drools-repository/src/main/resources/org/drools/repository/remoteapi/
   labs/jbossrules/trunk/drools-repository/src/main/resources/org/drools/repository/remoteapi/text_assets.properties
Modified:
   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:
JBRULES-1562 remote REST api

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-30 00:47:09 UTC (rev 19771)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/remoteapi/RestAPI.java	2008-04-30 07:44:58 UTC (rev 19772)
@@ -7,7 +7,10 @@
 import java.net.URLDecoder;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Properties;
+import java.util.Set;
 
 import org.drools.repository.AssetItem;
 import org.drools.repository.PackageItem;
@@ -26,10 +29,23 @@
 
 	private final RulesRepository repo;
 
+	private static Properties TEXT_ASSET_TYPES = loadAssetTypes();
+
 	public RestAPI(RulesRepository repo) {
 		this.repo = repo;
 	}
 
+	private static Properties loadAssetTypes() {
+		Properties p = new Properties();
+		try {
+			p.load(RestAPI.class.getResourceAsStream("text_assets.properties"));
+		} catch (IOException e) {
+			System.err.println("Unable to load asset text types properties.");
+			return null;
+		}
+		return p;
+	}
+
 	/**
 	 * This works off:
 	 * packages/<packageName> --> returns list of : <asset name>=<ISO date time last modified>,<versionNumber>
@@ -116,7 +132,7 @@
 	/** post is for new content.
 	 * @throws IOException
 	 * @throws RulesRepositoryException */
-	public void post(String path, InputStream in, boolean binary, String comment) throws RulesRepositoryException, IOException {
+	public void post(String path, InputStream in, String comment) throws RulesRepositoryException, IOException {
 		String[] bits = split(path);
 		if (bits[0].equals("packages")) {
 			String fileName = bits[2];
@@ -138,15 +154,21 @@
 					} else {
 						throw new RulesRepositoryException("The file " + path + " already exists, and was not archived.");
 					}
+					if (asset.isBinary()) {
+						asset.updateBinaryContentAttachment(in);
+					} else {
+						asset.updateContent(readContent(in));
+					}
 				} else {
 					asset = pkg.addAsset(a[0], "<added remotely>");
 					asset.updateFormat(a[1]);
+					if (TEXT_ASSET_TYPES.containsKey(a[1])) {
+						asset.updateContent(readContent(in));
+					} else {
+						asset.updateBinaryContentAttachment(in);
+					}
 				}
-				if (binary) {
-					asset.updateBinaryContentAttachment(in);
-				} else {
-					asset.updateContent(readContent(in));
-				}
+
 				asset.checkin(comment);
 			}
 		} else {
@@ -179,7 +201,7 @@
 			PackageItem pkg = repo.loadPackage(bits[1]);
 			if (a[1].equals("package")) {
 				//updating package header
-				if (pkg.getLastModified().after(lastModified)) {
+				if (lastModified != null && pkg.getLastModified().after(lastModified)) {
 					throw new RulesRepositoryException("The package was modified by: " + pkg.getLastContributor() + ", unable to write changes.");
 				}
 				pkg.updateHeader(readContent(in));
@@ -187,7 +209,7 @@
 				repo.save();
 			} else {
 				AssetItem as = pkg.loadAsset(a[0]);
-				if (as.getLastModified().after(lastModified)) {
+				if (lastModified != null && as.getLastModified().after(lastModified)) {
 					throw new RulesRepositoryException("The asset was modified by: " + as.getLastContributor() + ", unable to write changes.");
 				}
 				if (as.isBinary()) {

Added: labs/jbossrules/trunk/drools-repository/src/main/resources/org/drools/repository/remoteapi/text_assets.properties
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/resources/org/drools/repository/remoteapi/text_assets.properties	                        (rev 0)
+++ labs/jbossrules/trunk/drools-repository/src/main/resources/org/drools/repository/remoteapi/text_assets.properties	2008-04-30 07:44:58 UTC (rev 19772)
@@ -0,0 +1,9 @@
+#these asset formats are text type
+drl=text
+dsl=text
+rf=text
+dslr=text
+package=text
+scenario=text
+brl=text
+gdst=text
\ No newline at end of file


Property changes on: labs/jbossrules/trunk/drools-repository/src/main/resources/org/drools/repository/remoteapi/text_assets.properties
___________________________________________________________________
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-30 00:47:09 UTC (rev 19771)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/remoteapi/RestAPITest.java	2008-04-30 07:44:58 UTC (rev 19772)
@@ -134,17 +134,19 @@
 
 		RestAPI api = new RestAPI(repo);
 		ByteArrayInputStream in = new ByteArrayInputStream("abc".getBytes());
-		api.post("/packages/testRestPost/asset1.drl", in, false, "a comment");
+		api.post("/packages/testRestPost/asset1.drl", in, "a comment");
 
 		AssetItem a = pkg.loadAsset("asset1");
+		assertFalse(a.isBinary());
 		assertEquals("drl", a.getFormat());
 		assertEquals("abc", a.getContent());
 		assertEquals("a comment", a.getCheckinComment());
-		assertFalse(a.isBinary());
 
+
 		in = new ByteArrayInputStream("qed".getBytes());
-		api.post("/packages/testRestPost/asset2.xls", in, true, "a comment");
+		api.post("/packages/testRestPost/asset2.xls", in, "a comment");
 		a = pkg.loadAsset("asset2");
+
 		assertTrue(a.isBinary());
 		String s = new String(a.getBinaryContentAsBytes());
 		assertEquals("qed", s);
@@ -160,7 +162,7 @@
 		RulesRepository repo = RepositorySessionUtil.getRepository();
 		RestAPI api = new RestAPI(repo);
 
-		api.post("/packages/testPostNewPackage/.package", new ByteArrayInputStream("qaz".getBytes()), false, "This is a new package");
+		api.post("/packages/testPostNewPackage/.package", new ByteArrayInputStream("qaz".getBytes()), "This is a new package");
 		PackageItem pkg = repo.loadPackage("testPostNewPackage");
 		assertEquals("qaz", pkg.getHeader());
 
@@ -248,7 +250,7 @@
 
 
 		//now test it back from the dead
-		api.post("packages/testRestDelete/asset1.drl", new ByteArrayInputStream("123".getBytes()), false, "new comment");
+		api.post("packages/testRestDelete/asset1.drl", new ByteArrayInputStream("123".getBytes()), "new comment");
 		AssetItem ass = pkg.loadAsset("asset1");
 		assertEquals("123", ass.getContent());
 		assertEquals("new comment", ass.getCheckinComment());
@@ -257,7 +259,7 @@
 		assertEquals(1, l.size());
 
 		try {
-			api.post("packages/testRestDelete/asset1.drl", new ByteArrayInputStream("123".getBytes()), false, "new comment");
+			api.post("packages/testRestDelete/asset1.drl", new ByteArrayInputStream("123".getBytes()),  "new comment");
 			fail("this should be rejected as its not archived.");
 		} catch (RulesRepositoryException e) {
 			assertNotNull(e.getMessage());




More information about the jboss-svn-commits mailing list