protoc-gen-validate
protoc-gen-validate copied to clipboard
pgv-java does not generate validators for optional fields
full code here: https://github.com/jck/pgv-java-optional-issue
versions
protobuf gradle: 0.8.18 pgvVersion: 0.6.7 protobufVersion: 3.20.0 grpcVersion: 1.45.1
failing example
https://github.com/jck/pgv-java-optional-issue/blob/d6869833a530a3c632972503811408c4acd5eb83/src/main/proto/example.proto#L9-L10
int64 required_int64 = 2 [(validate.rules).int64 = { gte: 0, lte: 10000}];
optional int64 optional_int = 3 [(validate.rules).int64 = { gte: 0, lte: 10000}];
https://github.com/jck/pgv-java-optional-issue/blob/main/build/generated/source/proto/main/javapgv/examplepb/ExampleValidator.java
// Code generated by protoc-gen-validate. DO NOT EDIT.
// source: example.proto
package examplepb;
@SuppressWarnings("all")
public class ExampleValidator {
public static io.envoyproxy.pgv.ValidatorImpl validatorFor(Class clazz) {
if (clazz.equals(examplepb.Example.Person.class)) return new PersonValidator();
return null;
}
/**
* Validates {@code Person} protobuf objects.
*/
public static class PersonValidator implements io.envoyproxy.pgv.ValidatorImpl<examplepb.Example.Person> {
private final Long ID__GT = 999L;
private final Long REQUIRED_INT_64__LTE = 10000L;
private final Long REQUIRED_INT_64__GTE = 0L;
public void assertValid(examplepb.Example.Person proto, io.envoyproxy.pgv.ValidatorIndex index) throws io.envoyproxy.pgv.ValidationException {
io.envoyproxy.pgv.ComparativeValidation.greaterThan(".examplepb.Person.id", proto.getId(), ID__GT, java.util.Comparator.naturalOrder());
io.envoyproxy.pgv.ComparativeValidation.range(".examplepb.Person.required_int64", proto.getRequiredInt64(), null, REQUIRED_INT_64__LTE, null, REQUIRED_INT_64__GTE, java.util.Comparator.naturalOrder());
}
}
}
note that pgv does not validate the optional field (optional_int).