Я пытаюсь загрузить дескрипторы из внешнего источника.При использовании сгенерированных файлов без импорта это работает без проблем, но когда у прототипа есть импорт, тогда при создании FileDescriptor я получаю DescriptorValidationException:
Не удалось проанализировать дескриптор ./descriptors/test.dsc com.google.protobuf.Descriptors$ DescriptorValidationException: AccessRequest.date_from: ".google.protobuf.Timestamp" не определен.
Proto-файл, который я использую для получения * .dsc-файла:
syntax = "proto3";
import "google/protobuf/timestamp.proto";
message AccessRequest {
int64 cabinet_id = 1;
google.protobuf.Timestamp date_from = 2;
google.protobuf.Timestamp date_to = 3;
}
Командакоторый я использую для получения * .dsc:
protoc --include_imports --proto_path=src/main/proto/ --descriptor_set_out=descriptors/test.dsc src/main/proto/test.proto
Мой код для загрузки * .dsc файлов:
try (final InputStream stream = Files.newInputStream(path)) {
final FileDescriptorSet fds = FileDescriptorSet.parseFrom(stream);
final TypeRegistry.Builder builder = TypeRegistry.newBuilder();
for (final FileDescriptorProto fdp : fds.getFileList()) {
final FileDescriptor fd = FileDescriptor.buildFrom(fdp, new FileDescriptor[]{});
builder.add(fd.getMessageTypes());
globalBuilder.add(fd.getMessageTypes());
}
return new Queue(base, builder.build());
}