Done: https://github.com/neumark/thrift/compare/THRIFT-2360?expand=1
On Thu, Oct 9, 2014 at 2:03 PM, Roger Meier <ro...@bufferoverflow.ch> wrote: > > Quoting Peter Neumark <peter.neum...@prezi.com>: > > On Thu, Oct 9, 2014 at 12:49 AM, Roger Meier <ro...@bufferoverflow.ch> >> wrote: >> >> Hi Peter >>> >>> Quoting Peter Neumark <neumark.pe...@gmail.com>: >>> >>> Thanks, Roger! >>> >>>> >>>> I'm also posting this to the dev list, because I think that may be more >>>> appropriate than user@. >>>> >>>> Yes, that's why I'm cross posting now. >>> >>> The json generator is awesome (any estimate on when it will be merged?), >>> >>>> >>>> there are two versions and I like to have one... >>> I'm ready to commit it as soon as I get proper response on my questions >>> on that issue. Json Schema is what i would like to have for the future. >>> >>> >> What can I do to get this into the master branch? >> > > test the patch from Peterson: > https://issues.apache.org/jira/browse/THRIFT-2360 > > fix warnings, add it to CMakeLists.txt and Makefile.am > submit reworked patch. > > thanks > -roger > >> >> >> but that's not really what I was working on. >>> >>>> The goal here is to ready an aribrary JSON message as thrift data. >>>> >>>> Yes, I know. However using a schema would simplify this and that's why >>> I >>> started to talk about the json generator. >>> -roger >>> >>> >>> Pete >>>> >>>> On Wed, Oct 8, 2014 at 11:47 AM, Roger Meier <ro...@bufferoverflow.ch> >>>> wrote: >>>> >>>> Hi Peter >>>> >>>>> >>>>> Yes, JSON is worth to add and I see an option by using json schema as >>>>> mentioned here: >>>>> https://issues.apache.org/jira/browse/THRIFT-2360 >>>>> >>>>> best! >>>>> -roger >>>>> >>>>> >>>>> Quoting Peter Neumark <neumark.pe...@gmail.com>: >>>>> >>>>> Hi all, >>>>> >>>>> >>>>>> At Prezi, we currently use Thrift for a lot of the internal >>>>>> communication >>>>>> between services. A lot of engineers would like to keep using HTTP + >>>>>> JSON >>>>>> as means of communicating between services, but with some sort of >>>>>> schema. >>>>>> >>>>>> After evaluating several alternatives, the best idea we had so far was >>>>>> to >>>>>> use the thrift IDL as the schema, and beef up the existing >>>>>> TSimpleJSONProtocol code to read arbitrary JSON messages. >>>>>> >>>>>> What I'm most interested in is whether or not someone else is already >>>>>> doing >>>>>> this? >>>>>> >>>>>> I have a very early stage python implementation of such a protocol >>>>>> here: >>>>>> https://github.com/neumark/thriftmodel/blob/master/thriftmodel/ >>>>>> TFlexibleJSONProtocol.py >>>>>> >>>>>> We'll probably create an implementation for Java as well. >>>>>> The most difficult issue with reading JSON is that a lot of existing >>>>>> JSON >>>>>> protocols allow for several different types in a field. My solution >>>>>> was >>>>>> to >>>>>> have an "unboxed union". To illustrate this with an example, if we >>>>>> accept >>>>>> the following messages: >>>>>> >>>>>> {"id": 1, "expires": 32324234234} >>>>>> {"id": 1, "expires": "2014.10.07 10:34"} >>>>>> {"id": 1, "expires": false} >>>>>> >>>>>> Then our Thrift definition would be >>>>>> >>>>>> // Note: this is an unboxed union >>>>>> union { // or struct in my implementation because python has no union >>>>>> yet >>>>>> 1: i64 unix_timestamp, >>>>>> 2: string date_string, >>>>>> 3: bool expiration_switch >>>>>> } >>>>>> >>>>>> struct msg { >>>>>> 1: i64 id, >>>>>> 2: expiry expires >>>>>> } >>>>>> >>>>>> The "expires" field must be read "unboxed" so to speak. >>>>>> What's the best option for encoding this in the thrift IDL? >>>>>> Has anyone considered adding annotations to the IDL for similar >>>>>> purposes? >>>>>> >>>>>> Thanks, >>>>>> Peter >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> >>> >>> >> >> -- >> >> *Peter Neumark* >> DevOps guy @Prezi <http://prezi.com> >> > > > -- *Peter Neumark* DevOps guy @Prezi <http://prezi.com>