I found the solution,

the API actually isn't intuitive - I had to Use FileDescriptorSet over 
FileDescriptor (this moment isn't clean for me, at least why it does work 
vice versa - but just doesn't builds fields, suppose it just bad API design.
Solution is

...
val data = Files.readAllBytes(Paths.get(uri))

val fileSet = FileDescriptorSet.parseFrom(data)
...


and fileSet has not empty getMessageTypeList field.

Stas
On Thursday, October 4, 2018 at 12:13:59 PM UTC+2, Stas Shevchenko wrote:
>
> 1. I'm compiling valid .proto file into .desc file
> 2. The original proto file contains few message declarations with dozen 
> fields per message.
>
> I have to read from JVM code the list of allowed fields per message, I do 
> it via Scala:
>
> val uri = this.getClass.getClassLoader.getResource("protoDescFile.desc").toURI
> val data = Files.readAllBytes(Paths.get(uri))
> val descriptorProto: DescriptorProtos.FileDescriptorProto = 
> DescriptorProtos.FileDescriptorProto.parseFrom(data)
> val descriptor: Descriptors.FileDescriptor = 
> Descriptors.FileDescriptor.buildFrom(descriptorProto, Array.empty)
>
>
> the code builds well descriptor - but when I call the 
>
> descriptor.getMessageTypes.size()
>
>
> it always returns 0 - despite the expected value is 3
>
> Apparently all the fields are empty including
>
> descriptor.getPackage
>
>
> that is set to
>
> package com.prototest.pacakge;
>
>
> but the only one field in descriptor aren't empty :
>
> descriptor.getSyntax
>
> descriptor.getName
>
>
> getName returns me the full String representation of data(byte[]) were 
> passed to FileDescriptorProto.parseFrom during it's initialization. 
>
>
> What is the way to get the list of available messages and the get the list 
> of fields per message? 
>
> Stas
>

-- 
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 protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to