Would you want to give this to someone from GSoC?  This could actually be a 
pretty sweet project.

-----Original Message-----
From: Sergey Beryozkin [mailto:sbery...@progress.com] 
Sent: 07 April 2009 12:14
To: dev@cxf.apache.org
Subject: Re: JSON in CXF

Hi Gary

> If you give me until next week I should be able to package something together 
> and send it to you.
it would be super, take your time please...

> Rewriting Sun libraries?  Working with JSON?  Hells yeah.

that's the right attitude :-).

cheers, Sergey

----- Original Message -----
From: "Tong, Gary (IDEAS)" <gary.t...@morganstanley.com>
To: <dev@cxf.apache.org>
Sent: Tuesday, April 07, 2009 8:53 AM
Subject: RE: JSON in CXF


Hi Sergey,

If you give me until next week I should be able to package something together 
and send it to you.

Alternatively, this would be a great project for GSoC, if it's not too late to 
submit projects.  Rewriting Sun libraries?  Working with JSON?  Hells yeah.

Cheers,
Gary

-----Original Message-----
From: Sergey Beryozkin [mailto:sbery...@progress.com]
Sent: 06 April 2009 12:01
To: dev@cxf.apache.org
Subject: Re: JSON in CXF

Hi Gary
>>
>> I ended up writing my own converter for JSON that uses its own 
>> annotations seperate from JAXB.  It's a pretty quick implementation, 
>> and only does what I need it to do.  It depends on the JSON objects 
>> from json.org, which are also included in Jettison under a different 
>> package.  The annotations can be used alongside JAXB like so:
>>
>> @XmlRootElement(name = "response")
>> @JsonObject
>> public class MyResponse {
>>  @XmlAttribute
>>  @JsonField
>>  private boolean success;
>>  @XmlElement(name = "msg")
>>  @JsonField(name = "msg")
>>  private String message;
>>  @XmlElementWrapper(name = "errors")
>>  @XmlElement(name = "error")
>>  @JsonField(name = "errors", required = true)  private List<String> 
>> errors;  ...
>> }

Would you be interested in updating the existing CXF JSONProvider (the one 
based on Jettison) for it to support @JsonObject/etc annotations ? I was about 
to do it myself but given my JSON experience (not great so to say) I thought I 
would ping you first :-) we can introduce a new package, 
org.apache.cxf.jaxrs.providers.json, or org.apache.cxf.jaxrs.ext.json, and add 
these annotations there, and then rely on the fact Jettison ships 
JSonObject/etc...

cheers, Sergey

>>
>> This will produce this JSON:
>>
>> {success: true, msg: "Test Message", errors: ["a", "b"]}
>>
>> And this XML:
>>
>> <response success="true"><msg>Test
>> Message</msg><errors><error>a</error><error>b</error></errors></respo
>> nse>
>>
>> Since this was written only for personal use, it's a fair bit aways 
>> from being a full-featured library.  Stuff that needs to be done 
>> before public
>> consumption:
>>
>> 1) Two-way serialization.  Currently it's only bean -> JSON but not 
>> the other way around.
>> 2) Reflection caching.  Currently all reflection happens in the 
>> middle of serialization.  Breaking it up into reflection + 
>> serialization phases as JAXB does it would speed things up considerably.
>> 3) Ability to switch between field/method accessors (currently it 
>> only reads
>> fields)
>>
>> As well as some features that could be really useful such as:
>>
>> 1) Pluggable annotation adapters that can be used to read directly 
>> from JAXB annotations
>> 2) Type adapters that will allow custom marshalling/unmarshalling, 
>> although this could also be done via getters/setters
>>
>> What's the interest level in putting something like this into CXF?
>>
>> Cheers,
>> Gary
>>


--------------------------------------------------------------------------
NOTICE: If received in error, please destroy and notify sender. Sender does not 
intend to waive confidentiality or privilege. Use of this email is prohibited 
when received in error.


--------------------------------------------------------------------------
NOTICE: If received in error, please destroy and notify sender. Sender does not 
intend to waive confidentiality or privilege. Use of this email is prohibited 
when received in error.

Reply via email to