Add functionality to load protobuf schema from Reader
GoogleCodeExporter opened this issue · comments
Currently class 'ProtoUtil' has methods for loading schema from a File, URL and
generic InputStream. It would be nice to allow loading from java.io.Reader
and/or from String that contains schema.
One use case is that of testing (to include Schema inline as String), but for
my use case I want to allow passing in a String or Reader as external protobuf
schena source.
Original issue reported on code.google.com by tsaloranta@gmail.com
on 16 Jan 2013 at 4:32
FWIW I think change itself is simple, given that ANTLR exposes various
alternative input sources. I can submit a patch if that would simplify addition.
Original comment by tsaloranta@gmail.com
on 16 Jan 2013 at 4:33
Note: a related question is that of resolving imports. I don't know what
currently happens when source other than File is specified: I guess two obvious
possibilities are an error, or use of current working directory.
I think it would be nice to allow specifying alternate base directory.
Original comment by tsaloranta@gmail.com
on 16 Jan 2013 at 4:35
done @rev 1590.
If you want strict protobuf compatibility, set these properties:
-Dproto_path=your/basedir -Dproto_search_strategy=1
1 = lookups to be done on filesystem only.
2 = filesystem and classpath
In most cases, I use 2.
Original comment by david.yu...@gmail.com
on 16 Jan 2013 at 8:14
- Changed title: Add functionality to load protobuf schema from Reader
- Changed state: Fixed
Thank you for the quick fix!
For me (1) might work best usually, although I could expose (2) as well.
I think I can just verify to see how relative paths are resolved, in absence of
File as baseline. I would guess it is indeed the current directory, but should
be easy to check.
As background, this is related to my experimental work on writing protobuf
backend implementation for Jackson (which I mentioned in email earlier). Not
much work done yet, but seems very much doable.
One thing I need to figure out is how users would indicate root level message
type to use; my reading of protobuf documentation suggested that it's defined
by caller using generated classes usually. But I'll need to see if I missed
something obvious (like type id in data format).
Original comment by tsaloranta@gmail.com
on 16 Jan 2013 at 6:26