Thank you this should work for my purposes, I think the first approach you presented to me is preferred if possible. There seems to be a solution here: https://groups.google.com/g/protobuf/c/zKYLsr9xE90 I am not skilled enough in protobuf to understand what the solution was though...
On Wednesday, July 22, 2020 at 6:29:24 PM UTC-4 [email protected] wrote: > 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/9f0e363e-3fc3-45d5-8112-8003673d2a08n%40googlegroups.com.
