[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