Skip to content

Commit 49ebcee

Browse files
committed
[java] JSpecify annotations for capabilities
1 parent e4d3db3 commit 49ebcee

File tree

5 files changed

+24
-9
lines changed

5 files changed

+24
-9
lines changed

java/src/org/openqa/selenium/Capabilities.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,18 @@
2424
import java.util.Optional;
2525
import java.util.Set;
2626
import java.util.stream.Stream;
27+
import org.jspecify.annotations.NullMarked;
28+
import org.jspecify.annotations.Nullable;
2729

2830
/** Describes a series of key/value pairs that encapsulate aspects of a browser. */
31+
@NullMarked
2932
public interface Capabilities extends Serializable {
3033

3134
default String getBrowserName() {
3235
return String.valueOf(Optional.ofNullable(getCapability("browserName")).orElse(""));
3336
}
3437

35-
default Platform getPlatformName() {
38+
default @Nullable Platform getPlatformName() {
3639
return Stream.of("platformName")
3740
.map(this::getCapability)
3841
.filter(Objects::nonNull)
@@ -67,7 +70,7 @@ default String getBrowserVersion() {
6770
* @return The value, or null if not set.
6871
* @see org.openqa.selenium.remote.CapabilityType
6972
*/
70-
Object getCapability(String capabilityName);
73+
@Nullable Object getCapability(String capabilityName);
7174

7275
/**
7376
* @param capabilityName The capability to check.

java/src/org/openqa/selenium/HasCapabilities.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,13 @@
1717

1818
package org.openqa.selenium;
1919

20+
import org.jspecify.annotations.NullMarked;
21+
2022
/**
2123
* Used by classes to indicate that they can describe the {@link org.openqa.selenium.Capabilities}
2224
* they possess. This can be used for run-time detection of features.
2325
*/
26+
@NullMarked
2427
public interface HasCapabilities {
2528
/**
2629
* @return The capabilities of the current driver.

java/src/org/openqa/selenium/ImmutableCapabilities.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,11 @@
2222
import java.util.Collections;
2323
import java.util.Map;
2424
import java.util.TreeMap;
25+
import org.jspecify.annotations.NullMarked;
26+
import org.jspecify.annotations.Nullable;
2527
import org.openqa.selenium.internal.Require;
2628

29+
@NullMarked
2730
public class ImmutableCapabilities implements Capabilities {
2831

2932
private final Map<String, Object> delegate;
@@ -156,7 +159,7 @@ public ImmutableCapabilities(Map<?, ?> capabilities) {
156159
}
157160

158161
@Override
159-
public Object getCapability(String capabilityName) {
162+
public @Nullable Object getCapability(String capabilityName) {
160163
Require.nonNull("Capability name", capabilityName);
161164
return delegate.get(capabilityName);
162165
}
@@ -172,7 +175,7 @@ public int hashCode() {
172175
}
173176

174177
@Override
175-
public boolean equals(Object o) {
178+
public boolean equals(@Nullable Object o) {
176179
if (!(o instanceof Capabilities)) {
177180
return false;
178181
}

java/src/org/openqa/selenium/MutableCapabilities.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,11 @@
2222
import java.util.Map;
2323
import java.util.Set;
2424
import java.util.TreeMap;
25+
import org.jspecify.annotations.NullMarked;
26+
import org.jspecify.annotations.Nullable;
2527
import org.openqa.selenium.internal.Require;
2628

29+
@NullMarked
2730
public class MutableCapabilities implements Capabilities {
2831

2932
private static final Set<String> OPTION_KEYS;
@@ -81,7 +84,7 @@ public void setCapability(String capabilityName, Platform value) {
8184
setCapability(capabilityName, (Object) value);
8285
}
8386

84-
public void setCapability(String key, Object value) {
87+
public void setCapability(String key, @Nullable Object value) {
8588
Require.nonNull("Capability name", key);
8689

8790
// We have to special-case some keys and values because of the popular idiom of calling
@@ -107,7 +110,7 @@ public Map<String, Object> asMap() {
107110
}
108111

109112
@Override
110-
public Object getCapability(String capabilityName) {
113+
public @Nullable Object getCapability(String capabilityName) {
111114
return caps.get(capabilityName);
112115
}
113116

@@ -126,7 +129,7 @@ public int hashCode() {
126129
}
127130

128131
@Override
129-
public boolean equals(Object o) {
132+
public boolean equals(@Nullable Object o) {
130133
if (!(o instanceof Capabilities)) {
131134
return false;
132135
}

java/src/org/openqa/selenium/PersistentCapabilities.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,11 @@
2424
import java.util.stream.Collector;
2525
import java.util.stream.Collectors;
2626
import java.util.stream.Stream;
27+
import org.jspecify.annotations.NullMarked;
28+
import org.jspecify.annotations.Nullable;
2729
import org.openqa.selenium.internal.Require;
2830

31+
@NullMarked
2932
public class PersistentCapabilities implements Capabilities {
3033

3134
private final ImmutableCapabilities caps;
@@ -62,7 +65,7 @@ public Map<String, Object> asMap() {
6265
}
6366

6467
@Override
65-
public Object getCapability(String capabilityName) {
68+
public @Nullable Object getCapability(String capabilityName) {
6669
Require.nonNull("Capability name", capabilityName);
6770
Object capability = overrides.getCapability(capabilityName);
6871
if (capability != null) {
@@ -107,7 +110,7 @@ public int hashCode() {
107110
}
108111

109112
@Override
110-
public boolean equals(Object o) {
113+
public boolean equals(@Nullable Object o) {
111114
if (!(o instanceof Capabilities)) {
112115
return false;
113116
}

0 commit comments

Comments
 (0)