- Notifications
You must be signed in to change notification settings - Fork15
Protocol Buffer Validation for Java.
License
bufbuild/protovalidate-java
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Protovalidate is the semantic validation library for Protobuf. It provides standard annotations to validate common rules on messages and fields, as well as the ability to useCEL to write custom rules. It's the next generation ofprotoc-gen-validate.
With Protovalidate, you can annotate your Protobuf messages with both standard and custom validation rules:
syntax="proto3";packageacme.user.v1;import"buf/validate/validate.proto";messageUser {stringid=1 [(buf.validate.field).string.uuid =true];uint32age=2 [(buf.validate.field).uint32.lte =150];// We can only hope.stringemail=3 [(buf.validate.field).string.email =true];stringfirst_name=4 [(buf.validate.field).string.max_len =64];stringlast_name=5 [(buf.validate.field).string.max_len =64];option(buf.validate.message).cel= {id:"first_name_requires_last_name"message:"last_name must be present if first_name is present"expression:"!has(this.first_name) || has(this.last_name)" };}
Once you've addedprotovalidate-java
to your project, validation is idiomatic Java:
ValidationResultresult =validator.validate(message);if (!result.isSuccess()) {// Handle failure.}
Tip
The easiest way to get started with Protovalidate for RPC APIs are the quickstarts in Buf's documentation. There's one available forJava and gRPC.
protovalidate-java
is listed inMaven Central, which provides installation snippets for Gradle, Maven, and other package managers. In Gradle, it's:
dependencies { implementation'build.buf:protovalidate:<version>'}
Comprehensive documentation for Protovalidate is available inBuf's documentation library.
Highlights for Java developers include:
- Thedeveloper quickstart
- A comprehensive RPC quickstart forJava and gRPC
- Amigration guide for protoc-gen-validate users
Protovalidate isn't just for Java! You might be interested in sibling repositories for other languages:
protovalidate-go
(Go)protovalidate-python
(Python)protovalidate-cc
(C++)protovalidate-es
(TypeScript and JavaScript)
Additionally,protovalidate's core repository provides:
- Protovalidate's Protobuf API
- Conformance testing utilities for acceptance testing of
protovalidate
implementations
We genuinely appreciate any help! If you'd like to contribute, check out these resources:
- Contributing Guidelines: Guidelines to make your contribution process straightforward and meaningful
- Conformance testing utilities: Utilities providing acceptance testing of
protovalidate
implementations
Offered under theApache 2 license.
About
Protocol Buffer Validation for Java.
Resources
License
Code of conduct
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.