Hey,

For the past few weeks we've been working on integrating Shindig with Netlog. Our sandbox is finally live on http://en.netlog.com/go/developer/opensocial (If you don't have a Netlog account yet, you'll have to register first)

Cassie and others asked us to leave a few notes on our implementation:

The basic steps are surprisingly straightforward:

- Provide implementations for the interfaces in org.apache.shindig.social.opensocial.* For Netlog, we're just using our internal API to request the data, so the opensocial services basically make calls using our java client- side api and reformat the output for Shindig. We haven't implemented Netlog-specific calls yet, it's just the basic opensocial stuff for now.

- Inject our implementation using guice
We have one guice module which injects our GadgetTokenDecoder, PeopleService, DataService and ActivitiesService implementations. This required us to replace both the CommonGuiceModule and SocialApiGuiceModule (code injections cannot be overridden), so we also had to inject BasicRemoteContentFetcher, BasicContentCache and the OpenSocialDataHandler.

As far as the build process goes, maven is not my cup of tea, so it's kinda hacked together for now: - Using svn:externals properties, we import a specific revision (right now r653446) of the shindig repository in our working copies. - Before building, the Shindig working copy is patched with a diff file stored in our repository to represent our local changes. Amongst other changes, this patches the web.xml file to use our guice module in stead of CommonGuiceModule and SocialApiGuiceModule. - After patching, Shindig (java/server) is built, our own *Service implementations are built and the resulting jar files are put in the war folder before running.

The sane thing to do would probably be to create our own pom.xml that "installs" our jars in the local maven repository and add it as a dependency to the server pom file, but I haven't had the time or courage to look into this.

We're using Jetty to test, and Tomcat in production.


Pieter De Schepper did the gadget rendering part, and these are his notes about gadgets.js:

- in the gadget render function: added appid and set the current view
- made the serverBase configurable
- some html changes to use our layout
- change in userprefsmenu toggle (toggle: show userprefsmenu, hide gadget)


A few questions that came up while testing:

At first, Shindig didn't seem to pass the compliance test gadget (default url in our sandbox), but after adding one line to features/ opensocial-0.7/jsonperson.js to indicate the type of dateOfBirth, it works:
JsonPerson.constructObject(opt_params, "dateOfBirth", Date);

Has this just been overlooked, or is this change somehow incorrect?

A lot of gadgets from opensocialdirectory.org and the photostatus sample ( http://opensocial-resources.googlecode.com/svn/samples/photostatus/trunk/photostatus.xml ) don't work as they require opensocial-0.5. Are the specs backwards compatible, and if so, shouldn't Shindig handle opensocial-0.5 compatible gadgets with the opensocial-0.7 implementation?

There seem to be problems with the initial height of gadgets. It seems that if an initial height is set in the gadget's xml, it's not passed through correctly by Shindig. Also, a lot of gadgets don't seem to call _IG_AdjustIFrameHeight() after initialization. Is there anything we can do to make sure gadgets are displayed correctly?

Lieven Dekeyser
Desktop Application Developer

Netlog NV
Emile Braunplein 18
B-9000 Ghent
Belgium



Reply via email to