diff options
author | Chris Parsons <cparsons@google.com> | 2016-07-26 17:52:37 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2016-07-27 11:15:10 +0000 |
commit | cb5aa0067d5775c5ada1b751adc502ad2375352b (patch) | |
tree | f529c5cbd41099f2cb39743fd30e5c89a602060f /src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java | |
parent | a1a13aefe738cfa3991ae0ba89fe4488b78a1342 (diff) |
Fixed JavaIoFileSystem.setLastModifiedTime to actually match its documented behavior (passing -1 modified time should use system time).
--
MOS_MIGRATED_REVID=128489592
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java b/src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java index d2581a2ed1..dead488021 100644 --- a/src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java +++ b/src/main/java/com/google/devtools/build/lib/vfs/JavaIoFileSystem.java @@ -13,10 +13,13 @@ // limitations under the License. package com.google.devtools.build.lib.vfs; +import com.google.common.annotations.VisibleForTesting; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.profiler.Profiler; import com.google.devtools.build.lib.profiler.ProfilerTask; import com.google.devtools.build.lib.unix.FileAccessException; +import com.google.devtools.build.lib.util.Clock; +import com.google.devtools.build.lib.util.JavaClock; import java.io.File; import java.io.FileNotFoundException; @@ -42,12 +45,23 @@ public class JavaIoFileSystem extends AbstractFileSystemWithCustomStat { private static final LinkOption[] NOFOLLOW_LINKS_OPTION = new LinkOption[] { LinkOption.NOFOLLOW_LINKS }; + private final Clock clock; + protected static final String ERR_IS_DIRECTORY = " (Is a directory)"; protected static final String ERR_DIRECTORY_NOT_EMPTY = " (Directory not empty)"; protected static final String ERR_FILE_EXISTS = " (File exists)"; protected static final String ERR_NO_SUCH_FILE_OR_DIR = " (No such file or directory)"; protected static final String ERR_NOT_A_DIRECTORY = " (Not a directory)"; + public JavaIoFileSystem() { + this(new JavaClock()); + } + + @VisibleForTesting + JavaIoFileSystem(Clock clock) { + this.clock = clock; + } + protected File getIoFile(Path path) { return new File(path.toString()); } @@ -349,7 +363,7 @@ public class JavaIoFileSystem extends AbstractFileSystemWithCustomStat { @Override protected void setLastModifiedTime(Path path, long newTime) throws IOException { File file = getIoFile(path); - if (!file.setLastModified(newTime)) { + if (!file.setLastModified(newTime == -1L ? clock.currentTimeMillis() : newTime)) { if (!file.exists()) { throw new FileNotFoundException(path + ERR_NO_SUCH_FILE_OR_DIR); } else if (!file.getParentFile().canWrite()) { |