Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
REST abstraction for ECF
Project Lead: Holger Staudacher (IRC: staudi)
Mentor: Scott Lewis, Marcelo Mayworm
This project is part of the Google Summer of Code 2009
Contents
Abstract
Many service providers using a REST based API to offer developers access to their services, i.e. Twitter, Facebook and so on. The result of this is that some third parties provide Java based libraries, which covers this API's. The ECF team played a little bit with the Twitter API and use therefore a library called Twitter4J.
The disadvantage of this technique is a dependency to the third parties library. This means an ECF container based on such a library is dependent on the diversity of this.
To decouple these dependencies an own ECF based REST abstraction should be created within this GSoC project.
Primary goals
- A full working API for the REST client side to communicate to any RESTful web service.
Additional goals
- Upgrading the Twitter Provider to use this REST API
Timeline
Here is a complete list of the milestones and release candidates planned for this plugin.
Milestone | Date | Planned items | status |
---|---|---|---|
M1 | June 16 | Implementation of the ECF Remote Services API for REST | see bug 275723 |
M2 | June 28 | Architecture for REST webservices (POST, GET, UPDATE, DELETE) | see bug 281101 |
M3 | July 15 | Couple the abstraction layer with the remote service API implementation | |
M4 | July 26 | The resource representation concept | see bug 281097 |
M5 | July 31 | Implementation of some resource representations (XML, JSON and so on) | see bug 281102, bug 282433 and bug 281104 |
RC1 | August 4 | Round up the API and writing documentation | see bug 281106, bug 284761, bug 283053 |
RC2 | August 8 | Fix some bugs | see query |
Pencils down | August 16 | Make the contribution ready for ECF |
Community Involvement
Getting the source
See the appropriate project set below.
Project set file for ECF committers:
<?xml version="1.0" encoding="UTF-8"?> <psf version="2.0"> <provider id="org.eclipse.team.cvs.core.cvsnature"> <project reference="1.0,:extssh:ecf1.osuosl.org:/home/cvs/ecf,rest/bundles/org.eclipse.ecf.remoteservice.rest,org.eclipse.ecf.remoteservice.rest"/> <project reference="1.0,:extssh:ecf1.osuosl.org:/home/cvs/ecf,rest/bundles/org.eclipse.ecf.tests.remoteservice.rest,org.eclipse.ecf.tests.remoteservice.rest"/> <project reference="1.0,:extssh:ecf1.osuosl.org:/home/cvs/ecf,rest/bundles/org.eclipse.ecf.tests.remoteservice.rest.resources,org.eclipse.ecf.tests.remoteservice.rest.resources"/> <project reference="1.0,:extssh:ecf1.osuosl.org:/home/cvs/ecf,rest/bundles/org.eclipse.ecf.remoteservice.rest.resource.json.jackson,org.eclipse.ecf.remoteservice.rest.resource.json.jackson"/> <project reference="1.0,:extssh:ecf1.osuosl.org:/home/cvs/ecf,rest/bundles/org.eclipse.ecf.remoteservice.rest.resource.json.org,org.eclipse.ecf.remoteservice.rest.resource.json.org"/> <project reference="1.0,:extssh:ecf1.osuosl.org:/home/cvs/ecf,rest/bundles/org.eclipse.ecf.remoteservice.rest.resource.rss,org.eclipse.ecf.remoteservice.rest.resource.rss"/> <project reference="1.0,:extssh:ecf1.osuosl.org:/home/cvs/ecf,rest/bundles/org.json,org.json"/> <project reference="1.0,:extssh:ecf1.osuosl.org:/home/cvs/ecf,rest/bundles/org.codehaus.jackson, org.codehaus.jackson"/> </provider> </psf>
Project set file for anonymous CVS access:
<?xml version="1.0" encoding="UTF-8"?> <psf version="2.0"> <provider id="org.eclipse.team.cvs.core.cvsnature"> <project reference="1.0,:pserver:ecf1.osuosl.org:/ecf,rest/bundles/org.eclipse.ecf.remoteservice.rest,org.eclipse.ecf.remoteservice.rest"/> <project reference="1.0,:pserver:ecf1.osuosl.org:/ecf,rest/bundles/org.eclipse.ecf.tests.remoteservice.rest,org.eclipse.ecf.tests.remoteservice.rest"/> <project reference="1.0,:pserver:ecf1.osuosl.org:/ecf,rest/bundles/org.eclipse.ecf.tests.remoteservice.rest.resources,org.eclipse.ecf.tests.remoteservice.rest.resources"/> <project reference="1.0,:pserver:ecf1.osuosl.org:/ecf,rest/bundles/org.eclipse.ecf.remoteservice.rest.resource.json.jackson,org.eclipse.ecf.remoteservice.rest.resource.json.jackson"/> <project reference="1.0,:pserver:ecf1.osuosl.org:/ecf,rest/bundles/org.eclipse.ecf.remoteservice.rest.resource.json.org,org.eclipse.ecf.remoteservice.rest.resource.json.org"/> <project reference="1.0,:pserver:ecf1.osuosl.org:/ecf,rest/bundles/org.eclipse.ecf.remoteservice.rest.resource.rss,org.eclipse.ecf.remoteservice.rest.resource.rss"/> <project reference="1.0,:pserver:ecf1.osuosl.org:/ecf,rest/bundles/org.json,org.json"/> <project reference="1.0,:pserver:ecf1.osuosl.org:/ecf,rest/bundles/org.codehaus.jackson, org.codehaus.jackson"/> </provider> </psf>
When the project's finished the code will be published on the appropriate Google Code Site.
Open issues
DS for ResourceRepresentations (see bug 285294)
New ideas
Do you have a great idea for the REST abstraction? Just open a new feature request.