You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by ja...@apache.org on 2011/07/20 16:25:28 UTC

svn commit: r1148785 - in /incubator/rave/trunk/rave-shindig/src: main/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDb.java test/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDbTest.java

Author: jasha
Date: Wed Jul 20 14:25:28 2011
New Revision: 1148785

URL: http://svn.apache.org/viewvc?rev=1148785&view=rev
Log:
RAVE-62 add more tests for getPerson, only do Person to JSON to Person conversion when props are filtered

Modified:
    incubator/rave/trunk/rave-shindig/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDb.java
    incubator/rave/trunk/rave-shindig/src/test/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDbTest.java

Modified: incubator/rave/trunk/rave-shindig/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDb.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-shindig/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDb.java?rev=1148785&r1=1148784&r2=1148785&view=diff
==============================================================================
--- incubator/rave/trunk/rave-shindig/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDb.java (original)
+++ incubator/rave/trunk/rave-shindig/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDb.java Wed Jul 20 14:25:28 2011
@@ -180,14 +180,16 @@ public class PersonServiceDb implements 
         if (plist != null && !plist.isEmpty()) {
             person = (Person) plist.get(0);
         }
-        String jsonStrRep = beanConverter.convertToString(person);
-        JSONObject jsonRep = new JSONObject(jsonStrRep);
-        if (!fields.isEmpty()) {
-            if (fields.size() != 1 || !fields.contains("id")) {
-                jsonRep = new JSONObject(jsonRep, fields.toArray(new String[fields.size()]));
-            }
+
+        if ((!fields.isEmpty())  && (fields.size() > 1 || !fields.contains(PersonDb.PARAM_PERSONID))) {
+            // JPA returns full object, but request was for a limited set
+            // TODO find out how this can be done in the JQL query instead of in a JSON conversion
+            String jsonStrRep = beanConverter.convertToString(person);
+            JSONObject jsonRep = new JSONObject(jsonStrRep);
+            jsonRep = new JSONObject(jsonRep, fields.toArray(new String[fields.size()]));
+            person = beanConverter.convertToObject(jsonRep.toString(), Person.class);
         }
-        person = beanConverter.convertToObject(jsonRep.toString(), Person.class);
+
         return ImmediateFuture.newInstance(person);
     } catch (Exception je) {
         throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, je.getMessage(), je);

Modified: incubator/rave/trunk/rave-shindig/src/test/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDbTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-shindig/src/test/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDbTest.java?rev=1148785&r1=1148784&r2=1148785&view=diff
==============================================================================
--- incubator/rave/trunk/rave-shindig/src/test/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDbTest.java (original)
+++ incubator/rave/trunk/rave-shindig/src/test/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDbTest.java Wed Jul 20 14:25:28 2011
@@ -21,6 +21,8 @@ package org.apache.shindig.social.openso
 
 import java.util.Calendar;
 import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
 import java.util.concurrent.Future;
 
 import com.google.inject.Guice;
@@ -28,6 +30,7 @@ import com.google.inject.Injector;
 import org.apache.rave.os.model.RaveNameImpl;
 import org.apache.shindig.auth.SecurityToken;
 import org.apache.shindig.common.testing.FakeGadgetToken;
+import org.apache.shindig.protocol.ProtocolException;
 import org.apache.shindig.protocol.model.FilterOperation;
 import org.apache.shindig.protocol.model.SortOrder;
 import org.apache.shindig.social.opensocial.jpa.EnumDb;
@@ -49,6 +52,7 @@ import org.junit.Test;
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.assertTrue;
+import static junit.framework.Assert.fail;
 import static org.easymock.EasyMock.createMock;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.replay;
@@ -73,11 +77,32 @@ public class PersonServiceDbTest {
     public void testGetPerson() throws Exception {
         UserId userId = new UserId(UserId.Type.userId, "canonical");
         SecurityToken token = new FakeGadgetToken();
+        
         final Future<Person> personFuture = service.getPerson(userId, Collections.<String>emptySet(), token);
         final Person person = personFuture.get();
         assertEquals("canonical", person.getId());
+        assertEquals("Carl", person.getName().getGivenName());
+        assertEquals("Anonical", person.getName().getFamilyName());
         assertEquals(25, person.getAge().intValue());
         assertEquals(Smoker.NO, person.getSmoker().getValue());
+
+        Set<String> limitedFields = new HashSet<String>();
+        limitedFields.add("id");
+        limitedFields.add("name");
+        final Future<Person> personFutureLimited = service.getPerson(userId, limitedFields, token);
+        final Person personLimited = personFutureLimited.get();
+        assertEquals("canonical", personLimited.getId());
+        assertEquals("Carl", personLimited.getName().getGivenName());
+        assertEquals("Anonical", personLimited.getName().getFamilyName());
+        assertEquals(null, personLimited.getAge());
+        assertEquals(null, personLimited.getSmoker());
+
+        UserId noSuchId = new UserId(UserId.Type.userId, "doesnotexist");
+        try{
+            service.getPerson(noSuchId, Collections.<String>emptySet(), token);
+        } catch (ProtocolException e) {
+            fail("Person does not exist");
+        }
     }
 
     /**