Releases: bufbuild/protovalidate-java
v1.0.0-rc.2
What's Changed
- Implement
MessageOneofRuleby @srikrsna-buf in #308
Full Changelog: v1.0.0-rc.1...v1.0.0-rc.2
v1.0.0-rc.1
This is the first release candidate for protovalidate-java.
Full Changelog: v0.10.0...v1.0.0-rc.1
v0.10.0
What's Changed
The underlying CEL implementation used by protovalidate-java has been changed to Google's cel-java. There are no breaking changes as a result and all modifications should be internal to this library.
- Override
bytes_to_stringby @srikrsna-buf in #304 - Switch to
dev.cel:celby @srikrsna-buf in #303
Full Changelog: v0.9.1...v0.10.0
v0.9.1
What's Changed
This is a maintenance update that includes an important bug fix: in some situations, the CEL environment does not correctly get populated with its dependencies; specifically, when an expression refers to a submessage whose dependency is in a non-public import, it will not be added to the CEL environment.
- Update to protovalidate 0.12.0 by @smaye81 in #301
- Implement workaround for cel-java import issue by @jchadwick-buf in #302
Full Changelog: 0.9.0...v0.9.1
v0.9.0
Breaking Changes
String formatting is now conformant with the CEL spec.
As a result, some formatting output may differ from previous versions. See #293, #294, and #295 for details on formatting changes.
What's Changed
- Fix overload declaration for format by @smaye81 in #295
- Add supplemental format conformance tests by @smaye81 in #294
- Add conformance testing to string.format implementation by @smaye81 in #293
Full Changelog: v0.8.0...v0.9.0
v0.8.0
Breaking Changes
New API for creating a validator.
Validators are now created via ValidatorFactory using a builder pattern. To migrate, users should make the following changes:
With no config
import build.buf.protovalidate.Validator;
+ import build.buf.protovalidate.ValidatorFactory;
- Validator validator = new Validator();
+ Validator validator = ValidatorFactory.newBuilder().build();With config
import build.buf.protovalidate.Validator;
+ import build.buf.protovalidate.ValidatorFactory;
Config cfg = Config.newBuilder().setFailFast(true).build();
- Validator validator = new Validator(cfg);
+ Validator validator = ValidatorFactory.newBuilder().withConfig(cfg).build();Also note that the returned type is an interface (still named Validator) and no longer a concrete class.
In addition to the above change, users can now seed the validator with descriptors for warming up the cache. To do so, use the buildWithDescriptors method on the builder. The signature is:
buildWithDescriptors(List<Descriptor>, boolean disableLazy) throws CompilationException, InvalidStateException;An example creating a validator with seed descriptors:
MyMessage msg = MyMessage.newBuilder().build();
List<Descriptor> seedDescriptors = new ArrayList<Descriptor>();
seedDescriptors.add(msg.getDescriptorForType());
try {
Validator validator = ValidatorFactory.newBuilder().buildWithDescriptors(seedDescriptors, false);
// Note you can also create a validator with a config
// Validator validator = ValidatorFactory.newBuilder().withConfig(cfg).buildWithDescriptors(seedDescriptors, false);
// Also note that the buildWithDescriptors function is what throws the exception so the validator
// builder can be created ahead of time with no need for catching an exception.
} catch (CompilationException ce) {
// Exception pre-warming the cache with the seed descriptors
} catch (IllegalStateException ise) {
// This is thrown if seedDescriptors is empty and disableLazy is true
}For more context on the changes, see PR #283.
ValidationResult.toString output changed
The toString method of ValidationResult will now print Validation OK if there are no violations. Previously, this text was always Validation error: regardless of whether there were any actual violations.
Protovalidate Compatibility
This release is compatible with Protovalidate v0.11.1.
What's Changed
- Refactor validator creation to support various configurations by @smaye81 in #283
- Fix operator in ValidationResult toString by @smaye81 in #286
- Upgrade to Protovalidate 0.11.1 by @smaye81 in #287
Full Changelog: v0.7.2...v0.8.0
v0.7.2
v0.7.1
What's Changed
- Add TypeScript / JavaScript to the supported languages in README.md by @jrinehart-buf in #279
- Bump com.uber.nullaway:nullaway from 0.12.6 to 0.12.7 by @dependabot in #280
- Switch from s01 to Maven central by @pkwarren in #281
Full Changelog: v0.7.0...v0.7.1
v0.7.0
Breaking Changes
-
The most notable change is that the validation for IP addresses and prefixes (both v4 and v6), email addresses, and URIs has been significantly enhanced to adhere to the relevant RFCs for each. Note that these tighter validations result in breaking changes as some previously-passing values may now be failures. Additionally, with regards to
string.email/isEmailvalidation, we no longer follow RFC 5322 and instead use the HTML standard's definition for valid email addresses.-
For more context on the validation changes and conformance tests added, see the corresponding PR in Protovalidate: bufbuild/protovalidate#320.
-
For full details of the validation changes as they apply to protovalidate-java, see #258.
-
-
In addition, all references to the usage of
constrainthave been changed torule. Previously, these were used interchangeably which led to some confusion. The v0.11.0 release of Protovalidate contains this full rename, which necessitated the change in protovalidate-java and was implemented in #273. As a result, any reference toconstraintin code will need to be changed torule.
What's Changed
This release is compatible with Protovalidate v0.11.0.
- Fix CEL bindings for maps for
thisvariable by @smaye81 in #278 - Fix some issues with custom format function by @smaye81 in #277
- Fix CEL bindings for lists for
thisvariable by @smaye81 in #276 - Fix IPv6 double colon parsing by @smaye81 in #274
- Upgrade to Protovalidate v0.11.0 by @smaye81 in #273
- Fix Ignore Always detection by @smaye81 in #272
- Implement getField CEL function by @jchadwick-buf in #271
- Upgrade validation logic by @smaye81 in #258
- Remove checked in generated code by @pkwarren in #263
- Update to Protovalidate 0.10.4 by @smaye81 in #259
- Prepare GitHub docs for shift to buf.build/docs by @jrinehart-buf in #238
Full Changelog: v0.6.0...v0.7.0
v0.6.0
Breaking Changes
The internal package has been removed. The APIs exposed in internal were never considered to be public, but were nonetheless possible for external packages to import. This is no longer possible. If you were relying on an API that was exposed via internal, please file an issue.
What's Changed
- Makefile: add GRADLE argument by @jchadwick-buf in #218
- Update Buf logo in README by @smallsamantha in #219
- Bump com.google.guava:guava from 33.3.1-jre to 33.4.0-jre by @dependabot in #224
- Update proto generated code to match runtime version by @pkwarren in #231
- Bump com.diffplug.spotless:spotless-plugin-gradle from 6.25.0 to 7.0.2 by @dependabot in #228, #234
- Bump org.assertj:assertj-core from 3.26.3 to 3.27.3 by @dependabot in #220, #225, #232
- Refactor the API for v1 by @jchadwick-buf in #226
- Add URN validation to URI rule by @smaye81 in #236
- Remove support for deprecated options by @jchadwick-buf in #235
- Bump com.uber.nullaway:nullaway from 0.12.1 to 0.12.4 by @dependabot in #217, #227, #239
- Bump maven-publish from 0.30.0 to 0.31.0 by @dependabot in #242
- Bump com.google.protobuf:protobuf-java from 4.28.3 to 4.30.1 by @dependabot in #216, #222, #230, #243
- Bump build.buf:buf from 1.47.2 to 1.50.1 by @dependabot in #221, #229, #233, #245
- Fix custom predefined rules with repeated nested message values by @jrinehart-buf in #246
- Bump org.junit:junit-bom from 5.11.3 to 5.12.1 by @dependabot in #223, #237, #244
- Update to protovalidate 0.10.3 by @timostamm in #247
New Contributors
- @smallsamantha made their first contribution in #219
- @smaye81 made their first contribution in #236
- @jrinehart-buf made their first contribution in #246
- @timostamm made their first contribution in #247
Full Changelog: v0.5.0...v0.6.0