protoc-gen-validate icon indicating copy to clipboard operation
protoc-gen-validate copied to clipboard

pgv-java does not generate validators for optional fields

Open jck opened this issue 3 years ago • 0 comments

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).

jck avatar Apr 14 '22 16:04 jck