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/08/25 18:09:40 UTC

svn commit: r688771 - in /incubator/shindig/trunk/java/social-api/src: main/java/org/apache/shindig/social/opensocial/service/ main/java/org/apache/shindig/social/opensocial/spi/ main/java/org/apache/shindig/social/sample/spi/ test/java/org/apache/shin...

Author: doll
Date: Mon Aug 25 09:09:40 2008
New Revision: 688771

URL: http://svn.apache.org/viewvc?rev=688771&view=rev
Log:
0.8.1 change
Added filterOperation and filterValue as two new parameters for the personService. 

The personService really needs a composable object because getPeople has too many parameters - that will come in a later refactoring though. 



Modified:
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/PersonHandler.java
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RequestItem.java
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/PersonService.java
    incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/sample/spi/JsonDbOpensocialService.java
    incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/PersonHandlerTest.java
    incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RpcRequestItemTest.java
    incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/sample/spi/JsonDbOpensocialServiceTest.java

Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/PersonHandler.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/PersonHandler.java?rev=688771&r1=688770&r2=688771&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/PersonHandler.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/PersonHandler.java Mon Aug 25 09:09:40 2008
@@ -79,7 +79,8 @@
           return personService.getPerson(userIds.iterator().next(), fields, request.getToken());
         } else {
           return personService.getPeople(userIds, groupId, request.getSortBy(),
-              request.getSortOrder(), request.getFilterBy(), request.getStartIndex(),
+              request.getSortOrder(), request.getFilterBy(), request.getFilterOperation(),
+              request.getFilterValue(), request.getStartIndex(),
               request.getCount(), fields, request.getToken());
         }
       } else if (optionalPersonId.size() == 1) {
@@ -95,13 +96,15 @@
         // Every other case is a collection response of optional person ids
         return personService.getPeople(personIds, new GroupId(GroupId.Type.self, null),
             request.getSortBy(), request.getSortOrder(), request.getFilterBy(),
-            request.getStartIndex(), request.getCount(), fields, request.getToken());
+            request.getFilterOperation(), request.getFilterValue(), request.getStartIndex(),
+            request.getCount(), fields, request.getToken());
       }
     }
 
     // Every other case is a collection response.
     return personService.getPeople(userIds, groupId, request.getSortBy(),
-        request.getSortOrder(), request.getFilterBy(), request.getStartIndex(), request.getCount(),
+        request.getSortOrder(), request.getFilterBy(), request.getFilterOperation(),
+        request.getFilterValue(), request.getStartIndex(), request.getCount(),
         fields, request.getToken());
   }
 }

Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RequestItem.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RequestItem.java?rev=688771&r1=688770&r2=688771&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RequestItem.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RequestItem.java Mon Aug 25 09:09:40 2008
@@ -48,6 +48,8 @@
   public static final String SORT_ORDER = "sortOrder";
 
   public static final String FILTER_BY = "filterBy";
+  public static final String FILTER_OPERATION = "filterOp";
+  public static final String FILTER_VALUE = "filterValue";
 
   public static final String FIELDS = "fields";
 
@@ -66,7 +68,8 @@
 
   private final String service;
 
-  public RequestItem(String service, String operation, SecurityToken token, BeanConverter converter) {
+  public RequestItem(String service, String operation, SecurityToken token,
+      BeanConverter converter) {
     this.service = service;
     this.operation = operation;
     this.token = token;
@@ -136,6 +139,18 @@
         : PersonService.FilterType.valueOf(filterBy);
   }
 
+  public PersonService.FilterOperation getFilterOperation() {
+    String filterOp = getParameter(FILTER_OPERATION);
+    return filterOp == null
+        ? PersonService.FilterOperation.contains
+        : PersonService.FilterOperation.valueOf(filterOp);
+  }
+
+  public String getFilterValue() {
+    String filterValue = getParameter(FILTER_VALUE);
+    return filterValue == null ? "" : filterValue;
+  }
+
   public Set<String> getFields() {
     return getFields(Sets.<String>newHashSet());
   }

Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/PersonService.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/PersonService.java?rev=688771&r1=688770&r2=688771&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/PersonService.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/PersonService.java Mon Aug 25 09:09:40 2008
@@ -43,6 +43,10 @@
     all, hasApp, topFriends
   }
 
+  public enum FilterOperation {
+    contains, equals, startsWith, present
+  }
+
   /**
    * Returns a list of people that correspond to the passed in person ids.
    *
@@ -51,13 +55,17 @@
    * @param sortBy How to sort the people
    * @param sortOrder The direction of the sort
    * @param filter How the people should be filtered.
+   * @param filterOperation The operation to filter with 
+   * @param filterValue The value to filter with.
    * @param first The index of the first person to fetch.
    * @param max The max number of people to fetch.
    * @param fields The profile details to fetch. Empty set implies all
    * @param token The gadget token @return a list of people.
+   * TODO(doll): This method is getting way too long. We need to pass a more complex object instead.
    */
   Future<ResponseItem<RestfulCollection<Person>>> getPeople(Set<UserId> userIds, GroupId groupId,
-      SortBy sortBy, SortOrder sortOrder, FilterType filter, int first, int max,
+      SortBy sortBy, SortOrder sortOrder, FilterType filter, FilterOperation filterOperation,
+      String filterValue, int first, int max,
       Set<String> fields, SecurityToken token);
 
   /**

Modified: incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/sample/spi/JsonDbOpensocialService.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/sample/spi/JsonDbOpensocialService.java?rev=688771&r1=688770&r2=688771&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/sample/spi/JsonDbOpensocialService.java (original)
+++ incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/sample/spi/JsonDbOpensocialService.java Mon Aug 25 09:09:40 2008
@@ -239,7 +239,8 @@
   }
 
   public Future<ResponseItem<RestfulCollection<Person>>> getPeople(Set<UserId> userIds,
-      GroupId groupId, SortBy sortBy, SortOrder sortOrder, FilterType filter, int first,
+      GroupId groupId, SortBy sortBy, SortOrder sortOrder, FilterType filter,
+      FilterOperation filterOperation, String filterValue, int first,
       int max, Set<String> fields, SecurityToken token) {
     List<Person> result = Lists.newArrayList();
     try {

Modified: incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/PersonHandlerTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/PersonHandlerTest.java?rev=688771&r1=688770&r2=688771&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/PersonHandlerTest.java (original)
+++ incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/PersonHandlerTest.java Mon Aug 25 09:09:40 2008
@@ -98,7 +98,8 @@
         new GroupId(GroupId.Type.all, null),
         PersonService.SortBy.topFriends,
         PersonService.SortOrder.ascending,
-        PersonService.FilterType.all, 0, 20,
+        PersonService.FilterType.all,
+        PersonService.FilterOperation.contains, "", 0, 20,
         DEFAULT_FIELDS,
         token))
         .andReturn(ImmediateFuture.newInstance(data));
@@ -118,7 +119,9 @@
         new GroupId(GroupId.Type.friends, null),
         PersonService.SortBy.topFriends,
         PersonService.SortOrder.ascending,
-        PersonService.FilterType.all, 0, 20,
+        PersonService.FilterType.all,
+        PersonService.FilterOperation.contains,
+        "", 0, 20,
         DEFAULT_FIELDS,
         token))
         .andReturn(ImmediateFuture.newInstance(data));
@@ -132,11 +135,15 @@
     PersonService.SortBy sortBy = PersonService.SortBy.name;
     PersonService.SortOrder sortOrder = PersonService.SortOrder.descending;
     PersonService.FilterType filter = PersonService.FilterType.topFriends;
+    PersonService.FilterOperation filterOp = PersonService.FilterOperation.present;
+    String filterValue = "cassie";
 
     Map<String, String> params = Maps.newHashMap();
     params.put("sortBy", sortBy.toString());
     params.put("sortOrder", sortOrder.toString());
     params.put("filterBy", filter.toString());
+    params.put("filterOp", filterOp.toString());
+    params.put("filterValue", filterValue);
     params.put("startIndex", "5");
     params.put("count", "10");
     params.put("fields", "money,fame,fortune");
@@ -148,7 +155,8 @@
     EasyMock.expect(personService.getPeople(
         JOHN_DOE,
         new GroupId(GroupId.Type.friends, null), sortBy, sortOrder,
-        filter, 5, 10, Sets.newLinkedHashSet("money", "fame", "fortune"), token))
+        filter, filterOp, filterValue, 5, 10,
+        Sets.newLinkedHashSet("money", "fame", "fortune"), token))
         .andReturn(ImmediateFuture.newInstance(data));
 
     replay();
@@ -192,7 +200,9 @@
         new GroupId(GroupId.Type.self, null),
         PersonService.SortBy.topFriends,
         PersonService.SortOrder.ascending,
-        PersonService.FilterType.all, 0, 20,
+        PersonService.FilterType.all,
+        PersonService.FilterOperation.contains,
+        "", 0, 20,
         DEFAULT_FIELDS,
         token)).andReturn(ImmediateFuture.newInstance(data));
 

Modified: incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RpcRequestItemTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RpcRequestItemTest.java?rev=688771&r1=688770&r2=688771&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RpcRequestItemTest.java (original)
+++ incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RpcRequestItemTest.java Mon Aug 25 09:09:40 2008
@@ -122,6 +122,22 @@
     assertEquals(PersonService.FilterType.hasApp, request.getFilterBy());
   }
 
+  public void testFilterOperation() throws Exception {
+    request.setParameter("filterOp", null);
+    assertEquals(PersonService.FilterOperation.contains, request.getFilterOperation());
+
+    request.setParameter("filterOp", "equals");
+    assertEquals(PersonService.FilterOperation.equals, request.getFilterOperation());
+  }
+
+  public void testFilterValue() throws Exception {
+    request.setParameter("filterValue", null);
+    assertEquals("", request.getFilterValue());
+
+    request.setParameter("filterValue", "cassie");
+    assertEquals("cassie", request.getFilterValue());
+  }
+
   public void testFields() throws Exception {
     request.setListParameter("fields", Collections.<String>emptyList());
     assertEquals(Sets.<String>newHashSet(), request.getFields());

Modified: incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/sample/spi/JsonDbOpensocialServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/sample/spi/JsonDbOpensocialServiceTest.java?rev=688771&r1=688770&r2=688771&view=diff
==============================================================================
--- incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/sample/spi/JsonDbOpensocialServiceTest.java (original)
+++ incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/sample/spi/JsonDbOpensocialServiceTest.java Mon Aug 25 09:09:40 2008
@@ -88,7 +88,7 @@
     ResponseItem<RestfulCollection<Person>> responseItem = db.getPeople(
         Sets.newHashSet(CANON_USER), new GroupId(GroupId.Type.friends, null),
         PersonService.SortBy.topFriends, PersonService.SortOrder.ascending,
-        PersonService.FilterType.all, 0,
+        PersonService.FilterType.all, PersonService.FilterOperation.contains, "", 0,
         Integer.MAX_VALUE, Collections.<String>emptySet(), token).get();
     assertNotNull(responseItem.getResponse());
     assertEquals(responseItem.getResponse().getTotalResults(), 4);
@@ -101,7 +101,7 @@
     ResponseItem<RestfulCollection<Person>> responseItem = db.getPeople(
         Sets.newLinkedHashSet(JOHN_DOE, JANE_DOE), new GroupId(GroupId.Type.friends, null),
         PersonService.SortBy.topFriends, PersonService.SortOrder.ascending,
-        PersonService.FilterType.all, 0,
+        PersonService.FilterType.all, PersonService.FilterOperation.contains, "", 0,
         Integer.MAX_VALUE, Collections.<String>emptySet(), token).get();
     assertNotNull(responseItem.getResponse());
     assertEquals(responseItem.getResponse().getTotalResults(), 4);