Given the following service:
message Message {
string content = 1;
}
service EchoService {
rpc echo (Message) returns (Message) {
option (google.api.http) = { get: "/echo" };
}
}
I want to read the option from Java. My understand is the following code should work:
HttpRule rule = Message.getDescriptor()
.getOptions()
.getExtension(AnnotationsProto.http)
However this doesn't compile, complaining about typing issues where it cannot resolve the method.
I am trying to follow this: https://developers.google.com/protocol-buffers/docs/proto.html#customoptions
So the question is, how do I read the option from Java?
Well this is embarrassing, its actually a completely different type.
AnnotationsProto.http
implements type with a generic of MethodOptions
(https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/DescriptorProtos.MethodOptions.html)
Whereas Message.getDescriptor().getOptions().getExtensions()
is expecting a parameter with a generic of MessageOptions
(https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/DescriptorProtos.MessageOptions.html)
MethodOptions vs MessageOptions - perhaps I need to get down to specsavers...