Skip to content
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

Improve type validation of numeric values #343

Merged
merged 1 commit into from
Nov 15, 2020

Conversation

oguzhanunlu
Copy link
Contributor

@oguzhanunlu oguzhanunlu commented Nov 10, 2020

This PR tries to address #334 . The solution is not perfect, however, it improves the current situation.

In my opinion, we should not merge this PR as is. We should wait jackson-databind's upcoming 2.12.0 release which will introduce JsonNode.canConvertToExactIntegral(), a new method that will meet our purpose.

I wanted to open the PR so that maintainers can see my approach, the way I provide config to all validators etc.

Once jackson-databind 2.12.0 is out, I'll replace my solution with a call to canConvertToExactIntegral

@stevehu stevehu merged commit 912ee75 into networknt:master Nov 15, 2020
@stevehu
Copy link
Contributor

stevehu commented Nov 15, 2020

@oguzhanunlu Thanks a lot for your help.

@stevehu
Copy link
Contributor

stevehu commented Nov 15, 2020

@oguzhanunlu This is an important new feature and it differentiates us from other validators. Could you please add a document in the doc folder? Thanks.

@oguzhanunlu
Copy link
Contributor Author

oguzhanunlu commented Nov 16, 2020

thanks for the kind words @stevehu , sure, I'll add a doc and ping you on the new PR

@oguzhanunlu
Copy link
Contributor Author

@stevehu , I just opened the PR at #346 , sorry for the delay, please let me know if I should improve it, thanks in advance!

@stevehu
Copy link
Contributor

stevehu commented Nov 20, 2020

@oguzhanunlu Thanks a lot for the help. It looks good to me and I have merged it. Planning for another release soon.

@oguzhanunlu
Copy link
Contributor Author

Thanks @stevehu !

stevehu pushed a commit that referenced this pull request Jan 14, 2022
* Improve type validation of integrals

Instead of doing string comparison, use new jackson method to determine if a number is an integral.

The `javaSemantics` config option was added in PR #343 which partially addressed issue #334. In the notes for this PR:
> Once jackson-databind 2.12.0 is out, I'll replace my solution with a call to canConvertToExactIntegral

jackson-databind has been updated to 2.12.1 so this is available but the change has not yet been made.

PR #450 which addressed #446 missed this location which is used when calling `JsonSchemaFactory.getSchema`.

Issue #344 requested coercion of various types but the only type implemented in PR #379 was lossless narrowing, set with configuration option `losslessNarrowing`. I believe that setting is unnecessary now as this implementation of `javaSemantics` addresses the original issue, but left it for backwards compatibility. It also allows you to set `javaSemantics=false` and `losslessNarrowing=true` to achieve only this specific case rather than anything that `javaSemantics` is used for in the future. At this time, these properties do exactly the same thing.

- Change from string comparison to `canConvertToExactIntegral` for `javaSemantics` and `losslessNarrowing`
- Add missing documentation around `losslessNarrowing`
- Add more test cases around integrals

* Update changelog
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants