kshchepanovskyi / protostuff-googlecode-exported

Automatically exported from code.google.com/p/protostuff

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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