Fix numeric conversion to Long when serializing numbers as JsonElement tree #2814
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.
Purpose
Fixes #2680
Description
As mentioned in #2680, an unintended side-effect of 3e3266c was that serializing to a
JsonElement
tree is now converting all integral numbers toLong
instances.This pull request here tries to solve this by using the
JsonWriter#value(Number)
overload again, boxing the converted number. If the type is already matching (e.g. serializing aByte
asByte
) then this also has the advantage that it avoids unwrapping and havingJsonTreeWriter
wrap the value again.But on the other hand when using
JsonWriter
and notJsonTreeWriter
there might be a bit overhead fromJsonWriter#value(Number)
compared toJsonWriter#value(long)
.An alternative to this PR could be to instead revert 3e3266c partially or completely. After all the underlying issue #2156 had been reported by me (and was not blocking me in any way), so maybe other users would not have cared about the missing numeric conversion.
Checklist
This is automatically checked by
mvn verify
, but can also be checked on its own usingmvn spotless:check
.Style violations can be fixed using
mvn spotless:apply
; this can be done in a separate commit to verify that it did not cause undesired changes.null
@since $next-version$
(
$next-version$
is a special placeholder which is automatically replaced during release)TestCase
)mvn clean verify javadoc:jar
passes without errors