You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by do...@apache.org on 2008/05/09 15:35:36 UTC
svn commit: r654806 - in
/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera:
ActivitiesServiceAdapter.java FriendsServiceAdapter.java
PeopleServiceAdapter.java RestServerCollectionAdapter.java
SocialApiProvider.java
Author: doll
Date: Fri May 9 06:35:36 2008
New Revision: 654806
URL: http://svn.apache.org/viewvc?rev=654806&view=rev
Log:
Changed the rest api to use "json" instead of "json-c" as the format.
Added support for fetching activities for friends. As usual, this code will need some cleanup later on.
Modified:
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/ActivitiesServiceAdapter.java
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/FriendsServiceAdapter.java
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/PeopleServiceAdapter.java
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/RestServerCollectionAdapter.java
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/SocialApiProvider.java
Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/ActivitiesServiceAdapter.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/ActivitiesServiceAdapter.java?rev=654806&r1=654805&r2=654806&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/ActivitiesServiceAdapter.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/ActivitiesServiceAdapter.java Fri May 9 06:35:36 2008
@@ -34,28 +34,38 @@
*/
@SuppressWarnings("unchecked")
public class ActivitiesServiceAdapter extends RestServerCollectionAdapter {
- private ActivitiesService handler;
+ private ActivitiesService activitiesService;
// TODO get these from the config files like in feedserver
private static final String TITLE = "Acitivity Collection title";
private static final String AUTHOR = "TODO";
+ private static final String FRIENDS_INDICATOR = "@friends";
@Inject
- public ActivitiesServiceAdapter(ActivitiesService handler) {
- this.handler = handler;
+ public ActivitiesServiceAdapter(ActivitiesService activitiesService) {
+ this.activitiesService = activitiesService;
}
/**
* Handles the following URL
* /activities/{uid}/@self
+ * /activities/{uid}/@friends
*/
public ResponseContext getFeed(RequestContext request) {
String uid = request.getTarget().getParameter("uid");
- List<String> ids = new ArrayList<String>();
- ids.add(uid);
- // TODO: Use a real gadget token
- List<Activity> listOfObj = handler.getActivities(ids, null).getResponse();
+ List<String> ids;
+ // TODO: Should we query the path like this, or should we use two handlers
+ // like we do for people?
+ if (request.getTargetPath().contains(FRIENDS_INDICATOR)) {
+ ids = getFriendIds(request, uid);
+ } else {
+ ids = new ArrayList<String>();
+ ids.add(uid);
+ }
+
+ List<Activity> listOfObj = activitiesService.getActivities(ids,
+ getGadgetToken(request, uid)).getResponse();
return returnFeed(request, TITLE, AUTHOR, (List)listOfObj);
}
@@ -67,8 +77,8 @@
String uid = request.getTarget().getParameter("uid");
String aid = request.getTarget().getParameter("aid");
- // TODO: Use a real gadget token
- Activity obj = handler.getActivity(uid, aid, null).getResponse();
+ Activity obj = activitiesService.getActivity(uid, aid,
+ getGadgetToken(request, uid)).getResponse();
// TODO: how is entry id determined. check.
String entryId = request.getUri().toString();
Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/FriendsServiceAdapter.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/FriendsServiceAdapter.java?rev=654806&r1=654805&r2=654806&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/FriendsServiceAdapter.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/FriendsServiceAdapter.java Fri May 9 06:35:36 2008
@@ -17,17 +17,13 @@
*/
package org.apache.shindig.social.abdera;
-import org.apache.shindig.gadgets.GadgetToken;
+import org.apache.shindig.social.ResponseItem;
import org.apache.shindig.social.opensocial.PeopleService;
-import org.apache.shindig.social.opensocial.model.Person;
-import org.apache.shindig.social.opensocial.model.IdSpec;
import org.apache.shindig.social.opensocial.model.ApiCollection;
-import org.apache.shindig.social.ResponseItem;
+import org.apache.shindig.social.opensocial.model.Person;
-import com.google.inject.Inject;
import org.apache.abdera.protocol.server.RequestContext;
import org.apache.abdera.protocol.server.ResponseContext;
-import org.json.JSONException;
import java.util.Date;
import java.util.List;
@@ -40,17 +36,11 @@
public class FriendsServiceAdapter extends RestServerCollectionAdapter {
private static Logger logger =
Logger.getLogger(FriendsServiceAdapter.class.getName());
- private PeopleService handler;
// TODO get these from the config files like in feedserver
private static final String TITLE = "People Collection title";
private static final String AUTHOR = "TODO";
- @Inject
- public FriendsServiceAdapter(PeopleService handler) {
- this.handler = handler;
- }
-
/**
* Handles the following URLs
* /people/{uid}/@all
@@ -93,20 +83,10 @@
private ResponseItem<ApiCollection<Person>> getFriends(RequestContext request,
String uid) {
- GadgetToken token = getGadgetToken(request, uid);
-
- IdSpec idSpec = new IdSpec(null, IdSpec.Type.VIEWER_FRIENDS);
- List<String> viewerFriendIds = null;
- try {
- viewerFriendIds = handler.getIds(idSpec, token);
- } catch (JSONException e) {
- // TODO: Ignoring this for now. Eventually we can make the service apis
- // fit the restful model better. For now, it is worth some hackiness to
- // keep the interfaces stable.
- }
-
// TODO: Should have a real concept of first, max sort etc with defaults
- return handler.getPeople(viewerFriendIds, PeopleService.SortOrder.name,
- null, 0, 100, null, token);
+ return peopleService.getPeople(getFriendIds(request, uid),
+ PeopleService.SortOrder.name, null, 0, 100, null,
+ getGadgetToken(request, uid));
}
+
}
Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/PeopleServiceAdapter.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/PeopleServiceAdapter.java?rev=654806&r1=654805&r2=654806&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/PeopleServiceAdapter.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/PeopleServiceAdapter.java Fri May 9 06:35:36 2008
@@ -18,10 +18,8 @@
package org.apache.shindig.social.abdera;
import org.apache.shindig.gadgets.GadgetToken;
-import org.apache.shindig.social.opensocial.PeopleService;
import org.apache.shindig.social.opensocial.model.Person;
-import com.google.inject.Inject;
import org.apache.abdera.protocol.server.RequestContext;
import org.apache.abdera.protocol.server.ResponseContext;
@@ -36,12 +34,6 @@
public class PeopleServiceAdapter extends RestServerCollectionAdapter {
private static Logger logger =
Logger.getLogger(PeopleServiceAdapter.class.getName());
- private PeopleService handler;
-
- @Inject
- public PeopleServiceAdapter(PeopleService handler) {
- this.handler = handler;
- }
/**
* Does not handle any urls.
@@ -57,7 +49,7 @@
public ResponseContext getEntry(RequestContext request) {
String uid = request.getTarget().getParameter("uid");
GadgetToken token = getGadgetToken(request, uid);
- Person person = handler.getPerson(uid, token).getResponse();
+ Person person = peopleService.getPerson(uid, token).getResponse();
// TODO: how is entry id determined. check.
String entryId = request.getUri().toString();
Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/RestServerCollectionAdapter.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/RestServerCollectionAdapter.java?rev=654806&r1=654805&r2=654806&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/RestServerCollectionAdapter.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/RestServerCollectionAdapter.java Fri May 9 06:35:36 2008
@@ -18,7 +18,9 @@
package org.apache.shindig.social.abdera;
import org.apache.shindig.gadgets.GadgetToken;
+import org.apache.shindig.social.opensocial.PeopleService;
import org.apache.shindig.social.opensocial.model.Activity;
+import org.apache.shindig.social.opensocial.model.IdSpec;
import org.apache.shindig.social.opensocial.model.Person;
import org.apache.shindig.social.opensocial.util.BeanJsonConverter;
import org.apache.shindig.social.opensocial.util.BeanXmlConverter;
@@ -31,6 +33,7 @@
import org.apache.abdera.protocol.server.ResponseContext;
import org.apache.abdera.protocol.server.context.ResponseContextException;
import org.apache.abdera.protocol.server.impl.AbstractCollectionAdapter;
+import org.json.JSONException;
import java.util.Date;
import java.util.List;
@@ -47,12 +50,13 @@
private BeanXmlConverter beanXmlConverter;
private BeanJsonConverter beanJsonConverter;
+ protected PeopleService peopleService;
private static final String INVALID_FORMAT =
- "Invalid format. only atom/json-c are supported";
+ "Invalid format. only atom/json are supported";
private enum Format {
- JSON("json-c"),
+ JSON("json"),
ATOM("atom");
private final String displayValue;
@@ -73,6 +77,11 @@
this.beanJsonConverter = beanJsonConverter;
}
+ @Inject
+ public void setPeopleService(PeopleService peopleService) {
+ this.peopleService = peopleService;
+ }
+
protected ResponseContext returnFeed(RequestContext request, String title,
String author, List<Object> listOfObj) {
Format format = getFormatTypeFromRequest(request);
@@ -223,6 +232,19 @@
};
}
+ protected List<String> getFriendIds(RequestContext request, String uid) {
+ GadgetToken token = getGadgetToken(request, uid);
+ IdSpec idSpec = new IdSpec(null, IdSpec.Type.VIEWER_FRIENDS);
+ try {
+ return peopleService.getIds(idSpec, token);
+ } catch (JSONException e) {
+ // TODO: Ignoring this for now. Eventually we can make the service apis
+ // fit the restful model better. For now, it is worth some hackiness to
+ // keep the interfaces stable.
+ return null;
+ }
+ }
+
@Override
public String getAuthor(RequestContext arg0) {
// Auto-generated method stub
Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/SocialApiProvider.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/SocialApiProvider.java?rev=654806&r1=654805&r2=654806&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/SocialApiProvider.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/abdera/SocialApiProvider.java Fri May 9 06:35:36 2008
@@ -164,9 +164,10 @@
// Collection of activities for people in group {groupid}
// belonging to given user {uid} -- /activities/{uid}/{groupid}
+ // TODO: Shindig does not support groups yet
.addRoute(CollectionAdapter.ACTIVITIES_OF_GROUP_OF_USER.toString(),
BASE + "activities/:uid/:groupid",
- TargetType.TYPE_COLLECTION, activitiesAdapter)
+ TargetType.TYPE_COLLECTION, null)
// Individual activity resource; usually discovered from collection
// /activities/{uid}/@self/{aid}