From 4cdd18a58ef38819368ccbaa7913bc03e3a69bb0 Mon Sep 17 00:00:00 2001 From: Alex Popov Date: Wed, 9 Jul 2025 02:40:42 +0700 Subject: [PATCH 1/3] Add JSpecify nullable annotations to exception classes --- .../openqa/selenium/InvalidCookieDomainException.java | 10 +++++++--- .../openqa/selenium/UnableToSetCookieException.java | 10 +++++++--- .../openqa/selenium/devtools/DevToolsException.java | 9 ++++++--- java/src/org/openqa/selenium/json/JsonException.java | 9 ++++++--- .../openqa/selenium/remote/ScreenshotException.java | 9 ++++++--- 5 files changed, 32 insertions(+), 15 deletions(-) diff --git a/java/src/org/openqa/selenium/InvalidCookieDomainException.java b/java/src/org/openqa/selenium/InvalidCookieDomainException.java index 4fe170bb18402..0ab500cad3fda 100644 --- a/java/src/org/openqa/selenium/InvalidCookieDomainException.java +++ b/java/src/org/openqa/selenium/InvalidCookieDomainException.java @@ -17,23 +17,27 @@ package org.openqa.selenium; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; + /** * Thrown when attempting to add a cookie under a different domain than the current URL. * * @see org.openqa.selenium.WebDriver.Options#addCookie(Cookie) */ +@NullMarked public class InvalidCookieDomainException extends WebDriverException { public InvalidCookieDomainException() {} - public InvalidCookieDomainException(String message) { + public InvalidCookieDomainException(@Nullable String message) { super(message); } - public InvalidCookieDomainException(Throwable cause) { + public InvalidCookieDomainException(@Nullable Throwable cause) { super(cause); } - public InvalidCookieDomainException(String message, Throwable cause) { + public InvalidCookieDomainException(@Nullable String message, @Nullable Throwable cause) { super(message, cause); } } diff --git a/java/src/org/openqa/selenium/UnableToSetCookieException.java b/java/src/org/openqa/selenium/UnableToSetCookieException.java index 7b3359451eaa0..8c8daed65a1ef 100644 --- a/java/src/org/openqa/selenium/UnableToSetCookieException.java +++ b/java/src/org/openqa/selenium/UnableToSetCookieException.java @@ -17,23 +17,27 @@ package org.openqa.selenium; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; + /** * Thrown when a driver fails to set a cookie. * * @see org.openqa.selenium.WebDriver.Options#addCookie(Cookie) */ +@NullMarked public class UnableToSetCookieException extends WebDriverException { public UnableToSetCookieException() {} - public UnableToSetCookieException(String message) { + public UnableToSetCookieException(@Nullable String message) { super(message); } - public UnableToSetCookieException(Throwable cause) { + public UnableToSetCookieException(@Nullable Throwable cause) { super(cause); } - public UnableToSetCookieException(String message, Throwable cause) { + public UnableToSetCookieException(@Nullable String message, @Nullable Throwable cause) { super(message, cause); } } diff --git a/java/src/org/openqa/selenium/devtools/DevToolsException.java b/java/src/org/openqa/selenium/devtools/DevToolsException.java index dcd89cd2deac5..ba58cb9c06d7a 100644 --- a/java/src/org/openqa/selenium/devtools/DevToolsException.java +++ b/java/src/org/openqa/selenium/devtools/DevToolsException.java @@ -17,19 +17,22 @@ package org.openqa.selenium.devtools; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; import org.openqa.selenium.WebDriverException; +@NullMarked public class DevToolsException extends WebDriverException { - public DevToolsException(Throwable cause) { + public DevToolsException(@Nullable Throwable cause) { this(cause.getMessage(), cause); } - public DevToolsException(String message) { + public DevToolsException(@Nullable String message) { this(message, null); } - public DevToolsException(String message, Throwable cause) { + public DevToolsException(@Nullable String message, @Nullable Throwable cause) { super(message, cause); addInfo(WebDriverException.DRIVER_INFO, "DevTools Connection"); } diff --git a/java/src/org/openqa/selenium/json/JsonException.java b/java/src/org/openqa/selenium/json/JsonException.java index 39e162b74e726..2cd108d278957 100644 --- a/java/src/org/openqa/selenium/json/JsonException.java +++ b/java/src/org/openqa/selenium/json/JsonException.java @@ -17,19 +17,22 @@ package org.openqa.selenium.json; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; import org.openqa.selenium.WebDriverException; +@NullMarked public class JsonException extends WebDriverException { - public JsonException(String message) { + public JsonException(@Nullable String message) { super(message); } - public JsonException(Throwable cause) { + public JsonException(@Nullable Throwable cause) { super(cause); } - public JsonException(String message, Throwable cause) { + public JsonException(@Nullable String message, @Nullable Throwable cause) { super(message, cause); } } diff --git a/java/src/org/openqa/selenium/remote/ScreenshotException.java b/java/src/org/openqa/selenium/remote/ScreenshotException.java index 20c6f0a9887b9..936a28d8cc0b6 100644 --- a/java/src/org/openqa/selenium/remote/ScreenshotException.java +++ b/java/src/org/openqa/selenium/remote/ScreenshotException.java @@ -17,19 +17,22 @@ package org.openqa.selenium.remote; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; import org.openqa.selenium.WebDriverException; +@NullMarked public class ScreenshotException extends WebDriverException { - public ScreenshotException(String message) { + public ScreenshotException(@Nullable String message) { super(message); } - public ScreenshotException(Throwable cause) { + public ScreenshotException(@Nullable Throwable cause) { super(cause); } - public ScreenshotException(String message, Throwable cause) { + public ScreenshotException(@Nullable String message, @Nullable Throwable cause) { super(message, cause); } } From 5208ad15ccf490197e370e17d942c96202955ef2 Mon Sep 17 00:00:00 2001 From: Alex Popov Date: Wed, 9 Jul 2025 16:00:46 +0700 Subject: [PATCH 2/3] fix dependencies on jspecify --- java/src/org/openqa/selenium/json/BUILD.bazel | 1 + 1 file changed, 1 insertion(+) diff --git a/java/src/org/openqa/selenium/json/BUILD.bazel b/java/src/org/openqa/selenium/json/BUILD.bazel index eff66b1b9aa0f..3f83256a83730 100644 --- a/java/src/org/openqa/selenium/json/BUILD.bazel +++ b/java/src/org/openqa/selenium/json/BUILD.bazel @@ -14,5 +14,6 @@ java_export( ], deps = [ "//java/src/org/openqa/selenium:core", + "@maven//:org_jspecify_jspecify", ], ) From 3b4cc244ff247e3d3a6350a8f15ec78d89096290 Mon Sep 17 00:00:00 2001 From: Alex Popov Date: Wed, 9 Jul 2025 17:15:37 +0700 Subject: [PATCH 3/3] add dependency jspecify to build bazel --- java/src/org/openqa/selenium/devtools/BUILD.bazel | 1 + 1 file changed, 1 insertion(+) diff --git a/java/src/org/openqa/selenium/devtools/BUILD.bazel b/java/src/org/openqa/selenium/devtools/BUILD.bazel index 351d22c5781ba..9933f37cf9165 100644 --- a/java/src/org/openqa/selenium/devtools/BUILD.bazel +++ b/java/src/org/openqa/selenium/devtools/BUILD.bazel @@ -22,6 +22,7 @@ java_library( deps = [ "//java/src/org/openqa/selenium:core", "//java/src/org/openqa/selenium/json", + "@maven//:org_jspecify_jspecify", ], )