From 19a275eab9d25c43eb18c68fee40dd4bd865e3aa Mon Sep 17 00:00:00 2001 From: Alex Popov Date: Wed, 9 Jul 2025 02:42:18 +0700 Subject: [PATCH] Add JSpecify nullable annotations to exception classes --- .../openqa/selenium/devtools/RequestFailedException.java | 2 ++ .../selenium/grid/sessionmap/jdbc/JdbcException.java | 9 ++++++--- .../openqa/selenium/remote/NoSuchDriverException.java | 7 +++++-- .../selenium/remote/UnreachableBrowserException.java | 7 +++++-- .../selenium/remote/http/ConnectionFailedException.java | 7 +++++-- .../selenium/safari/ConnectionClosedException.java | 5 ++++- .../selenium/support/ui/UnexpectedTagNameException.java | 6 +++++- 7 files changed, 32 insertions(+), 11 deletions(-) diff --git a/java/src/org/openqa/selenium/devtools/RequestFailedException.java b/java/src/org/openqa/selenium/devtools/RequestFailedException.java index 6ffef0c946fc3..322d610b28951 100644 --- a/java/src/org/openqa/selenium/devtools/RequestFailedException.java +++ b/java/src/org/openqa/selenium/devtools/RequestFailedException.java @@ -17,6 +17,7 @@ package org.openqa.selenium.devtools; +import org.jspecify.annotations.NullMarked; import org.openqa.selenium.WebDriverException; import org.openqa.selenium.remote.http.Filter; import org.openqa.selenium.remote.http.HttpHandler; @@ -26,4 +27,5 @@ * browser fails to send a HTTP request. It can be caught in a {@link Filter} to handle the error * by, for example, returning a custom HTTP response. */ +@NullMarked public class RequestFailedException extends WebDriverException {} diff --git a/java/src/org/openqa/selenium/grid/sessionmap/jdbc/JdbcException.java b/java/src/org/openqa/selenium/grid/sessionmap/jdbc/JdbcException.java index 7b98a504bcc40..6cb0c694be40f 100644 --- a/java/src/org/openqa/selenium/grid/sessionmap/jdbc/JdbcException.java +++ b/java/src/org/openqa/selenium/grid/sessionmap/jdbc/JdbcException.java @@ -17,22 +17,25 @@ package org.openqa.selenium.grid.sessionmap.jdbc; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; import org.openqa.selenium.WebDriverException; +@NullMarked public class JdbcException extends WebDriverException { public JdbcException() { super(); } - public JdbcException(String message) { + public JdbcException(@Nullable String message) { super(message); } - public JdbcException(Throwable cause) { + public JdbcException(@Nullable Throwable cause) { super(cause); } - public JdbcException(String message, Throwable cause) { + public JdbcException(@Nullable String message, @Nullable Throwable cause) { super(message, cause); } } diff --git a/java/src/org/openqa/selenium/remote/NoSuchDriverException.java b/java/src/org/openqa/selenium/remote/NoSuchDriverException.java index 359f2458b60b0..c3ad3ea114e00 100644 --- a/java/src/org/openqa/selenium/remote/NoSuchDriverException.java +++ b/java/src/org/openqa/selenium/remote/NoSuchDriverException.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; import org.openqa.selenium.remote.service.DriverFinder; /** Thrown by {@link DriverFinder#getDriverPath()} (DriverService, Capabilities)}. */ +@NullMarked public class NoSuchDriverException extends WebDriverException { private static final String SUPPORT_URL = BASE_SUPPORT_URL + "/driver_location/"; - public NoSuchDriverException(String reason) { + public NoSuchDriverException(@Nullable String reason) { super(reason); } - public NoSuchDriverException(String reason, Throwable cause) { + public NoSuchDriverException(@Nullable String reason, @Nullable Throwable cause) { super(reason, cause); } diff --git a/java/src/org/openqa/selenium/remote/UnreachableBrowserException.java b/java/src/org/openqa/selenium/remote/UnreachableBrowserException.java index 005edb47486a1..a86a83c0711ff 100644 --- a/java/src/org/openqa/selenium/remote/UnreachableBrowserException.java +++ b/java/src/org/openqa/selenium/remote/UnreachableBrowserException.java @@ -17,6 +17,8 @@ package org.openqa.selenium.remote; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; import org.openqa.selenium.WebDriverException; /** @@ -33,12 +35,13 @@ * * 1) */ +@NullMarked public class UnreachableBrowserException extends WebDriverException { - public UnreachableBrowserException(String message) { + public UnreachableBrowserException(@Nullable String message) { super(message); } - public UnreachableBrowserException(String message, Throwable cause) { + public UnreachableBrowserException(@Nullable String message, @Nullable Throwable cause) { super(message, cause); } } diff --git a/java/src/org/openqa/selenium/remote/http/ConnectionFailedException.java b/java/src/org/openqa/selenium/remote/http/ConnectionFailedException.java index 696bc6705d42e..18730585e0c39 100644 --- a/java/src/org/openqa/selenium/remote/http/ConnectionFailedException.java +++ b/java/src/org/openqa/selenium/remote/http/ConnectionFailedException.java @@ -17,15 +17,18 @@ package org.openqa.selenium.remote.http; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; import org.openqa.selenium.WebDriverException; +@NullMarked public class ConnectionFailedException extends WebDriverException { - public ConnectionFailedException(String message) { + public ConnectionFailedException(@Nullable String message) { super(message); } - public ConnectionFailedException(String message, Throwable cause) { + public ConnectionFailedException(@Nullable String message, @Nullable Throwable cause) { super(message, cause); } } diff --git a/java/src/org/openqa/selenium/safari/ConnectionClosedException.java b/java/src/org/openqa/selenium/safari/ConnectionClosedException.java index 2fda07c64c3c8..696b8696a3fb8 100644 --- a/java/src/org/openqa/selenium/safari/ConnectionClosedException.java +++ b/java/src/org/openqa/selenium/safari/ConnectionClosedException.java @@ -17,12 +17,15 @@ package org.openqa.selenium.safari; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; import org.openqa.selenium.WebDriverException; /** Exception thrown when the connection to the SafariDriver is lost. */ +@NullMarked public class ConnectionClosedException extends WebDriverException { - public ConnectionClosedException(String message) { + public ConnectionClosedException(@Nullable String message) { super(message); } } diff --git a/java/src/org/openqa/selenium/support/ui/UnexpectedTagNameException.java b/java/src/org/openqa/selenium/support/ui/UnexpectedTagNameException.java index 6d4afce0c359f..e46aaa57bb54d 100644 --- a/java/src/org/openqa/selenium/support/ui/UnexpectedTagNameException.java +++ b/java/src/org/openqa/selenium/support/ui/UnexpectedTagNameException.java @@ -17,10 +17,14 @@ package org.openqa.selenium.support.ui; +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; import org.openqa.selenium.WebDriverException; +@NullMarked public class UnexpectedTagNameException extends WebDriverException { - public UnexpectedTagNameException(String expectedTagName, String actualTagName) { + public UnexpectedTagNameException( + @Nullable String expectedTagName, @Nullable String actualTagName) { super( String.format( "Element should have been \"%s\" but was \"%s\"", expectedTagName, actualTagName));