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.

Reply via email to