Skip to content

Commit 116724b

Browse files
mk868diemol
authored andcommitted
[java] Add nullness for Require (SeleniumHQ#15084)
Co-authored-by: Diego Molina <[email protected]>
1 parent f92ec10 commit 116724b

File tree

1 file changed

+35
-32
lines changed

1 file changed

+35
-32
lines changed

java/src/org/openqa/selenium/internal/Require.java

Lines changed: 35 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import java.nio.file.Path;
2323
import java.time.Duration;
2424
import java.util.Objects;
25+
import org.jspecify.annotations.NullMarked;
26+
import org.jspecify.annotations.Nullable;
2527

2628
/**
2729
* A utility class to check arguments (preconditions) and state.
@@ -35,6 +37,7 @@
3537
* }
3638
* </pre>
3739
*/
40+
@NullMarked
3841
public final class Require {
3942

4043
private static final String MUST_BE_SET = "%s must be set";
@@ -56,25 +59,25 @@ public static void precondition(boolean condition, String message, Object... arg
5659
}
5760
}
5861

59-
public static <T> T nonNull(String argName, T arg) {
62+
public static <T> T nonNull(String argName, @Nullable T arg) {
6063
if (arg == null) {
6164
throw new IllegalArgumentException(String.format(MUST_BE_SET, argName));
6265
}
6366
return arg;
6467
}
6568

66-
public static <T> T nonNull(String argName, T arg, String message, Object... args) {
69+
public static <T> T nonNull(String argName, @Nullable T arg, String message, Object... args) {
6770
if (arg == null) {
6871
throw new IllegalArgumentException(String.join(" ", argName, String.format(message, args)));
6972
}
7073
return arg;
7174
}
7275

73-
public static <T> ArgumentChecker<T> argument(String argName, T arg) {
76+
public static <T> ArgumentChecker<T> argument(String argName, @Nullable T arg) {
7477
return new ArgumentChecker<>(argName, arg);
7578
}
7679

77-
public static Duration nonNegative(String argName, Duration arg) {
80+
public static Duration nonNegative(String argName, @Nullable Duration arg) {
7881
if (arg == null) {
7982
throw new IllegalArgumentException(String.format(MUST_BE_SET, argName));
8083
}
@@ -84,7 +87,7 @@ public static Duration nonNegative(String argName, Duration arg) {
8487
return arg;
8588
}
8689

87-
public static Duration nonNegative(Duration arg) {
90+
public static Duration nonNegative(@Nullable Duration arg) {
8891
if (arg == null) {
8992
throw new IllegalArgumentException(String.format(MUST_BE_SET, "Duration"));
9093
}
@@ -94,7 +97,7 @@ public static Duration nonNegative(Duration arg) {
9497
return arg;
9598
}
9699

97-
public static Duration positive(String argName, Duration arg) {
100+
public static Duration positive(String argName, @Nullable Duration arg) {
98101
if (arg == null) {
99102
throw new IllegalArgumentException(String.format(MUST_BE_SET, argName));
100103
}
@@ -104,7 +107,7 @@ public static Duration positive(String argName, Duration arg) {
104107
return arg;
105108
}
106109

107-
public static Duration positive(Duration arg) {
110+
public static Duration positive(@Nullable Duration arg) {
108111
if (arg == null) {
109112
throw new IllegalArgumentException(String.format(MUST_BE_SET, "Duration"));
110113
}
@@ -114,7 +117,7 @@ public static Duration positive(Duration arg) {
114117
return arg;
115118
}
116119

117-
public static int nonNegative(String argName, Integer number) {
120+
public static int nonNegative(String argName, @Nullable Integer number) {
118121
if (number == null) {
119122
throw new IllegalArgumentException(String.format(MUST_BE_SET, argName));
120123
}
@@ -124,7 +127,7 @@ public static int nonNegative(String argName, Integer number) {
124127
return number;
125128
}
126129

127-
public static int positive(String argName, Integer number, String message) {
130+
public static int positive(String argName, @Nullable Integer number, @Nullable String message) {
128131
if (number == null) {
129132
throw new IllegalArgumentException(String.format(MUST_BE_SET, argName));
130133
}
@@ -135,7 +138,7 @@ public static int positive(String argName, Integer number, String message) {
135138
return number;
136139
}
137140

138-
public static double positive(String argName, Double number, String message) {
141+
public static double positive(String argName, @Nullable Double number, @Nullable String message) {
139142
if (number == null) {
140143
throw new IllegalArgumentException(String.format(MUST_BE_SET, argName));
141144
}
@@ -146,24 +149,24 @@ public static double positive(String argName, Double number, String message) {
146149
return number;
147150
}
148151

149-
public static double positive(String argName, Double number) {
152+
public static double positive(String argName, @Nullable Double number) {
150153
return positive(argName, number, null);
151154
}
152155

153-
public static int positive(String argName, Integer number) {
156+
public static int positive(String argName, @Nullable Integer number) {
154157
return positive(argName, number, null);
155158
}
156159

157-
public static IntChecker argument(String argName, Integer number) {
160+
public static IntChecker argument(String argName, @Nullable Integer number) {
158161
return new IntChecker(argName, number);
159162
}
160163

161164
@Deprecated(forRemoval = true)
162-
public static FileChecker argument(String argName, File file) {
165+
public static FileChecker argument(String argName, @Nullable File file) {
163166
return new FileChecker(argName, file);
164167
}
165168

166-
public static PathChecker argument(String argName, Path path) {
169+
public static PathChecker argument(String argName, @Nullable Path path) {
167170
return new PathChecker(argName, path);
168171
}
169172

@@ -173,25 +176,25 @@ public static void stateCondition(boolean state, String message, Object... args)
173176
}
174177
}
175178

176-
public static <T> StateChecker<T> state(String name, T state) {
179+
public static <T> StateChecker<T> state(String name, @Nullable T state) {
177180
return new StateChecker<>(name, state);
178181
}
179182

180183
@Deprecated(forRemoval = true)
181-
public static FileStateChecker state(String name, File file) {
184+
public static FileStateChecker state(String name, @Nullable File file) {
182185
return new FileStateChecker(name, file);
183186
}
184187

185-
public static PathStateChecker state(String name, Path path) {
188+
public static PathStateChecker state(String name, @Nullable Path path) {
186189
return new PathStateChecker(name, path);
187190
}
188191

189192
public static class ArgumentChecker<T> {
190193

191194
private final String argName;
192-
private final T arg;
195+
private final @Nullable T arg;
193196

194-
ArgumentChecker(String argName, T arg) {
197+
ArgumentChecker(String argName, @Nullable T arg) {
195198
this.argName = argName;
196199
this.arg = arg;
197200
}
@@ -234,9 +237,9 @@ public T instanceOf(Class<?> cls) {
234237
public static class IntChecker {
235238

236239
private final String argName;
237-
private final Integer number;
240+
private final @Nullable Integer number;
238241

239-
IntChecker(String argName, Integer number) {
242+
IntChecker(String argName, @Nullable Integer number) {
240243
this.argName = argName;
241244
this.number = number;
242245
}
@@ -256,9 +259,9 @@ public int greaterThan(int max, String message) {
256259
public static class FileChecker {
257260

258261
private final String argName;
259-
private final File file;
262+
private final @Nullable File file;
260263

261-
FileChecker(String argName, File file) {
264+
FileChecker(String argName, @Nullable File file) {
262265
this.argName = argName;
263266
this.file = file;
264267
}
@@ -297,9 +300,9 @@ public File isDirectory() {
297300
public static class PathChecker {
298301

299302
private final String argName;
300-
private final Path path;
303+
private final @Nullable Path path;
301304

302-
PathChecker(String argName, Path path) {
305+
PathChecker(String argName, @Nullable Path path) {
303306
this.argName = argName;
304307
this.path = path;
305308
}
@@ -338,9 +341,9 @@ public Path isDirectory() {
338341
public static class StateChecker<T> {
339342

340343
private final String name;
341-
private final T state;
344+
private final @Nullable T state;
342345

343-
StateChecker(String name, T state) {
346+
StateChecker(String name, @Nullable T state) {
344347
this.name = name;
345348
this.state = state;
346349
}
@@ -374,9 +377,9 @@ public T instanceOf(Class<?> cls) {
374377
public static class FileStateChecker {
375378

376379
private final String name;
377-
private final File file;
380+
private final @Nullable File file;
378381

379-
FileStateChecker(String name, File file) {
382+
FileStateChecker(String name, @Nullable File file) {
380383
this.name = name;
381384
this.file = file;
382385
}
@@ -425,9 +428,9 @@ public File isExecutable() {
425428
public static class PathStateChecker {
426429

427430
private final String name;
428-
private final Path path;
431+
private final @Nullable Path path;
429432

430-
PathStateChecker(String name, Path path) {
433+
PathStateChecker(String name, @Nullable Path path) {
431434
this.name = name;
432435
this.path = path;
433436
}

0 commit comments

Comments
 (0)