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

Add builder for SchemaValidatorsConfig #1068

Merged
merged 16 commits into from
Jun 20, 2024

Conversation

justin-tay
Copy link
Contributor

This creates a SchemaValidatorsConfig.Builder to create SchemaValidatorsConfig instances. This also updates the documentation and release notes assuming that the next release will be 1.4.1. This also updates all the tests that used the constructor to the builder.

This is was done in order to

  • Eventually make SchemaValidatorsConfig immutable. For now this just deprecates the SchemaValidatorsConfig constructor as this part of the public API is quite widely used. Instances by the builder will throw UnsupportedOperationException when setters are called.
  • Make changes to the defaults in SchemaValidatorsConfig. For instance setting PathType.JSON_POINTER as default as this aligns better with the spec. The changes in defaults only apply if the builder was used to construct the instance so existing codes using the constructor are unaffected and can migrate when it suits them.

Note that there are differences in defaults from the builder vs the constructor.

The following builder creates the same values as the constructor previously.

SchemaValidatorsConfig config = SchemaValidatorsConfig.builder()
    .pathType(PathType.LEGACY)
    .errorMessageKeyword("message")
    .nullableKeywordEnabled(true)
    .build();

The following configurations were renamed with the old ones deprecated

  • handleNullableField -> nullableKeywordEnabled
  • openAPI3StyleDiscriminators -> discriminatorKeywordEnabled
  • customMessageSupported -> errorMessageKeyword

The following defaults were changed in the builder vs the constructor

  • pathType from PathType.LEGACY to PathType.JSON_POINTER
  • handleNullableField from true to false
  • customMessageSupported from true to false

When using the builder custom error messages are not enabled by default and must be enabled by specifying the error message keyword to use ie. "message".

Deprecated Code Replacement
SchemaValidatorsConfig config = new SchemaValidatorsConfig(); SchemaValidatorsConfig config = SchemaValidatorsConfig().builder().pathType(PathType.LEGACY).errorMessageKeyword("message").nullableKeywordEnabled(true).build();
config.setEcma262Validator(true); builder.regularExpressionFactory(JoniRegularExpressionFactory.getInstance());
config.setHandleNullableField(true); builder.nullableKeywordEnabled(true);
config.setOpenAPI3StyleDiscriminators(true); builder.discriminatorKeywordEnabled(true);
config.setCustomMessageSupported(true); builder.errorMessageKeyword("message");

@stevehu stevehu merged commit 4f3345b into networknt:master Jun 20, 2024
4 checks passed
@stevehu
Copy link
Contributor

stevehu commented Jun 20, 2024

@justin-tay Please let me know if we should release the 1.4.1 tag. Thanks.

@justin-tay
Copy link
Contributor Author

@stevehu Think we should release the 1.4.1 tag. Thanks!

@justin-tay justin-tay deleted the schemavalidatorsconfig branch July 2, 2024 01:59
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