From de250bc235c250e33f23bc349021f68f3cf73b38 Mon Sep 17 00:00:00 2001 From: Chris Povirk Date: Fri, 22 Nov 2024 08:56:38 -0500 Subject: [PATCH 1/2] Add `@NonNull` annotations to `@NullUnmarked` APIs. While [we're not sure about the attribute values](https://github.com/jspecify/jdk/pull/10#pullrequestreview-1404320091), we believe that everything else is non-null. I hadn't thought of using `@NonNull` back then, but it occurred to me after I put together https://github.com/jspecify/jdk/pull/109. --- .../share/classes/java/nio/file/Files.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/java.base/share/classes/java/nio/file/Files.java b/src/java.base/share/classes/java/nio/file/Files.java index 5ec099db92c..4033c695799 100644 --- a/src/java.base/share/classes/java/nio/file/Files.java +++ b/src/java.base/share/classes/java/nio/file/Files.java @@ -81,6 +81,7 @@ import java.util.stream.Stream; import java.util.stream.StreamSupport; +import org.jspecify.annotations.NonNull; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.NullUnmarked; import org.jspecify.annotations.Nullable; @@ -1996,9 +1997,9 @@ public static Path setAttribute(Path path, String attribute, Object value, * to read security sensitive attributes then the security manager * may be invoked to check for additional permissions. */ - @NullUnmarked - public static Object getAttribute(Path path, String attribute, - LinkOption... options) + @NullUnmarked // https://github.com/jspecify/jdk/pull/10#pullrequestreview-1404320091 + public static Object getAttribute(@NonNull Path path, @NonNull String attribute, + @NonNull LinkOption @NonNull ... options) throws IOException { // only one attribute should be read @@ -2101,9 +2102,9 @@ public static Object getAttribute(Path path, String attribute, * to read security sensitive attributes then the security manager * may be invoked to check for additional permissions. */ - @NullUnmarked - public static Map readAttributes(Path path, String attributes, - LinkOption... options) + @NullUnmarked // https://github.com/jspecify/jdk/pull/10#pullrequestreview-1404320091 + public static @NonNull Map<@NonNull String,Object> readAttributes(@NonNull Path path, @NonNull String attributes, + @NonNull LinkOption @NonNull ... options) throws IOException { return provider(path).readAttributes(path, attributes, options); From 3f15d24f05fe6a34912ad2f5b2b3dfe6403ef6e9 Mon Sep 17 00:00:00 2001 From: Chris Povirk Date: Wed, 18 Dec 2024 10:13:17 -0500 Subject: [PATCH 2/2] Explicitly comment unspecified-nullness types. Co-authored-by: Werner Dietl --- src/java.base/share/classes/java/nio/file/Files.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/java.base/share/classes/java/nio/file/Files.java b/src/java.base/share/classes/java/nio/file/Files.java index b302dc2d0b2..15d7dc93bf3 100644 --- a/src/java.base/share/classes/java/nio/file/Files.java +++ b/src/java.base/share/classes/java/nio/file/Files.java @@ -1816,7 +1816,7 @@ public static Path setAttribute(Path path, String attribute, Object value, * if an I/O error occurs */ @NullUnmarked // https://github.com/jspecify/jdk/pull/10#pullrequestreview-1404320091 - public static Object getAttribute(@NonNull Path path, @NonNull String attribute, + public static /*@NullUnmarked*/ Object getAttribute(@NonNull Path path, @NonNull String attribute, @NonNull LinkOption @NonNull ... options) throws IOException { @@ -1915,7 +1915,7 @@ public static Object getAttribute(@NonNull Path path, @NonNull String attribute, * if an I/O error occurs */ @NullUnmarked // https://github.com/jspecify/jdk/pull/10#pullrequestreview-1404320091 - public static @NonNull Map<@NonNull String,Object> readAttributes(@NonNull Path path, @NonNull String attributes, + public static @NonNull Map<@NonNull String, /*@NullUnmarked*/ Object> readAttributes(@NonNull Path path, @NonNull String attributes, @NonNull LinkOption @NonNull ... options) throws IOException {