This is a result of SourceTreeDescirptorDatabase not implementing
FindFileContainingSymbol() - it doesn't maintain an index of the types
available in the database within the database, just the list of files that
are available. This is a sufficient implementation for the proto compiler,
where one specifies the files to build and thus FindFileByName() is always
I'm not aware of any DescriptorDatabase implementations that have all the
types within a source tree indexed - various Google-internal
implementations don't support this either, as there are so many .proto
files that it's typically not useful to load all of them, and we have
clients specify the leaf file explicitly.
On Wed, May 30, 2012 at 1:16 PM, Dan <dashegh...@gmail.com> wrote:
> In the code below, I've found that the returned Descriptor* is NULL after
> I call FindMessageTypeByName(), *unless* I first call FindFileByName() on
> the .proto which contains the Message I am looking for.
> Is this a bug? Is there another way to do this? I would really like to be
> able to setup a SourceTreeDescriptorDatabase to a directory that contains
> all of the .proto files I plan to use and not have to search for each file
> Any advice is much appreciated.
> string sProtoRoot("/home/dan/tests/new-protobuf/protos");
> DiskSourceTree dst;
> dst.MapPath("", sProtoRoot);
> SourceTreeDescriptorDatabase stdb(&dst);
> DescriptorPool dp(&stdb);
> const FileDescriptor* pfd = dp.FindFileByName("TestMessage.proto");
> const Descriptor* pd = dp.FindMessageTypeByName("Test.TestMessage");
> You received this message because you are subscribed to the Google Groups
> "Protocol Buffers" group.
> To view this discussion on the web visit
> To post to this group, send email to email@example.com.
> To unsubscribe from this group, send email to
> For more options, visit this group at
You received this message because you are subscribed to the Google Groups
"Protocol Buffers" group.
To post to this group, send email to firstname.lastname@example.org.
To unsubscribe from this group, send email to
For more options, visit this group at