You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2008/05/30 12:30:26 UTC
svn commit: r661637 - in /jackrabbit/branches/1.4/jackrabbit-core: ./
src/main/java/org/apache/jackrabbit/core/fs/mem/MemoryFileSystem.java
src/test/java/org/apache/jackrabbit/core/fs/AbstractFileSystemTest.java
Author: jukka
Date: Fri May 30 03:30:25 2008
New Revision: 661637
URL: http://svn.apache.org/viewvc?rev=661637&view=rev
Log:
1.4: Merged revision 653417 (JCR-1450)
Modified:
jackrabbit/branches/1.4/jackrabbit-core/ (props changed)
jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/fs/mem/MemoryFileSystem.java
jackrabbit/branches/1.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/fs/AbstractFileSystemTest.java
Propchange: jackrabbit/branches/1.4/jackrabbit-core/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri May 30 03:30:25 2008
@@ -1 +1 @@
-/jackrabbit/trunk/jackrabbit-core:654078,654514,655917,656240,658583
+/jackrabbit/trunk/jackrabbit-core:653417,654078,654514,655917,656240,658583
Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/fs/mem/MemoryFileSystem.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/fs/mem/MemoryFileSystem.java?rev=661637&r1=661636&r2=661637&view=diff
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/fs/mem/MemoryFileSystem.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/fs/mem/MemoryFileSystem.java Fri May 30 03:30:25 2008
@@ -248,6 +248,16 @@
throw new FileSystemException("Destination exists: " + destPath);
}
+ // Create destination folder if it does not yet exist
+ String[] path = destPath.split(SEPARATOR);
+ String folder = "";
+ for (int i = 1; i < path.length; i++) {
+ folder += SEPARATOR + path[i];
+ if (!exists(folder)) {
+ createFolder(folder);
+ }
+ }
+
Map moves = new HashMap();
moves.put(srcPath, destPath);
if (getEntry(srcPath).isFolder()) {
Modified: jackrabbit/branches/1.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/fs/AbstractFileSystemTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/fs/AbstractFileSystemTest.java?rev=661637&r1=661636&r2=661637&view=diff
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/fs/AbstractFileSystemTest.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/fs/AbstractFileSystemTest.java Fri May 30 03:30:25 2008
@@ -214,6 +214,61 @@
assertEquals("subfolder", list[0]);
}
+ public void testMoveFile_destFolderDoesNotExist() throws Exception {
+ // Create a folder with a file
+ fs.createFolder("/folder");
+ createFile("/folder/file", sampleBytes);
+
+ // Check that the destination folder and file do not exist
+ assertFalse(fs.exists("/folder2"));
+ assertFalse(fs.exists("/folder2/file"));
+
+ // Move the file into a non-existent directory
+ fs.move("/folder/file", "/folder2/file");
+
+ // Check that the file has been moved
+ assertFalse(fs.exists("/folder/file"));
+ assertFalse(fs.isFolder("/folder/file"));
+ assertFalse(fs.isFile("/folder/file"));
+ assertTrue(fs.exists("/folder2/file"));
+ assertFalse(fs.isFolder("/folder2/file"));
+ assertTrue(fs.isFile("/folder2/file"));
+
+ // Check that folder2 has been silently created
+ assertTrue(fs.exists("/folder2"));
+ assertTrue(fs.isFolder("/folder2"));
+ assertFalse(fs.isFile("/folder2"));
+ }
+
+ public void testMoveFolder_destFolderDoesNotExist() throws Exception {
+ // Create a folder with a file
+ fs.createFolder("/folder");
+ createFile("/folder/file", sampleBytes);
+ // Check that the destination folder and file do not exist
+ assertFalse(fs.exists("/folder2"));
+ assertFalse(fs.exists("/folder2/folder3"));
+ assertFalse(fs.exists("/folder2/folder3/file"));
+
+ // Move the folder into a non-existent directory
+ fs.move("/folder", "/folder2/folder3");
+
+ // Assert
+ assertFalse(fs.exists("/folder"));
+ assertFalse(fs.exists("/folder/file"));
+
+ assertTrue(fs.exists("/folder2"));
+ assertTrue(fs.isFolder("/folder2"));
+ assertFalse(fs.isFile("/folder2"));
+
+ assertTrue(fs.exists("/folder2/folder3"));
+ assertTrue(fs.isFolder("/folder2/folder3"));
+ assertFalse(fs.isFile("/folder2/folder3"));
+
+ assertTrue(fs.exists("/folder2/folder3/file"));
+ assertFalse(fs.isFolder("/folder2/folder3/file"));
+ assertTrue(fs.isFile("/folder2/folder3/file"));
+ }
+
private void verifyStreamInput(
InputStream inputStream, byte[] expectedBytes) throws IOException {
byte[] resultBytes = new byte[3];