Yes, it's the latter: `options.proto` is part of the protoc plugin while `foo.proto` is not.
Judging from what I've seen of what's generated as part of the protoc plugin versus what's generated by what's using the protoc plugin, I had just formulated this very same hypothesis and was about to test it out. Thanks for concurring that this is a good line to investigate and, in fact, what's actually happening underneath. I've been hitting my head against this problem for a while and had started losing steam so your response helps a lot. Thanks, again, Noel On Tue, Sep 5, 2017 at 10:49 AM Feng Xiao <[email protected]> wrote: > Suppose you have two .proto files, an options.proto where the extension is > defined, and a foo.proto where the custom option is used. > > If both proto files are actually part of your protoc plugin (i.e., your > plugin includes the generated Java class of both .proto files), you should > be able to access the option values in foo.proto without problem. > > If options.proto is part of your protoc plugin, and foo.proto is the proto > file that's being compiled by protoc + your plugin, you need to provide an > ExtensionRegistry when parsing the CodeGeneratorRequest message. After that > custom options included in the ExtensionRegistry should be accessible. > > On Fri, Sep 1, 2017 at 5:34 PM, Noel Yap <[email protected]> wrote: > >> Hmm, I'm wondering if that starting block never actually executes. >> >> On Fri, Sep 1, 2017, 17:05 Noel Yap <[email protected]> wrote: >> >>> I'm seeing the generated code having in a `static` init block: >>> ``` >>> com.google.protobuf.Descriptors.FileDescriptor >>> .internalBuildGeneratedFileFrom(descriptorData, >>> new com.google.protobuf.Descriptors.FileDescriptor[] { >>> >>> com.example.proto.options.api_docs.ApiDocsOptionsProto.getDescriptor(), >>> com.example.proto.options.ServerOptionsProto.getDescriptor(), >>> }, assigner); >>> com.google.protobuf.ExtensionRegistry registry = >>> com.google.protobuf.ExtensionRegistry.newInstance(); >>> registry.add(com.example.proto.options.ServerOptionsProto.server); >>> com.google.protobuf.Descriptors.FileDescriptor >>> .internalUpdateFileDescriptor(descriptor, registry); >>> >>> com.example.proto.options.api_docs.ApiDocsOptionsProto.getDescriptor(); >>> com.example.proto.options.ServerOptionsProto.getDescriptor(); >>> ``` >>> >>> On Fri, Sep 1, 2017 at 4:54 PM Adam Cozzette <[email protected]> >>> wrote: >>> >>>> You may also need to provide an ExtensionRegistry as described here >>>> <https://developers.google.com/protocol-buffers/docs/reference/java-generated#extension> >>>> when you parse the proto, in order for the extension to be visible. >>>> >>>> On Fri, Sep 1, 2017 at 3:55 PM, Noel Yap <[email protected]> wrote: >>>> >>>>> One piece of possibly important information. The code being written is >>>>> for a `protoc` plugin. I've updated the Stackoverflow question to state >>>>> that. >>>>> >>>>> On Fri, Sep 1, 2017 at 3:42 PM Noel Yap <[email protected]> wrote: >>>>> >>>>>> proto.getDescriptor().getFile().getOptions() didn't work. If I print >>>>>> that out, I see: >>>>>> >>>>>> java_package: \"com.google.protobuf\"\njava_outer_classname: >>>>>> \"DescriptorProtos\"\noptimize_for: SPEED\ngo_package: \" >>>>>> github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor\ >>>>>> <http://github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor%5C>"\nobjc_class_prefix: >>>>>> \"GPB\"\ncsharp_namespace: \"Google.Protobuf.Reflection\" >>>>>> >>>>>> I've also tried `proto.getOptions()`. That shows the options like >>>>>> `java_package` but `hasExtension` for the extension I'm setting is still >>>>>> returning `false`. >>>>>> >>>>>> On Fri, Sep 1, 2017 at 2:53 PM Adam Cozzette <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> I posted an answer on your StackOverflow post but let me know if you >>>>>>> still have any trouble with that. >>>>>>> >>>>>>> On Wed, Aug 30, 2017 at 4:13 PM, Noel Yap <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> >>>>>>>> https://stackoverflow.com/questions/45970986/how-to-get-value-of-protobuf-custom-option-in-java >>>>>>>> >>>>>>> -- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "Protocol Buffers" group. >>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>> send an email to [email protected]. >>>>>>> >>>>>>> >>>>>>>> To post to this group, send email to [email protected]. >>>>>>>> Visit this group at https://groups.google.com/group/protobuf. >>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>> >>>>>>> >>>> -- >> You received this message because you are subscribed to the Google Groups >> "Protocol Buffers" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at https://groups.google.com/group/protobuf. >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/d/optout.
