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}