Как прочитать пользовательскую опцию proto3 из Java

Учитывая следующую услугу:

message Message {
  string content = 1;
}

service EchoService {
  rpc echo (Message) returns (Message) {
    option (google.api.http) = { get: "/echo" };
  }
}

Я хочу прочитать вариант с Java. Насколько я понимаю, должен работать следующий код:

HttpRule rule = Message.getDescriptor()
  .getOptions()
  .getExtension(AnnotationsProto.http)

Однако это не компилируется, жалуясь на проблемы с вводом текста, когда он не может разрешить метод.

Я пытаюсь следовать этому: https://developers.google.com/protocol-buffers/docs/proto.html#customoptions

Итак, вопрос, как мне прочитать опцию из Java?


person Cheetah    schedule 18.01.2020    source источник


Ответы (1)


Ну, это смущает, это на самом деле совершенно другой тип.

AnnotationsProto.http реализует тип с обобщением MethodOptions (https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/DescriptorProtos.MethodOptions.html)

В то время как Message.getDescriptor().getOptions().getExtensions() ожидает параметр с общим значением MessageOptions (https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/DescriptorProtos.MessageOptions.html)

МетодОпции против СообщенияОпции — возможно, мне нужно перейти к спецсейверам...

person Cheetah    schedule 19.01.2020