field->options().DebugString()

returns

"51234: \"uuid\"\n"

So he even got the ID right that is defined here:

syntax = "proto3";
import "google/protobuf/descriptor.proto";

package javaleo.proto;

extend google.protobuf.FieldOptions {
    string javatype = 51234;
}




Am Dienstag, 26. November 2019 18:18:04 UTC+1 schrieb Adam Cozzette:
>
> I wonder if the parser put it in the uninterpreted_option field within 
> FieldOptions. Could you try also printing out 
> field->options().DebugString()?
>
> On Tue, Nov 26, 2019 at 1:58 AM Leo Hilbert <[email protected] 
> <javascript:>> wrote:
>
>> Hi, sure! 
>> It returns:
>> "string id = 1[json_name = \"id\", (.javaleo.proto.javatype) = 
>> \"uuid\"];\n"
>>
>> I also attached a screenshot of the field where you can see that 
>> options->_extensions_ is empty.
>>
>> [image: Bildschirmfoto 2019-11-26 um 10.54.35.png]
>>
>> The line in the proto-file looks like this:
>>
>> string id = 1 [(javaleo.proto.javatype) = "uuid"];
>>
>>
>>
>>
>>
>> Am Montag, 25. November 2019 22:40:41 UTC+1 schrieb Adam Cozzette:
>>>
>>> Your code looks right as far as I can tell. In C++ there's no need to 
>>> manually register extensions because they register themselves before main() 
>>> begins. Could you try calling DebugString() on the FieldDescriptor that you 
>>> expect to have the extension? Seeing a human-readable summary of that 
>>> descriptor might offer some insight.
>>>
>>> On Mon, Nov 25, 2019 at 12:28 PM Leo Hilbert <[email protected]> wrote:
>>>
>>>> Hi guys,
>>>>
>>>> *Background:*
>>>> I'm currently building/prototyping a modified version of the protoc 
>>>> java-compiler. I need to change some things from the 
>>>> standard-implementation for my usecase, but want to keep most of it.
>>>> To avoid starting from scratch I copied the java-generation-code to my 
>>>> own project and started to modify it. I'm a java-dev, so C++ proves to be 
>>>> quite the challenge, but I'm learning a lot and am nearly finished with 
>>>> what I wanted to do. However now I'm stuck and need your help.
>>>>
>>>> Here is a quick overview of the relevant folders in my project ( 
>>>> https://github.com/leohilbert/protoc-gen-java-leo ):
>>>>
>>>>    - *include-folder*: "h-files" that I copied over (otherwise no 
>>>>    classes from the protoc-libraries were found)
>>>>    - *java-folder*: for my java-library. Also contains my 
>>>>    test-proto-files for now (java/src/test/proto).
>>>>    - *src/google/protobuf/compiler/java_leo*: copied and modifed 
>>>>    java-generation code from the official repo
>>>>    - *src/javaleo/proto*: the generated c++ code for my custom 
>>>>    FieldOption (java/src/test/proto/options.proto)
>>>>    
>>>> btw: if you have any feedback on my setup, it's greatly appreciated! 
>>>> I'm a C++ noob and trying to understand everything as I go. :) 
>>>>
>>>> *Now to my actual problem:*
>>>> If you navigate to src/google/protobuf/compiler/java_leo/java_field.cc 
>>>> <https://github.com/leohilbert/protoc-gen-java-leo/blob/master/src/google/protobuf/compiler/java_leo/java_field.cc>
>>>>  in 
>>>> line 64 you can see that I'm trying to read the value from my custom-field 
>>>> option by calling 
>>>> string test = field->options().GetExtension(javaleo::proto::javatype);
>>>>
>>>> This is *always *empty. Although I imported and used this exact custom 
>>>> FieldOption 
>>>> <https://github.com/leohilbert/protoc-gen-java-leo/blob/master/java/src/test/proto/options.proto>
>>>>  
>>>> in my addressbook.proto 
>>>> <https://github.com/leohilbert/protoc-gen-java-leo/blob/master/java/src/test/proto/addressbook.proto>
>>>> .
>>>> The C++-Class for the option.proto is also generated and add in the 
>>>> CMakeList (src/javaleo/proto).
>>>> "javaleo::proto::javatype" *does* compile, so at least it seems to be 
>>>> in the executable somewhere.
>>>>
>>>> What makes me suspicious is that I did not register this 
>>>> custom-extension anywhere in my code. I'm thinking of something like 
>>>> "ExtensionRegistry.registerExtension(javaleo::proto::javatype);" to add to 
>>>> the beginning of my plugin (main.cpp). Otherwise how should protoc know 
>>>> how 
>>>> this field should be interpreted. Am I on the right track here, or did I 
>>>> understand this whole system wrong.
>>>>
>>>> I debugged this a lot already and am running out of ideas. Searching 
>>>> for a solution online is also really tricky, because not a lot of people 
>>>> have compiled there own protoc-compiler.. But maybe I'm looking in the 
>>>> wrong direction.
>>>>
>>>> I hope my issue is somewhat clear, it's hard describing it when knowing 
>>>> so little about c++ and how protoc works internally.. ^^
>>>>
>>>> TLDR: I need to get the value of my custom-option during 
>>>> code-generation, but my field-option is always ignored. Help :c
>>>>
>>>> -- 
>>>> 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 view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/protobuf/8135f496-9ec3-4e0d-bff2-dd37d85792bc%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/protobuf/8135f496-9ec3-4e0d-bff2-dd37d85792bc%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> -- 
>> 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] <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/protobuf/0fe72ed2-c773-4233-9572-0ba2c1ccc657%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/protobuf/0fe72ed2-c773-4233-9572-0ba2c1ccc657%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/c74eacbb-4b35-4ff1-a78c-88990ff2e9b8%40googlegroups.com.

Reply via email to