- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 8.6k
[java] JSpecify annotations for capabilities #14397
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
| PR Reviewer Guide 🔍
 | 
| PR Code Suggestions ✨
 | 
| I pushed one more commit to fix two more NullAway errors (related: #14421). Actually, in multithreaded applications  @diemol could you look at this? | 
| Can you elaborate? | 
| Oh, I meant to ask for a review, | 
User description
Description
In this PR I'm adding nullness annotations for interfaces and classes:
CapabilitiesHasCapabilitiesImmutableCapabilitiesMutableCapabilitiesPersistentCapabilitiesCapabilitiesgetPlatformName()- can return null value -> marked with@NullablegetCapability(String capabilityName)- can return null value when capability with specified name does not exist -> marked with@NullableHasCapabilitiesNo null values
ImmutableCapabilitiesgetCapability(String capabilityName)- follows fromCapabilities#getCapability(String capabilityName)-> marked with@Nullableequals(Object o)- null parameter allowed -> marked with@NullableMutableCapabilitiessetCapability(String key, Object value)- nullvalueallowed (then capability with specified key will be removed) -> marked with@NullablegetCapability(String capabilityName)- follows fromCapabilities#getCapability(String capabilityName)-> marked with@Nullableequals(Object o)- null parameter allowed -> marked with@NullablePersistentCapabilitiesgetCapability(String capabilityName)- follows fromCapabilities#getCapability(String capabilityName)-> marked with@Nullableequals(Object o)- null parameter allowed -> marked with@NullableMotivation and Context
The JSpecify nullness annotations will give developers better exposure to potential problems with their code to avoid NullPointerExceptions.
Related issue: #14291
Types of changes
Checklist
PR Type
enhancement
Description
@NullMarkedand@Nullable) to several interfaces and classes to improve null safety.Capabilities,HasCapabilities,ImmutableCapabilities,MutableCapabilities, andPersistentCapabilitiesto include these annotations.NullPointerExceptions.Changes walkthrough 📝
Capabilities.java
Add nullness annotations to Capabilities interfacejava/src/org/openqa/selenium/Capabilities.java
@NullMarkedannotation to the interface.getPlatformNameandgetCapabilitymethods with@Nullable.HasCapabilities.java
Add nullness annotations to HasCapabilities interfacejava/src/org/openqa/selenium/HasCapabilities.java
@NullMarkedannotation to the interface.ImmutableCapabilities.java
Add nullness annotations to ImmutableCapabilities classjava/src/org/openqa/selenium/ImmutableCapabilities.java
@NullMarkedannotation to the class.getCapabilityandequalsmethods with@Nullable.MutableCapabilities.java
Add nullness annotations to MutableCapabilities classjava/src/org/openqa/selenium/MutableCapabilities.java
@NullMarkedannotation to the class.setCapability,getCapability, andequalsmethods with@Nullable.PersistentCapabilities.java
Add nullness annotations to PersistentCapabilities classjava/src/org/openqa/selenium/PersistentCapabilities.java
@NullMarkedannotation to the class.getCapabilityandequalsmethods with@Nullable.