You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2007/03/29 11:10:09 UTC
svn commit: r523640 -
/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java
Author: angela
Date: Thu Mar 29 02:10:08 2007
New Revision: 523640
URL: http://svn.apache.org/viewvc?view=rev&rev=523640
Log:
JCR-824 Problems with File Copy using WebDAV
Modified:
jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java
Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java?view=diff&rev=523640&r1=523639&r2=523640
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/DavResourceImpl.java Thu Mar 29 02:10:08 2007
@@ -578,6 +578,8 @@
if (isFilteredResource(destination)) {
throw new DavException(DavServletResponse.SC_FORBIDDEN);
}
+ // make sure, that src and destination belong to the same workspace
+ checkSameWorkspace(destination.getLocator());
try {
String destItemPath = destination.getLocator().getRepositoryPath();
getJcrSession().getWorkspace().move(locator.getRepositoryPath(), destItemPath);
@@ -605,6 +607,8 @@
// otherwise it doesn't make a difference
throw new DavException(DavServletResponse.SC_FORBIDDEN, "Unable to perform shallow copy.");
}
+ // make sure, that src and destination belong to the same workspace
+ checkSameWorkspace(destination.getLocator());
try {
String destItemPath = destination.getLocator().getRepositoryPath();
getJcrSession().getWorkspace().copy(locator.getRepositoryPath(), destItemPath);
@@ -873,6 +877,13 @@
private boolean isFilteredItem(Item item) {
return filter != null && filter.isFilteredItem(item);
+ }
+
+ private void checkSameWorkspace(DavResourceLocator otherLoc) throws DavException {
+ String wspname = getJcrSession().getWorkspace().getName();
+ if (!wspname.equals(otherLoc.getWorkspaceName())) {
+ throw new DavException(DavServletResponse.SC_FORBIDDEN, "Workspace mismatch: expected '" + wspname + "'; found: '" + otherLoc.getWorkspaceName() + "'");
+ }
}
//--------------------------------------------------------< inner class >---