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.

Reply via email to