[jboss-svn-commits] JBL Code SVN: r20095 - in labs/jbossrules/trunk/drools-jbrms/src: main/webapp/WEB-INF and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed May 21 04:53:01 EDT 2008
Author: michael.neale at jboss.com
Date: 2008-05-21 04:53:01 -0400 (Wed, 21 May 2008)
New Revision: 20095
Modified:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/WebDAVImpl.java
labs/jbossrules/trunk/drools-jbrms/src/main/webapp/WEB-INF/web.xml
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/WebDAVImplTest.java
Log:
JBRULES-1612 WebDAV
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/WebDAVImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/WebDAVImpl.java 2008-05-21 06:10:52 UTC (rev 20094)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/WebDAVImpl.java 2008-05-21 08:53:01 UTC (rev 20095)
@@ -7,12 +7,15 @@
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
+import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import net.sf.webdav.IWebdavStorage;
+import org.apache.commons.io.IOUtils;
import org.drools.repository.AssetItem;
import org.drools.repository.PackageItem;
import org.drools.repository.RulesRepository;
@@ -20,6 +23,9 @@
public class WebDAVImpl implements IWebdavStorage {
+ static Map<String, byte[]> osxDoubleData = new HashMap<String, byte[]>();
+
+
final ThreadLocal<RulesRepository> tlRepo = new ThreadLocal<RulesRepository>();;
@@ -85,6 +91,7 @@
//for mac OSX, ignore these resource fork files
if (path[2].startsWith("._")) {
+ this.osxDoubleData.put(uri, null);
return;
}
if (pkg.containsAsset(resource[0])) {
@@ -237,6 +244,9 @@
if (!path[0].equals("packages")) return false;
if (repository.containsPackage(path[1])) {
PackageItem pkg = repository.loadPackage(path[1]);
+ if (path[2].startsWith("._")) {
+ return osxDoubleData.containsKey(uri);
+ }
return pkg.containsAsset(AssetItem.getAssetNameFromFileName(path[2])[0]);
} else {
return false;
@@ -245,13 +255,10 @@
}
public boolean objectExists(String uri) throws IOException {
- boolean result = internalObjectExists(uri);
- if (uri.contains("Premium_Colour_Combinations.brl copy")) {
- System.out.println("Object exists:" + result);
- throw new IllegalStateException("URI : " + uri);
+ if (uri.endsWith(" copy")) {
+ throw new IllegalArgumentException("OSX is not capable of copy and pasting without breaking the file extension.");
}
- return result;
-
+ return internalObjectExists(uri);
}
public boolean internalObjectExists(String uri) throws IOException {
@@ -277,6 +284,9 @@
return !pkg.isArchived();
} else {
PackageItem pkg = repository.loadPackage(path[1]);
+ if (path[2].startsWith("._")){
+ return this.osxDoubleData.containsKey(uri);
+ }
String assetName = AssetItem.getAssetNameFromFileName(path[2])[0];
return pkg.containsAsset(assetName) && !pkg.loadAsset(assetName).isArchived();
@@ -296,7 +306,11 @@
PackageItem pkg = repository.loadPackage(packName);
if (path.length == 3) {
//delete asset
- String asset = path[2].split("\\.")[0];
+ if (path[2].startsWith("._")) {
+ osxDoubleData.remove(uri);
+ return;
+ }
+ String asset = AssetItem.getAssetNameFromFileName(path[2])[0];
AssetItem item = pkg.loadAsset(asset);
item.archiveItem(true);
item.checkin("");
@@ -329,6 +343,10 @@
}
String packageName = path[1];
+ if (path[2].startsWith("._")) {
+ this.osxDoubleData.put(uri, IOUtils.toByteArray(content));
+ return;
+ }
String[] assetName = AssetItem.getAssetNameFromFileName(path[2]);
PackageItem pkg = repository.loadPackage(packageName);
AssetItem asset = pkg.loadAsset(assetName[0]);
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/webapp/WEB-INF/web.xml
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/webapp/WEB-INF/web.xml 2008-05-21 06:10:52 UTC (rev 20094)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/webapp/WEB-INF/web.xml 2008-05-21 08:53:01 UTC (rev 20095)
@@ -38,7 +38,12 @@
<servlet-name>WebdavServlet</servlet-name>
<servlet-class>net.sf.webdav.WebdavServlet</servlet-class>
</servlet>
+ <servlet>
+ <servlet-name>RestAPIServlet</servlet-name>
+ <servlet-class> org.drools.brms.server.files.RestAPIServlet</servlet-class>
+ </servlet>
+
<servlet-mapping>
<servlet-name>GWTRemotingServlet</servlet-name>
<url-pattern>/org.drools.brms.JBRMS/jbrmsService</url-pattern>
@@ -59,6 +64,10 @@
<servlet-name>WebdavServlet</servlet-name>
<url-pattern>/org.drools.brms.JBRMS/webdav</url-pattern>
</servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>RestAPIServlet</servlet-name>
+ <url-pattern>/org.drools.brms.JBRMS/api</url-pattern>
+ </servlet-mapping>
<session-config>
<session-timeout>180</session-timeout>
Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/WebDAVImplTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/WebDAVImplTest.java 2008-05-21 06:10:52 UTC (rev 20094)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/files/WebDAVImplTest.java 2008-05-21 08:53:01 UTC (rev 20095)
@@ -29,6 +29,20 @@
}
+ public void testBadCopy() throws Exception {
+ //OSX does stupid shit when copying in the same directory
+ //for instance, it creates the copy as foobar.x copy - totally hosing
+ //the file extension.
+ WebDAVImpl imp = new WebDAVImpl(null);
+ try {
+ imp.objectExists("/foo/webdav/packages/foobar/Something.drl copy");
+ fail("should not be allowed");
+ } catch (IllegalArgumentException e) {
+ assertNotNull(e.getMessage());
+ }
+
+ }
+
public void testListRoot() throws Exception {
WebDAVImpl imp = new WebDAVImpl(null);
String[] children = imp.getChildrenNames("foobar/webdav");
More information about the jboss-svn-commits
mailing list