Handle null
input in JsonOps.convertTo
#99
+1
−1
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.
The current implementation of
JsonOps.convertTo
throws a null pointer exception wheninput
isnull
by callinginput.getAsJsonPrimitive()
without checking fornull
. Instead, the implementation only checks whetherinput
is an implementation ofJsonNull
. This is problematic because some of the other methods inJsonOps
replace aJsonNull
instance withnull
when returning it, which makes it possible thatinput
isnull
instead of aJsonNull
instance. An example of such a method isJsonOps.getMapValues
.This is an issue with the implementation of
convertTo
and not just a problem with call sites elsewhere, becauseconvertTo
also usesgetMapValues
when converting maps and it recursively callsconvertTo
on the returned map values, which means an input like{"value": null}
is also going to throw an error even though it is a validJsonObject
instance.This pull request adds a null check besides the
instanceof
check forJsonNull
, such that anull
input value and a value of typeJsonNull
are handled the same inJsonOps.convertTo
.This also fixes #62