Removed FolderCreateMode from filesystem api

* Folder#create now always creates the parents
This commit is contained in:
Markus Kreusch
2015-12-28 21:29:34 +01:00
parent 62d8cdfe4f
commit d073bdfad9
18 changed files with 91 additions and 188 deletions
@@ -8,7 +8,6 @@
*******************************************************************************/
package org.cryptomator.filesystem.inmem;
import java.io.FileNotFoundException;
import java.io.UncheckedIOException;
import java.nio.file.FileAlreadyExistsException;
import java.time.Instant;
@@ -20,7 +19,6 @@ import java.util.stream.Stream;
import org.apache.commons.io.FileExistsException;
import org.cryptomator.filesystem.Folder;
import org.cryptomator.filesystem.FolderCreateMode;
class InMemoryFolder extends InMemoryNode implements Folder {
@@ -67,16 +65,11 @@ class InMemoryFolder extends InMemoryNode implements Folder {
}
@Override
public void create(FolderCreateMode mode) {
public void create() {
if (exists()) {
return;
}
if (!parent.exists() && FolderCreateMode.FAIL_IF_PARENT_IS_MISSING.equals(mode)) {
throw new UncheckedIOException(new FileNotFoundException(parent.name));
} else if (!parent.exists() && FolderCreateMode.INCLUDING_PARENTS.equals(mode)) {
parent.create(mode);
}
assert parent.exists();
parent.create();
parent.children.compute(this.name(), (k, v) -> {
if (v == null) {
this.lastModified = Instant.now();
@@ -93,11 +86,11 @@ class InMemoryFolder extends InMemoryNode implements Folder {
if (target.exists()) {
target.delete();
}
assert!target.exists();
target.create(FolderCreateMode.INCLUDING_PARENTS);
assert !target.exists();
target.create();
this.copyTo(target);
this.delete();
assert!this.exists();
assert !this.exists();
}
@Override
@@ -114,11 +107,12 @@ class InMemoryFolder extends InMemoryNode implements Folder {
// recursively on folders:
if (entry.getValue() instanceof InMemoryFolder) {
InMemoryFolder subFolder = (InMemoryFolder) entry.getValue();
// this will try to itself from our children, which is ok as we're using an iterator here.
// this will try to itself from our children, which is ok as
// we're using an iterator here.
subFolder.delete();
}
}
assert!this.exists();
assert !this.exists();
}
@Override
@@ -16,7 +16,6 @@ import java.util.concurrent.TimeoutException;
import org.cryptomator.filesystem.File;
import org.cryptomator.filesystem.FileSystem;
import org.cryptomator.filesystem.Folder;
import org.cryptomator.filesystem.FolderCreateMode;
import org.cryptomator.filesystem.ReadableFile;
import org.cryptomator.filesystem.WritableFile;
import org.junit.Assert;
@@ -34,7 +33,7 @@ public class InMemoryFileSystemTest {
Assert.assertEquals(0, fs.folders().count());
// create /foo
fooFolder.create(FolderCreateMode.FAIL_IF_PARENT_IS_MISSING);
fooFolder.create();
Assert.assertTrue(fooFolder.exists());
Assert.assertEquals(1, fs.folders().count());
@@ -46,7 +45,7 @@ public class InMemoryFileSystemTest {
// create /foo/bar
Folder fooBarFolder = fooFolder.folder("bar");
Assert.assertFalse(fooBarFolder.exists());
fooBarFolder.create(FolderCreateMode.INCLUDING_PARENTS);
fooBarFolder.create();
Assert.assertTrue(fooFolder.exists());
Assert.assertTrue(fooBarFolder.exists());
Assert.assertEquals(1, fs.folders().count());
@@ -149,7 +148,7 @@ public class InMemoryFileSystemTest {
final Folder qweAsdFolder = fs.folder("qwe").folder("asd");
final File test1File = fooBarFolder.file("test1.txt");
final File test2File = fooBarFolder.file("test2.txt");
fooBarFolder.create(FolderCreateMode.INCLUDING_PARENTS);
fooBarFolder.create();
// create some files inside foo/bar/
try (WritableFile writable1 = test1File.openWritable(); //