In that case, I believe you should be able to find the data in the
UnknownFieldSet:
fileDescriptor.getOptions().getUnknownFields().getField(50000).getLengthDelimitedList()

That should give you a list with your string represented as a ByteString
(UTF-8 encoded).


On Wed, Jul 22, 2020 at 3:21 PM Moustafa Nassar <[email protected]> wrote:

> So the issue I am having is that I am parsing the descriptor files at
> runtime, I don't have access to the proto class therefore I can't call
> YourProtoFile.registerAllExtensions. Here is how I am reading the
> descriptor file and getting the FileDescriptor:
>
> // Open test.desc and get the FileDescriptorSet
> FileInputStream fin = new FileInputStream("/path/to/test.desc");
> FileDescriptorSet set = FileDescriptorSet.parseFrom(fin);
>
> // This loop handles my imports
> List<FileDescriptor> fileDescriptors = new ArrayList<>();
> for(int i=0; i<set.getFileCount;i++){
>     fileDescriptors.add(FileDescriptor.buildFrom(set.getFile(i), new
> FileDescriptor[] {})));
> }
>
> // Get the FileDescriptor
> FileDescriptor descriptor =
> FileDescriptor.buildFrom(set.getFile(set.getFileCount()-1),
> fileDescriptors.toArray(new FileDescriptor[0]));
>
> On Wednesday, July 22, 2020 at 4:54:56 PM UTC-4 [email protected] wrote:
>
>> Hi Moustafa,
>>
>> To parse the FileDescriptor:
>> 1. create an ExtensionRegistry using ExtensionRegistry.newInstance,
>> 2. Use YourProtoFile.registerAllExtensions(registry)  (look for that
>> generated method)
>> 3. Parse using parseFrom(data, registry)
>> 4. Access using result.getExtension(TestProto.myOption)  // look for the
>> exact location in the generated code.
>>
>> There's more documentation on this here:
>> https://developers.google.com/protocol-buffers/docs/reference/java-generated
>>
>>
>> On Wed, Jul 22, 2020 at 1:41 PM Moustafa Nassar <[email protected]> wrote:
>>
>>> The file I have is:
>>>
>>> test.proto
>>>
>>> syntax = "proto3"
>>> import "google/protobuf/descriptor.proto"
>>> extend google.protobuf.FileOptions{
>>>     string myOption = 50000;
>>> }
>>> option (myOption) = "foo";
>>>
>>> I create a descriptor file by using: protoc --include_imports
>>> --descriptor_set_out="test.desc" test.proto
>>>
>>> I then get the FileDescriptor from test.desc and do
>>> System.out.println(FileDescriptor.getOptions()). It prints out 50000: "foo"
>>> but I don't know how to get that in a string or something that I can work
>>> with.
>>>
>>> --
>>> 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/04cb2072-ce76-450e-a9fc-601de703b683n%40googlegroups.com
>>> <https://groups.google.com/d/msgid/protobuf/04cb2072-ce76-450e-a9fc-601de703b683n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
>>
>> --
>> -Nadav
>>
> --
> 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/366a6f6d-098c-4aba-8fc1-28db932fbd8cn%40googlegroups.com
> <https://groups.google.com/d/msgid/protobuf/366a6f6d-098c-4aba-8fc1-28db932fbd8cn%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>


-- 
-Nadav

-- 
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/CANZcNEpz0cB%2Bm7PE1KJHGhVZ2ur0d17v43eMW71EHq9XH5aDnA%40mail.gmail.com.

Reply via email to