fix NPE in getBoolean when the value is json null - #83
Merged
Merged
Conversation
The null check tested the raw value, which is non-null for json null, so isBoolean() returned null and booleanValue() threw. Matches the shape the other typed accessors already use.
|
BertScholten
approved these changes
Sep 23, 2026
BertScholten
left a comment
Member
There was a problem hiding this comment.
LGTM (imagine it's pointless to check this in a unittest?)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Fixes a couple of small bugs that we haven't actually run into yet.
LLM-generated technical summary
inner.get(key)returns Javanullonly when the key is absent. A JSONnullcomes back asJSONNull.getInstance(), which is non-null, so the guard passed andisBoolean()then returnednull, makingbooleanValue()throw an NPE.{"someFlag": null}crashes today.The replacement is the shape
getString,getNumberandgetArrayalready use: resolve throughgetValue(key), narrow withisBoolean(), and null-check the narrowed value. The message also said "Number" in the boolean accessor, which is the second fix.One behaviour change beyond the NPE: for an absent key this now throws
getValue's "Did not encounter required field in object" instead of the misleading "Wrongly assumed json value to be Number". Same exception type, and consistent with the sibling accessors.Note the module has no test files, so
mvn testpasses having run nothing — compilation is the only automated evidence here.