Skip to content

Commit c460f84

Browse files
TheRealMDoerrAlan Bateman
andcommitted
8361183: JDK-8360887 needs fixes to avoid cycles and better tests (aix)
Co-authored-by: Alan Bateman <alanb@openjdk.org> Reviewed-by: alanb, jkern
1 parent 549b875 commit c460f84

File tree

2 files changed

+25
-21
lines changed

2 files changed

+25
-21
lines changed

src/java.base/aix/classes/sun/nio/fs/AixFileSystemProvider.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ AixFileStore getFileStore(UnixPath path) throws IOException {
5252
return new AixFileStore(path);
5353
}
5454

55-
static boolean supportsUserDefinedFileAttributeView(Path obj) {
55+
private static boolean supportsUserDefinedFileAttributeView(UnixPath file) {
5656
try {
57-
FileStore store = Files.getFileStore(obj);
57+
FileStore store = new AixFileStore(file);
5858
return store.supportsFileAttributeView(UserDefinedFileAttributeView.class);
5959
} catch (IOException e) {
6060
return false;
@@ -68,8 +68,10 @@ public <V extends FileAttributeView> V getFileAttributeView(Path obj,
6868
LinkOption... options)
6969
{
7070
if (type == UserDefinedFileAttributeView.class) {
71-
return !supportsUserDefinedFileAttributeView(obj) ? null :
72-
(V) new AixUserDefinedFileAttributeView(UnixPath.toUnixPath(obj), Util.followLinks(options));
71+
UnixPath file = UnixPath.toUnixPath(obj);
72+
return supportsUserDefinedFileAttributeView(file) ?
73+
(V) new AixUserDefinedFileAttributeView(file, Util.followLinks(options))
74+
: null;
7375
}
7476
return super.getFileAttributeView(obj, type, options);
7577
}
@@ -80,8 +82,10 @@ public DynamicFileAttributeView getFileAttributeView(Path obj,
8082
LinkOption... options)
8183
{
8284
if (name.equals("user")) {
83-
return !supportsUserDefinedFileAttributeView(obj) ? null :
84-
new AixUserDefinedFileAttributeView(UnixPath.toUnixPath(obj), Util.followLinks(options));
85+
UnixPath file = UnixPath.toUnixPath(obj);
86+
return supportsUserDefinedFileAttributeView(file) ?
87+
new AixUserDefinedFileAttributeView(file, Util.followLinks(options))
88+
: null;
8589
}
8690
return super.getFileAttributeView(obj, name, options);
8791
}

test/jdk/java/nio/file/FileStore/Basic.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,16 @@ static void checkWithin1GB(String space, long expected, long actual) {
6767
}
6868
}
6969

70+
static <V extends FileAttributeView> void testFileAttributes(Path file,
71+
Class<V> viewClass,
72+
String viewName) throws IOException {
73+
FileStore store = Files.getFileStore(file);
74+
boolean supported = store.supportsFileAttributeView(viewClass);
75+
assertTrue(store.supportsFileAttributeView(viewName) == supported);
76+
boolean haveView = Files.getFileAttributeView(file, viewClass) != null;
77+
assertTrue(haveView == supported);
78+
}
79+
7080
static void doTests(Path dir) throws IOException {
7181
/**
7282
* Test: Directory should be on FileStore that is writable
@@ -97,21 +107,11 @@ static void doTests(Path dir) throws IOException {
97107
* Test: File and FileStore attributes
98108
*/
99109
assertTrue(store1.supportsFileAttributeView("basic"));
100-
assertTrue(store1.supportsFileAttributeView(BasicFileAttributeView.class));
101-
assertTrue(store1.supportsFileAttributeView("posix") ==
102-
store1.supportsFileAttributeView(PosixFileAttributeView.class));
103-
assertTrue(store1.supportsFileAttributeView("dos") ==
104-
store1.supportsFileAttributeView(DosFileAttributeView.class));
105-
assertTrue(store1.supportsFileAttributeView("acl") ==
106-
store1.supportsFileAttributeView(AclFileAttributeView.class));
107-
assertTrue(store1.supportsFileAttributeView("user") ==
108-
store1.supportsFileAttributeView(UserDefinedFileAttributeView.class));
109-
110-
// check if getFileAttributeView behaves as specified if the user defined view is unsupported
111-
if (!store1.supportsFileAttributeView(UserDefinedFileAttributeView.class) &&
112-
Files.getFileAttributeView(dir, UserDefinedFileAttributeView.class) != null) {
113-
throw new RuntimeException("UserDefinedFileAttributeView not supported, getFileAttributeView should return null");
114-
}
110+
testFileAttributes(dir, BasicFileAttributeView.class, "basic");
111+
testFileAttributes(dir, PosixFileAttributeView.class, "posix");
112+
testFileAttributes(dir, DosFileAttributeView.class, "dos");
113+
testFileAttributes(dir, AclFileAttributeView.class, "acl");
114+
testFileAttributes(dir, UserDefinedFileAttributeView.class, "user");
115115

116116
/**
117117
* Test: Space atributes

0 commit comments

Comments
 (0)