SHINDIG IN 2 HOURS [email_address] Social team
 
Apache Shindig : - Introduction - Architecture Shindig integration (eXo) Objective: 3W In 2 hours ...
Shindig Introduction
 
Apache Shindig (Introduction)
Apache Shindig (Introduction)
Apache Shindig (Introduction)
Apache Shindig (Introduction)
Apache Shindig (Introduction)
Apache Shindig (Introduction)
Apache Shindig (Introduction)
Apache Shindig What is shindig? -  OpenSocial container ->start hosting  OpenSocial apps quickly by: + Providing the code to render gadgets + Open Social API, RESTful, RPC  protocol services -  Java  and  PHP Goal Lauch a new container in  under an hour's worth of work .
Version  Release  OpenSocial 3.0.0 2.0.3    01/Dec/10  2.0.2     30/Oct/10  2.0.0    07/Sep/10  2.0.0-RC2  10/Aug/10  1.1-BETA5  23/Nov/09  0.9  1.0.1  10/May/10  0.8   1.0     19/Jun/09 Apache Shindig (History) Nov 2007
Apache Shindig (In Production)
Apache Shindig. Why Use? •  Strong Open Source community •  High quality production-ready code •  Used by: hi5, orkut, iGoogle, Netlog, Hyves … •  Synchronized with specification •  Language neutral (Java, PHP, ...)
Apache Shindig (Getting Started-Java) http://shindig.apache.org/getting-started.html - Check out code svn co http://svn.apache.org/repos/asf/incubator/shindig/trunk - Build & Run (Jetty Server) mvn clean install mvn -Prun - Run (tomcat server) http://localhost:8080/container/sample1.html http://localhost:8080/social/rest/people/canonical/@self?format=xml
Shindig Architecture
•  Gadget Server Parses gadget XML, renders as HTML/JS/CSS •  OpenSocial Data Server -  Plugs into social graph data -  RESTful, RPC protocol services •  Downloaded JavaScript libraries Core gadgets, OpenSocial client JavaScript environment Shindig Architecture (Components)
Apache Shindig (APIs – Entry Points) - OS API renderGadget() req.send() req..requestCreateActivity() - REST API ..social/rest/people/... ..social/rest/activities/...
•  Shindig Client and Server Components •  Gadget Server •  Social Data Server Shindig Architecture
•  Shindig Client and Server Components •  Gadget Server •  Social Data Server Shindig Architecture
Shindig Architecture (Components)
Shindig Architecture (Server Comps) - _Servlets are entry points to take calls from client side.
Shindig Architecture (How It Works?) Req TYPE FETCH_PEOPLE  : Get Person data FETCH_PERSON_APP_DATA  : Get the data attributes for a person UPDATE_PERSON_APP_DATA  : update attributes of a person FETCH_ACTIVITIES  : Get List of activities for a Particular Person CREATE_ACTIVITY  : create Activity associated with a Person
•  Shindig Client and Server Components •  Gadget Server •  Social Data Server Shindig Architecture
Gadget Server -  Gadget Container JavaScript : JavaScript for general gadget functionality. -  Gadget Rendering Server : to  render  the gadget XML into HTML. Gadget Gadget Server Social Data Server HTML
Gadget Rendering in Flow
•  Shindig Client and Server Components •  Gadget Server •  Social Data Server Shindig Architecture
Social Data Server People Relationships Activities
Social Data Server -  OpenSocial Container JavaScript : JavaScript environment that  provides  OpenSocial specific functionality  (Profiles, Relationships, Activities). -  OpenSocial Data Server : with  extension points  so others can  connect it to  their own backends . Gadget Gadget Server Social Data Server JSON
Social Data Server http://rollerweblogger.org/roller/entry/shindig_java_internals_diagram_updated
Social Data Server
Shindig Integration
Utilize existing Open Source container code. Wants  Gadgets Wants  Social   features : Profiles, Relationships, Activities Integration. Why?
Integration. How? - Shindig  Implementation : Java, PHP … - Gadget Server, Social Data Server
Integration Render gadget OpenSocial Container (Social Data Server)
•  Customize  sample comtainer (Gadget Container) •  Implement Interfaces – People, Friends, Activities (Social  Server) •  Write Guice Modules (binding) •  Add mapping information to web.xml (servlets, filters, guices-  modules … ) •  Add more SecurityTokenDecoder, etc. (Enabling OAuth  support) Integration (SUMMARIZE)
•  Customize  sample comtainer (Gadget Container) •  Implement Interfaces – People, Friends, Activities (Social  Server) •  Write Guice Modules (binding) •  Add mapping information to web.xml (servlets, filters, guices-  modules … ) •  Add more SecurityTokenDecoder, etc. (Enabling OAuth  support) Integration
•  Customize  sample comtainer (Gadget Container) •  Implement Interfaces – People, Friends, Activities (Social  Server) •  Write Guice Modules (binding) •  Add mapping information to web.xml (servlets, filters, guices-  modules … ) •  Add more SecurityTokenDecoder, etc. (Enabling OAuth  support) Integration
-  People Service public  class  ExoPeopleService   extends  ExoService  implements  PersonService, AppDataService { public  Future<RestfulCollection<Person>> getPeople(...) {} public  Future<Person> getPerson(...) {} } -  Activitiy Service public  class ExoActivityService  extends  ExoService  implements  ActivityService { public  Future<RestfulCollection<Activity>>  getActivities (...) {} public  Future<Void>  createActivity (...) {} } Copyright 2010 eXo Platform SAS Integration (Implement Interfaces)
•  Customize  sample comtainer (Gadget Container) •  Implement Interfaces – People, Friends, Activities (Social  Server) •  Write Guice Modules (binding) •  Add mapping information to web.xml (servlets, filters, guices-  modules … ) •  Add more SecurityTokenDecoder, etc. (Enabling OAuth  support) Integration
public  class ExoSocialApiGuiceModule  extends  AbstractModule { @Override protected void  configure() { bind(PersonService. class ).to(ExoPeopleService. class ); bind(AppDataService. class ).to(ExoPeopleService. class ); bind(ActivityService. class ).to(ExoActivityService. class ); bind(Person. class ).to(ExoPersonImpl. class ); } } Copyright 2010 eXo Platform SAS Integreation (Guice Module)
•  Customize  sample comtainer (Gadget Container) •  Implement Interfaces – People, Friends, Activities (Social  Server) •  Write Guice Modules (binding) •  Add mapping information to web.xml  (servlets, filters, guices-  modules … ) •  Add more SecurityTokenDecoder, etc. (Enabling OAuth  support) Integration
webapp/opensocial/src/main/webapp/WEB-INF/web.xml <context-param> <param-name>guice-modules</param-name> <param-value> org.exoplatform.social.opensocial.ExoSocialApiGuiceModule </param-value> </context-param> Copyright 2010 eXo Platform SAS Integration (Config in Web.xml)
Re-Cap
- OpenSource implementation of OpenSocial & Gadgets standard (Java, PHP) - Client and Server side (Container, REST, OpenSocial APIs …) - Java version: Servlet stack - Multiple entry points for various kinds of calls (servlets) - Others: Image Resizer, Content Rewriter/Compressor ... Copyright 2010 eXo Platform SAS Re-Cap
Copyright 2010 eXo Platform SAS Why not?
Home Page:  http://shindig.apache.org/ Downloads:  http://shindig.apache.org/download/index.html Mailing Lists:  http://shindig.apache.org/mail-lists.html Source Code:  http://svn.apache.org/repos/asf/shindig/ Issue Tracking:  https://issues.apache.org/jira/browse/SHINDIG Wiki:  http://cwiki.apache.org/confluence/display/SHINDIG/ Copyright 2010 eXo Platform SAS Resources
Thank you!

Shindig in 2 hours

  • 1.
    SHINDIG IN 2HOURS [email_address] Social team
  • 2.
  • 3.
    Apache Shindig :- Introduction - Architecture Shindig integration (eXo) Objective: 3W In 2 hours ...
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
    Apache Shindig Whatis shindig? - OpenSocial container ->start hosting OpenSocial apps quickly by: + Providing the code to render gadgets + Open Social API, RESTful, RPC protocol services - Java and PHP Goal Lauch a new container in under an hour's worth of work .
  • 14.
    Version Release OpenSocial 3.0.0 2.0.3 01/Dec/10 2.0.2 30/Oct/10 2.0.0 07/Sep/10 2.0.0-RC2 10/Aug/10 1.1-BETA5 23/Nov/09 0.9 1.0.1 10/May/10 0.8 1.0 19/Jun/09 Apache Shindig (History) Nov 2007
  • 15.
    Apache Shindig (InProduction)
  • 16.
    Apache Shindig. WhyUse? • Strong Open Source community • High quality production-ready code • Used by: hi5, orkut, iGoogle, Netlog, Hyves … • Synchronized with specification • Language neutral (Java, PHP, ...)
  • 17.
    Apache Shindig (GettingStarted-Java) http://shindig.apache.org/getting-started.html - Check out code svn co http://svn.apache.org/repos/asf/incubator/shindig/trunk - Build & Run (Jetty Server) mvn clean install mvn -Prun - Run (tomcat server) http://localhost:8080/container/sample1.html http://localhost:8080/social/rest/people/canonical/@self?format=xml
  • 18.
  • 19.
    • GadgetServer Parses gadget XML, renders as HTML/JS/CSS • OpenSocial Data Server - Plugs into social graph data - RESTful, RPC protocol services • Downloaded JavaScript libraries Core gadgets, OpenSocial client JavaScript environment Shindig Architecture (Components)
  • 20.
    Apache Shindig (APIs– Entry Points) - OS API renderGadget() req.send() req..requestCreateActivity() - REST API ..social/rest/people/... ..social/rest/activities/...
  • 21.
    • ShindigClient and Server Components • Gadget Server • Social Data Server Shindig Architecture
  • 22.
    • ShindigClient and Server Components • Gadget Server • Social Data Server Shindig Architecture
  • 23.
  • 24.
    Shindig Architecture (ServerComps) - _Servlets are entry points to take calls from client side.
  • 25.
    Shindig Architecture (HowIt Works?) Req TYPE FETCH_PEOPLE : Get Person data FETCH_PERSON_APP_DATA : Get the data attributes for a person UPDATE_PERSON_APP_DATA : update attributes of a person FETCH_ACTIVITIES : Get List of activities for a Particular Person CREATE_ACTIVITY : create Activity associated with a Person
  • 26.
    • ShindigClient and Server Components • Gadget Server • Social Data Server Shindig Architecture
  • 27.
    Gadget Server - Gadget Container JavaScript : JavaScript for general gadget functionality. - Gadget Rendering Server : to render the gadget XML into HTML. Gadget Gadget Server Social Data Server HTML
  • 28.
  • 29.
    • ShindigClient and Server Components • Gadget Server • Social Data Server Shindig Architecture
  • 30.
    Social Data ServerPeople Relationships Activities
  • 31.
    Social Data Server- OpenSocial Container JavaScript : JavaScript environment that provides OpenSocial specific functionality (Profiles, Relationships, Activities). - OpenSocial Data Server : with extension points so others can connect it to their own backends . Gadget Gadget Server Social Data Server JSON
  • 32.
    Social Data Serverhttp://rollerweblogger.org/roller/entry/shindig_java_internals_diagram_updated
  • 33.
  • 34.
  • 35.
    Utilize existing OpenSource container code. Wants Gadgets Wants Social features : Profiles, Relationships, Activities Integration. Why?
  • 36.
    Integration. How? -Shindig Implementation : Java, PHP … - Gadget Server, Social Data Server
  • 37.
    Integration Render gadgetOpenSocial Container (Social Data Server)
  • 38.
    • Customize sample comtainer (Gadget Container) • Implement Interfaces – People, Friends, Activities (Social Server) • Write Guice Modules (binding) • Add mapping information to web.xml (servlets, filters, guices- modules … ) • Add more SecurityTokenDecoder, etc. (Enabling OAuth support) Integration (SUMMARIZE)
  • 39.
    • Customize sample comtainer (Gadget Container) • Implement Interfaces – People, Friends, Activities (Social Server) • Write Guice Modules (binding) • Add mapping information to web.xml (servlets, filters, guices- modules … ) • Add more SecurityTokenDecoder, etc. (Enabling OAuth support) Integration
  • 40.
    • Customize sample comtainer (Gadget Container) • Implement Interfaces – People, Friends, Activities (Social Server) • Write Guice Modules (binding) • Add mapping information to web.xml (servlets, filters, guices- modules … ) • Add more SecurityTokenDecoder, etc. (Enabling OAuth support) Integration
  • 41.
    - PeopleService public class ExoPeopleService extends ExoService implements PersonService, AppDataService { public Future<RestfulCollection<Person>> getPeople(...) {} public Future<Person> getPerson(...) {} } - Activitiy Service public class ExoActivityService extends ExoService implements ActivityService { public Future<RestfulCollection<Activity>> getActivities (...) {} public Future<Void> createActivity (...) {} } Copyright 2010 eXo Platform SAS Integration (Implement Interfaces)
  • 42.
    • Customize sample comtainer (Gadget Container) • Implement Interfaces – People, Friends, Activities (Social Server) • Write Guice Modules (binding) • Add mapping information to web.xml (servlets, filters, guices- modules … ) • Add more SecurityTokenDecoder, etc. (Enabling OAuth support) Integration
  • 43.
    public classExoSocialApiGuiceModule extends AbstractModule { @Override protected void configure() { bind(PersonService. class ).to(ExoPeopleService. class ); bind(AppDataService. class ).to(ExoPeopleService. class ); bind(ActivityService. class ).to(ExoActivityService. class ); bind(Person. class ).to(ExoPersonImpl. class ); } } Copyright 2010 eXo Platform SAS Integreation (Guice Module)
  • 44.
    • Customize sample comtainer (Gadget Container) • Implement Interfaces – People, Friends, Activities (Social Server) • Write Guice Modules (binding) • Add mapping information to web.xml (servlets, filters, guices- modules … ) • Add more SecurityTokenDecoder, etc. (Enabling OAuth support) Integration
  • 45.
    webapp/opensocial/src/main/webapp/WEB-INF/web.xml <context-param> <param-name>guice-modules</param-name><param-value> org.exoplatform.social.opensocial.ExoSocialApiGuiceModule </param-value> </context-param> Copyright 2010 eXo Platform SAS Integration (Config in Web.xml)
  • 46.
  • 47.
    - OpenSource implementationof OpenSocial & Gadgets standard (Java, PHP) - Client and Server side (Container, REST, OpenSocial APIs …) - Java version: Servlet stack - Multiple entry points for various kinds of calls (servlets) - Others: Image Resizer, Content Rewriter/Compressor ... Copyright 2010 eXo Platform SAS Re-Cap
  • 48.
    Copyright 2010 eXoPlatform SAS Why not?
  • 49.
    Home Page: http://shindig.apache.org/ Downloads: http://shindig.apache.org/download/index.html Mailing Lists: http://shindig.apache.org/mail-lists.html Source Code: http://svn.apache.org/repos/asf/shindig/ Issue Tracking: https://issues.apache.org/jira/browse/SHINDIG Wiki: http://cwiki.apache.org/confluence/display/SHINDIG/ Copyright 2010 eXo Platform SAS Resources
  • 50.