Re: proposal for an implementation of OpenSocial RESTful API

1 view
Skip to first unread message

Kevin Brown

unread,
Apr 9, 2008, 5:05:43 PM4/9/08
to shind...@incubator.apache.org, opensocial-an...@googlegroups.com
Hey Jun,

The first thing you're going to need to do is set up a new sub project for the RESTful stuff. The correct location would be trunk/java/rest probably (pick whatever name you like).

For the time being, feel free to just directly import the gadgets artifacts into the REST project until we get the shared parts (OAuth, crypto, app data interfaces, etc.) moved out into a separate sub-project.

We'll need to ensure that the top level pom can generate all appropriate artifacts as well, so that someone can easily use just the restful api, just the gadget renderer, or both.

On Wed, Apr 9, 2008 at 11:56 AM, Jun Yang (杨骏) <jy...@google.com> wrote:
Hi all.

We would like to propose an implementation for "A modest proposal for an OpenSocial RESTful API".

We propose the following:
  • Use Apache Abdera as the basis of the reference server implementation
  • Add a JsonCParser to support input in JSON-c format (JSON-c for compact JSON format as specified in the API spec, not a new MIME type)
  • Add a JsonCWriter to support output in JSON-c format
  • Add an OpenSocial API (Person, Activity and AppData, Java version under org.apache.shindig.social.opensocial) adapter to integrate with existing API implementation and keep the same interface on the backend and the client
for the following reasons:
  • The RESTful API proposal supports a clean and natural JSON format (JSON-c) as well as AtomPub.  Apache Abdera is an open source reference implementation of AtomPub that offers most of the functionality we need.  Reusing it seems to be natural choice
  • Abdera already supports input in Atom.  We need to add support for input in JSON-c
  • Abdera already supports output in Atom (as well as a JSON format).  We need to add support for output in JSON-c
  • Abdera's support for adapters that translate from a foreign data format and protocol into its Feed Object Model (FOM) comes handy to support existing data sources such as relational databases and existing implementation of OpenSocial APIs.  Existing OpenSocial APIs are very close to Atom's model and can be adapted easily
We have includes two diagrams as illustration of the architecture of the proposed implementation.  Diagram 1 shows the generic architecture.  Those components in italics are to be written.  Diagram 2 shows the use of two adapters, iBATIS (existing in Abdera) to integrate with relational databases, and OpenSocial API adapter (to be written), to integrate with existing OpenSocial backend.

Please review and comment.  Thanks!

Vasu Nori and Jun Yang



--
~Kevin

Daniel Danger Bentley

unread,
Apr 9, 2008, 5:09:13 PM4/9/08
to opensocial-an...@googlegroups.com, shind...@incubator.apache.org
https://issues.apache.org/jira/browse/SHINDIG-174 should be step-1 (or maybe step-.5 on this).

You alright with me checking this in?

2008/4/9 Kevin Brown <et...@google.com>:



--
'Ladislav Sticha, the tall spokesman for Czech Television, told me that the show's audience was "miniature" -- presumably he meant small in number.' - New York Times, January 24, 2008

Kevin Brown

unread,
Apr 9, 2008, 5:20:48 PM4/9/08
to opensocial-an...@googlegroups.com, shind...@incubator.apache.org
Yeah, that looks right -- does maven tolerate dashes, though?

2008/4/9 Daniel Danger Bentley <dtbe...@gmail.com>:



--
~Kevin

Cassie

unread,
Apr 10, 2008, 7:40:20 AM4/10/08
to opensocial-an...@googlegroups.com, shind...@incubator.apache.org
I think rest should == social because they will essentially be the
same server. I don't have time to code it right now though, so the
patch looks fine and ill draw up another patch for merging the two
next week.

- Cassie


2008/4/9 Kevin Brown <et...@google.com>:

Cassie

unread,
Apr 10, 2008, 7:41:11 AM4/10/08
to shind...@incubator.apache.org
Oh and I'm bccing the spec mailing list - implementation discussions
don't take place on the spec list.

- Cassie


2008/4/10 Cassie <do...@google.com>:

David Primmer

unread,
May 5, 2008, 9:00:44 PM5/5/08
to shind...@incubator.apache.org, opensocial-an...@googlegroups.com
I'd like to propose that we drop the -c from json-c in the Restful API
spec and just call our output format json.

The spec is nearing completion for 0.8 and we're about to submit a
patch that begins to enable json processing for the api server.
Currently the patch configures the server according to the spec, with
query parameter of "format=json-c" that is the default for the server.

The primary reason for the "-c" suffix, as I understand it, is the
underlying java framework Abdera has some prior art, in an extension
module called 'json' that responds to requests with "format=json" and
produces an atom-like json representation. I feel like we should
explicitly replace this format with the speicialized json format in
the rest api spec. If users of the java server wanted to turn on
abdera's json extension, there would be a conflict. I don't know how
this would be resolved and I'm hoping James Snell, the author, chimes
in here.

To this point, the shindig implementation has not included this
extension and it probably never will. I don't feel like a small
implementation detail in one of the libs of one of the languages
should should impact the spec this way. If anything, the Abdera json
extension, if used, should respond and be suffixed something like
json-atom or json-snell. ;-)

davep

davep

John Panzer

unread,
May 6, 2008, 8:46:01 PM5/6/08
to opensocial-an...@googlegroups.com, shind...@incubator.apache.org
+1 (actually before I saw this I had made this change in the very latest spec, based on prior discussion and no -1's...)

2008/5/5 David Primmer <david....@gmail.com>:

Paul Walker

unread,
May 9, 2008, 4:03:32 AM5/9/08
to opensocial-an...@googlegroups.com, shind...@incubator.apache.org
Absolutely +1...thx JP for listening.
Reply all
Reply to author
Forward
0 new messages