You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@thrift.apache.org by David Reiss <dr...@facebook.com> on 2010/05/14 01:10:55 UTC
Re: Javascript prototype generation anyone?
I think the Java library has a "TSimpleJsonProtocol" that does something like this.
It shouldn't be too hard to do the same for C++. I think the biggest complication
is that JSON does allow trailing commas.
--David
Rush Manbert wrote:
> Hi,
>
> I have copied and hacked TJSONProtocol.cpp to make a version that just generates standard JSON when an object is written.
>
> By this I mean that if I had this struct definition:
>
> struct ExtendedStatus {
> 1: i32 status,
> 2: i32 state,
> 3: i32 percentComplete,
> 4: i32 elapsedMsec,
> 5: string statusDescription,
> 6: string exceptionMsg,
> }
>
> my protocol would serialize it as this:
>
> {"status":2,"state":5,"percentComplete:40,"elapsedMsec":1200,"statusDescription":"Talking to the server","exceptionMsg:""}
>
> (I wrote this by hand, so it might not be totally correct. The point is that it doesn't encode types, etc. It just uses the member names.)
>
> If my Javascript side had a standard object prototype definition for ExtendedStatus, then I can serialize C++ thrift classes from C++, transmit them to my Javascript code, and evaluate the JSON to create an ExtendedStatus object and use it.
>
> What I'm missing is the code generation for the prototypes.
>
> By any chance, has anyone done this already, and would they be willing to share? Otherwise I guess we'll see about hacking the C++ generator to make one, but that means adding a new generator type, or maybe just making the cpp code generator also generate the prototype JS file automatically.
>
> Better still, has anyone secretly written the Javascript code generator that would work with the TJSONProtocol implementation?
>
> Or does anyone have another idea of how I can achieve this? I have written a few of these by hand, but it's easy to make mistakes and you need to know when the thrift IDL file changes.
>
> - Rush
Re: Javascript prototype generation anyone?
Posted by Rush Manbert <ru...@manbert.com>.
That's good news. Thanks!
- Rush
On May 13, 2010, at 4:19 PM, Jake Luciani wrote:
> JavaScript bindings are checked in and will be released in 0.3.
>
>
>
> On May 13, 2010, at 7:10 PM, David Reiss <dr...@facebook.com> wrote:
>
>> I think the Java library has a "TSimpleJsonProtocol" that does something like this.
>> It shouldn't be too hard to do the same for C++. I think the biggest complication
>> is that JSON does allow trailing commas.
>>
>> --David
>>
>> Rush Manbert wrote:
>>> Hi,
>>>
>>> I have copied and hacked TJSONProtocol.cpp to make a version that just generates standard JSON when an object is written.
>>>
>>> By this I mean that if I had this struct definition:
>>>
>>> struct ExtendedStatus {
>>> 1: i32 status,
>>> 2: i32 state,
>>> 3: i32 percentComplete,
>>> 4: i32 elapsedMsec,
>>> 5: string statusDescription,
>>> 6: string exceptionMsg,
>>> }
>>>
>>> my protocol would serialize it as this:
>>>
>>> {"status":2,"state":5,"percentComplete:40,"elapsedMsec":1200,"statusDescription":"Talking to the server","exceptionMsg:""}
>>>
>>> (I wrote this by hand, so it might not be totally correct. The point is that it doesn't encode types, etc. It just uses the member names.)
>>>
>>> If my Javascript side had a standard object prototype definition for ExtendedStatus, then I can serialize C++ thrift classes from C++, transmit them to my Javascript code, and evaluate the JSON to create an ExtendedStatus object and use it.
>>>
>>> What I'm missing is the code generation for the prototypes.
>>>
>>> By any chance, has anyone done this already, and would they be willing to share? Otherwise I guess we'll see about hacking the C++ generator to make one, but that means adding a new generator type, or maybe just making the cpp code generator also generate the prototype JS file automatically.
>>>
>>> Better still, has anyone secretly written the Javascript code generator that would work with the TJSONProtocol implementation?
>>>
>>> Or does anyone have another idea of how I can achieve this? I have written a few of these by hand, but it's easy to make mistakes and you need to know when the thrift IDL file changes.
>>>
>>> - Rush
Re: Javascript prototype generation anyone?
Posted by Jake Luciani <ja...@gmail.com>.
JavaScript bindings are checked in and will be released in 0.3.
On May 13, 2010, at 7:10 PM, David Reiss <dr...@facebook.com> wrote:
> I think the Java library has a "TSimpleJsonProtocol" that does
> something like this.
> It shouldn't be too hard to do the same for C++. I think the
> biggest complication
> is that JSON does allow trailing commas.
>
> --David
>
> Rush Manbert wrote:
>> Hi,
>>
>> I have copied and hacked TJSONProtocol.cpp to make a version that
>> just generates standard JSON when an object is written.
>>
>> By this I mean that if I had this struct definition:
>>
>> struct ExtendedStatus {
>> 1: i32 status,
>> 2: i32 state,
>> 3: i32 percentComplete,
>> 4: i32 elapsedMsec,
>> 5: string statusDescription,
>> 6: string exceptionMsg,
>> }
>>
>> my protocol would serialize it as this:
>>
>> {"status":2,"state":5,"percentComplete:40,"elapsedMsec":
>> 1200,"statusDescription":"Talking to the server","exceptionMsg:""}
>>
>> (I wrote this by hand, so it might not be totally correct. The
>> point is that it doesn't encode types, etc. It just uses the member
>> names.)
>>
>> If my Javascript side had a standard object prototype definition
>> for ExtendedStatus, then I can serialize C++ thrift classes from C+
>> +, transmit them to my Javascript code, and evaluate the JSON to
>> create an ExtendedStatus object and use it.
>>
>> What I'm missing is the code generation for the prototypes.
>>
>> By any chance, has anyone done this already, and would they be
>> willing to share? Otherwise I guess we'll see about hacking the C++
>> generator to make one, but that means adding a new generator type,
>> or maybe just making the cpp code generator also generate the
>> prototype JS file automatically.
>>
>> Better still, has anyone secretly written the Javascript code
>> generator that would work with the TJSONProtocol implementation?
>>
>> Or does anyone have another idea of how I can achieve this? I have
>> written a few of these by hand, but it's easy to make mistakes and
>> you need to know when the thrift IDL file changes.
>>
>> - Rush