Changed handling of creation time

* creationTime now creates an Optional
* Removed FileSystem#supports and FileSystemFeature
This commit is contained in:
Markus Kreusch
2016-01-09 19:15:07 +01:00
parent 31f1b6478a
commit 5ff4f4c9c7
28 changed files with 44 additions and 278 deletions
@@ -23,8 +23,4 @@ public interface FileSystem extends Folder {
return Optional.empty();
}
default boolean supports(FileSystemFeature feature) {
return false;
}
}
@@ -1,5 +0,0 @@
package org.cryptomator.filesystem;
public enum FileSystemFeature {
CREATION_TIME_FEATURE
}
@@ -154,10 +154,9 @@ public interface Folder extends Node {
* Sets the creation time of the folder.
* <p>
* Setting the creation time may not be supported by all {@link FileSystem FileSystems}. If the {@code FileSystem} this {@code Folder} belongs to does not support the
* {@link FileSystemFeature#CREATION_TIME_FEATURE} the behavior of this method is unspecified.
* setting the creation time the behavior of this method is unspecified.
*
* @param instant the time to set as creation time
* @see FileSystem#supports(Class)
*/
default void setCreationTime(Instant instant) throws UncheckedIOException {
throw new UncheckedIOException(new IOException("CreationTime not supported"));
@@ -5,7 +5,6 @@
******************************************************************************/
package org.cryptomator.filesystem;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.time.Instant;
import java.util.Optional;
@@ -38,14 +37,12 @@ public interface Node {
* <p>
* Determines the creation time of this node.
* <p>
* Setting the creation time may not be supported by all {@link FileSystem FileSystems}. If the {@code FileSystem} this {@code Node} belongs to does not support the
* {@link FileSystemFeature#CREATION_TIME_FEATURE} the behavior of this method is unspecified.
* Note: Getting the creation time may not be supported by all {@link FileSystem FileSystems}.
*
* @returns the creation time of the file.
* @see FileSystem#supports(Class)
* @returns the creation time of the file or {@link Optional#empty()} if not supported
*/
default Instant creationTime() throws UncheckedIOException {
throw new UncheckedIOException(new IOException("CreationTime not supported"));
default Optional<Instant> creationTime() throws UncheckedIOException {
return Optional.empty();
}
/**
@@ -29,10 +29,9 @@ public interface WritableFile extends WritableByteChannel {
* Sets the creation time of the file.
* <p>
* Setting the creation time may not be supported by all {@link FileSystem FileSystems}. If the {@code FileSystem} this {@code WritableFile} belongs to does not support the
* {@link FileSystemFeature#CREATION_TIME_FEATURE} the behavior of this method is unspecified.
* setting the creation time the behavior of this method is unspecified.
*
* @param instant the time to set as creation time
* @see FileSystem#supports(Class)
*/
default void setCreationTime(Instant instant) throws UncheckedIOException {
throw new UncheckedIOException(new IOException("CreationTime not supported"));
@@ -10,6 +10,7 @@ package org.cryptomator.filesystem.delegating;
import java.io.UncheckedIOException;
import java.time.Instant;
import java.util.Optional;
import org.cryptomator.filesystem.Node;
@@ -40,7 +41,7 @@ abstract class DelegatingNode<T extends Node> implements Node {
}
@Override
public Instant creationTime() throws UncheckedIOException {
public Optional<Instant> creationTime() throws UncheckedIOException {
return delegate.creationTime();
}