Adds the ability to specify an ExtensionRegistryand a TypeRegistry for resolving protobuf messages. Ordinarily, only a TypeRegistry would necessarily be needed. However, we need to be able to resolve extensions defined in file descriptor sets we don't control, which means we need to be able to reparse to and from the user's descriptors in the worst case: to the user's descriptors to get the extended rule message (whose message type descriptors may have a different hashcode and thus may not resolve using just an ExtensionRegistry alone) and back from the user's descriptors in order to parse the priv/shared field.
Refactors some of the code around reparsing and extensions in general:
Reparsing options for protovalidate built-ins will always use a static extension registry.
Adds the rule variable.
Some refactoring is done around the individual rule compilation, since the code was getting a bit unwieldy.
Updates the conformance runner to generate an ExtensionRegistry and a TypeRegistry. This enables the conformance runner to pass both the old conformance test suite and the new one, regardless of whether the proto descriptors match up.
TODO:
Update to new version of protovalidate protos when they are merged.
ExtensionRegistry
and aTypeRegistry
for resolving protobuf messages. Ordinarily, only aTypeRegistry
would necessarily be needed. However, we need to be able to resolve extensions defined in file descriptor sets we don't control, which means we need to be able to reparse to and from the user's descriptors in the worst case: to the user's descriptors to get the extended rule message (whose message type descriptors may have a different hashcode and thus may not resolve using just anExtensionRegistry
alone) and back from the user's descriptors in order to parse thepriv
/shared
field.rule
variable.ExtensionRegistry
and aTypeRegistry
. This enables the conformance runner to pass both the old conformance test suite and the new one, regardless of whether the proto descriptors match up.TODO:
This will depend on https://github.com/bufbuild/protovalidate/pull/246.