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");
+ }
}
/**