8062955: (fs spec) Files.setLastModifiedTime should specify SecurityException more clearly
8062949: (fs) Files.setLastModifiedTime(path, null) does not throw NPE Reviewed-by: chegar
This commit is contained in:
parent
6026dc63ea
commit
f0b198804a
@ -1778,7 +1778,7 @@ public final class Files {
|
||||
* @param options
|
||||
* options indicating how symbolic links are handled
|
||||
*
|
||||
* @return the {@code path} parameter
|
||||
* @return the given path
|
||||
*
|
||||
* @throws UnsupportedOperationException
|
||||
* if the attribute view is not available
|
||||
@ -2019,7 +2019,7 @@ public final class Files {
|
||||
* @param perms
|
||||
* The new set of permissions
|
||||
*
|
||||
* @return The path
|
||||
* @return The given path
|
||||
*
|
||||
* @throws UnsupportedOperationException
|
||||
* if the associated file system does not support the {@code
|
||||
@ -2102,7 +2102,7 @@ public final class Files {
|
||||
* @param owner
|
||||
* The new file owner
|
||||
*
|
||||
* @return The path
|
||||
* @return The given path
|
||||
*
|
||||
* @throws UnsupportedOperationException
|
||||
* if the associated file system does not support the {@code
|
||||
@ -2289,14 +2289,14 @@ public final class Files {
|
||||
* @param time
|
||||
* the new last modified time
|
||||
*
|
||||
* @return the path
|
||||
* @return the given path
|
||||
*
|
||||
* @throws IOException
|
||||
* if an I/O error occurs
|
||||
* @throws SecurityException
|
||||
* In the case of the default provider, the security manager's {@link
|
||||
* SecurityManager#checkWrite(String) checkWrite} method is invoked
|
||||
* to check write access to file
|
||||
* In the case of the default provider, and a security manager is
|
||||
* installed, its {@link SecurityManager#checkWrite(String)
|
||||
* checkWrite} method denies write access to the file.
|
||||
*
|
||||
* @see BasicFileAttributeView#setTimes
|
||||
*/
|
||||
@ -2304,7 +2304,7 @@ public final class Files {
|
||||
throws IOException
|
||||
{
|
||||
getFileAttributeView(path, BasicFileAttributeView.class)
|
||||
.setTimes(time, null, null);
|
||||
.setTimes(Objects.requireNonNull(time), null, null);
|
||||
return path;
|
||||
}
|
||||
|
||||
|
@ -52,12 +52,6 @@ public class FileAttributes {
|
||||
}
|
||||
}
|
||||
|
||||
// checks that two time values are within 1s of each other
|
||||
static void checkNearEqual(FileTime t1, FileTime t2) {
|
||||
long diff = Math.abs(t1.toMillis() - t2.toMillis());
|
||||
assertTrue(diff <= 1000);
|
||||
}
|
||||
|
||||
// Exercise getAttribute/setAttribute/readAttributes on basic attributes
|
||||
static void checkBasicAttributes(Path file, BasicFileAttributes attrs)
|
||||
throws IOException
|
||||
|
118
jdk/test/java/nio/file/Files/SetLastModifiedTime.java
Normal file
118
jdk/test/java/nio/file/Files/SetLastModifiedTime.java
Normal file
@ -0,0 +1,118 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.attribute.FileTime;
|
||||
|
||||
import org.testng.annotations.Test;
|
||||
import org.testng.annotations.AfterClass;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
import static org.testng.Assert.assertFalse;
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 4313887 8062949
|
||||
* @library ..
|
||||
* @run testng SetLastModifiedTime
|
||||
* @summary Unit test for Files.setLastModifiedTime
|
||||
*/
|
||||
|
||||
public class SetLastModifiedTime {
|
||||
|
||||
static Path testDir;
|
||||
|
||||
@BeforeClass
|
||||
void createTestDirectory() throws Exception {
|
||||
testDir = TestUtil.createTemporaryDirectory();
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
void removeTestDirectory() throws Exception {
|
||||
TestUtil.removeAll(testDir);
|
||||
}
|
||||
|
||||
/**
|
||||
* Exercise Files.setLastModifiedTime on the given file
|
||||
*/
|
||||
void test(Path path) throws Exception {
|
||||
FileTime now = Files.getLastModifiedTime(path);
|
||||
FileTime zero = FileTime.fromMillis(0L);
|
||||
|
||||
Path result = Files.setLastModifiedTime(path, zero);
|
||||
assertTrue(result == path);
|
||||
assertEquals(Files.getLastModifiedTime(path), zero);
|
||||
|
||||
result = Files.setLastModifiedTime(path, now);
|
||||
assertTrue(result == path);
|
||||
assertEquals(Files.getLastModifiedTime(path), now);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRegularFile() throws Exception {
|
||||
Path file = Files.createFile(testDir.resolve("file"));
|
||||
test(file);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDirectory() throws Exception {
|
||||
Path dir = Files.createDirectory(testDir.resolve("dir"));
|
||||
test(dir);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSymbolicLink() throws Exception {
|
||||
if (TestUtil.supportsLinks(testDir)) {
|
||||
Path target = Files.createFile(testDir.resolve("target"));
|
||||
Path link = testDir.resolve("link");
|
||||
Files.createSymbolicLink(link, target);
|
||||
test(link);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNulls() throws Exception {
|
||||
Path path = Paths.get("foo");
|
||||
FileTime zero = FileTime.fromMillis(0L);
|
||||
|
||||
try {
|
||||
Files.setLastModifiedTime(null, zero);
|
||||
assertTrue(false);
|
||||
} catch (NullPointerException expected) { }
|
||||
|
||||
try {
|
||||
Files.setLastModifiedTime(path, null);
|
||||
assertTrue(false);
|
||||
} catch (NullPointerException expected) { }
|
||||
|
||||
try {
|
||||
Files.setLastModifiedTime(null, null);
|
||||
assertTrue(false);
|
||||
} catch (NullPointerException expected) { }
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user