Author: ieb
Date: Wed Jan  7 07:43:08 2009
New Revision: 732371

URL: http://svn.apache.org/viewvc?rev=732371&view=rev
Log:
         SHINDIG-785

Patch by Chico Charlesworth

Fully implement samples implementation of PersonService, ActivityService and 
AppDataService

Thanks

Modified:
    
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/ActivityDb.java
    
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/ApplicationDataMapDb.java
    
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/PersonDb.java
    
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/hibernate/Bootstrap.java
    
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/ActivityServiceDb.java
    
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/AppDataServiceDb.java
    
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/JPQLUtils.java
    
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDb.java
    
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/SPIUtils.java
    
incubator/shindig/trunk/java/samples/src/test/java/org/apache/shindig/social/opensocial/jpa/test/PersonPopulate.java
    
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java

Modified: 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/ActivityDb.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/ActivityDb.java?rev=732371&r1=732370&r2=732371&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/ActivityDb.java
 (original)
+++ 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/ActivityDb.java
 Wed Jan  7 07:43:08 2009
@@ -17,16 +17,15 @@
  */
 package org.apache.shindig.social.opensocial.jpa;
 
-import com.google.common.collect.Lists;
-
 import static javax.persistence.CascadeType.ALL;
 import static javax.persistence.GenerationType.IDENTITY;
 
+import com.google.common.collect.Lists;
+
 import org.apache.shindig.social.opensocial.jpa.api.DbObject;
 import org.apache.shindig.social.opensocial.model.Activity;
 import org.apache.shindig.social.opensocial.model.MediaItem;
 
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -42,6 +41,8 @@
 import javax.persistence.JoinTable;
 import javax.persistence.ManyToMany;
 import javax.persistence.MapKey;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
 import javax.persistence.OneToMany;
 import javax.persistence.PostLoad;
 import javax.persistence.PrePersist;
@@ -56,15 +57,23 @@
  */
 @Entity
 @Table(name = "activity")
+...@namedqueries(value = {
+    @NamedQuery(name = ActivityDb.FINDBY_ACTIVITY_ID, 
+        query = "select activity from ActivityDb activity where 
activity.userId = :userId and activity.id = :activityId")
+    })
 public class ActivityDb implements Activity, DbObject {
 
-  public static final String FINDBY_ACTIVITY_ID = null;
-
-  public static final String PARAM_USERID = null;
-
-  public static final String PARAM_ACTIVITYID = null;
+  public static final String FINDBY_ACTIVITY_ID = 
"q.activity.findbyactivityid";
 
+  public static final String PARAM_USERID = "userId";
+  
+  public static final String PARAM_ACTIVITYID = "activityId";
+   
   public static final String JPQL_FINDBY_ACTIVITIES = null;
+  
+  public static final String JPQL_FINDACTIVITY = "select a from ActivityDb a 
where ";
+  
+  public static final String JPQL_FINDACTIVITY_BY_FRIENDS = "select a from 
ActivityDb a where a.userId in (select p.id from PersonDb p where p.objectId in 
(select f.friend.objectId from PersonDb p, FriendDb f where p.objectId = 
f.person.objectId and ";
 
   /**
    * The internal object ID used for references to this object. Should be
@@ -610,31 +619,33 @@
    */
   @PrePersist
   public void populateDbFields() {
-    // add new entries
-    for (Entry<String, String> e : templateParams.entrySet()) {
-      ActivityTemplateParamsDb a = templateParamsDb.get(e.getKey());
-      if (a == null) {
-        a = new ActivityTemplateParamsDb();
-        a.name = e.getKey();
-        a.value = e.getValue();
-        a.activity = this;
-        // a.activities = Lists.newArrayList();
-        // a.activities.add(this);
-        templateParamsDb.put(e.getKey(), a);
-      } else {
-        a.value = e.getValue();
+    if (templateParams != null) {
+      // add new entries
+      for (Entry<String, String> e : templateParams.entrySet()) {
+        ActivityTemplateParamsDb a = templateParamsDb.get(e.getKey());
+        if (a == null) {
+          a = new ActivityTemplateParamsDb();
+          a.name = e.getKey();
+          a.value = e.getValue();
+          a.activity = this;
+          // a.activities = Lists.newArrayList();
+          // a.activities.add(this);
+          templateParamsDb.put(e.getKey(), a);
+        } else {
+          a.value = e.getValue();
+        }
       }
-    }
-    // remove old entries
-    List<String> toRemove = Lists.newArrayList();
-    for (Entry<String, ActivityTemplateParamsDb> e : templateParamsDb
-        .entrySet()) {
-      if (!templateParams.containsKey(e.getKey())) {
-        toRemove.add(e.getKey());
+      // remove old entries
+      List<String> toRemove = Lists.newArrayList();
+      for (Entry<String, ActivityTemplateParamsDb> e : templateParamsDb
+          .entrySet()) {
+        if (!templateParams.containsKey(e.getKey())) {
+          toRemove.add(e.getKey());
+        }
+      }
+      for (String r : toRemove) {
+        templateParamsDb.remove(r);
       }
-    }
-    for (String r : toRemove) {
-      templateParamsDb.remove(r);
     }
   }
 

Modified: 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/ApplicationDataMapDb.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/ApplicationDataMapDb.java?rev=732371&r1=732370&r2=732371&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/ApplicationDataMapDb.java
 (original)
+++ 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/ApplicationDataMapDb.java
 Wed Jan  7 07:43:08 2009
@@ -17,12 +17,17 @@
  */
 package org.apache.shindig.social.opensocial.jpa;
 
+import static javax.persistence.CascadeType.ALL;
 import static javax.persistence.GenerationType.IDENTITY;
 
 import com.google.common.collect.Lists;
 
 import org.apache.shindig.social.opensocial.jpa.api.DbObject;
-import org.apache.shindig.social.opensocial.model.Person;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
 
 import javax.persistence.Basic;
 import javax.persistence.Column;
@@ -36,31 +41,28 @@
 import javax.persistence.PostLoad;
 import javax.persistence.PrePersist;
 import javax.persistence.Table;
+import javax.persistence.Transient;
 import javax.persistence.Version;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * An application data map is the map of data for a single key within an 
application.
  */
 @Entity
 @Table(name="application_datamap")
-public class ApplicationDataMapDb extends ConcurrentHashMap<String, String> 
implements DbObject {
+public class ApplicationDataMapDb implements DbObject {
   /**
-   * The object needs to be seializable (map)
+   * The object needs to be seializable (map).
    */
   private static final long serialVersionUID = 8017568825925047318L;
 
   public static final String FINDBY_ALL_GROUP = null;
 
-  public static final String FINDBY_FRIENDS_GROUP = null;
+  public static final String FINDBY_FRIENDS_GROUP = "select am from 
ApplicationDataMapDb am where am.personId in (select f.friend.id from PersonDb 
p, FriendDb f where p.objectId = f.person.objectId and ";
 
   public static final String FINDBY_GROUP_GROUP = null;
 
-  public static final String FINDBY_SELF_GROUP = null;
+  public static final String FINDBY_SELF_GROUP = "select am from 
ApplicationDataMapDb am where ";
 
   /**
    * The internal object ID used for references to this object. Should be 
generated by the
@@ -85,15 +87,24 @@
   @ManyToOne(targetEntity=ApplicationDb.class)
   @JoinColumn(name="application_id", referencedColumnName="oid")
   protected ApplicationDb application;
-  
+
   /**
-   * A named application data map, contains as a map of values.
+   * Create map using ApplicationDataMapValueDb such that ApplicationDataMapDb 
are joined on oid ->
+   * application_datamap_id and then the name value becomes the key, and the 
value becomes the value
+   * unfortunately JPA wont do Map<String,String> so this is handled in the 
prePersist and postLoad
+   * hook.
    */
-  @OneToMany(targetEntity=ApplicationDataMapValueDb.class, 
mappedBy="applicationDataMap")
+  @OneToMany(targetEntity=ApplicationDataMapValueDb.class, 
mappedBy="applicationDataMap", cascade = ALL)
   @MapKey(name="name")
-  protected Map<String, ApplicationDataMapValueDb> valuesDb;
-    
-  
+  protected Map<String, ApplicationDataMapValueDb> valuesDb = new 
ConcurrentHashMap<String, ApplicationDataMapValueDb>();
+
+  /**
+   * The transient store for values loaded by the postLoad hook and persisted 
by the
+   * prePersist hook.
+   */
+  @Transient
+  protected Map<String, String> values;
+
   @Basic
   @Column(name="person_id", length=255)
   protected String personId;
@@ -104,7 +115,7 @@
   @PrePersist
   public void prePersist() {
     // add new entries
-    for (Entry<String, String> e : this.entrySet()) {
+    for (Entry<String, String> e : values.entrySet()) {
       ApplicationDataMapValueDb a = valuesDb.get(e.getKey());
       if (a == null) {
         a = new ApplicationDataMapValueDb();
@@ -119,7 +130,7 @@
     // remove old entries
     List<String> toRemove = Lists.newArrayList();
     for (Entry<String, ApplicationDataMapValueDb> e : valuesDb.entrySet()) {
-      if (!this.containsKey(e.getKey())) {
+      if (!values.containsKey(e.getKey())) {
         toRemove.add(e.getKey());
       }
     }
@@ -133,9 +144,9 @@
    */
   @PostLoad
   public void postLoad() {
-    this.clear();
+    values = new ConcurrentHashMap<String, String>();
     for (Entry<String, ApplicationDataMapValueDb> e : valuesDb.entrySet()) {
-      put(e.getKey(), e.getValue().value);
+      values.put(e.getKey(), e.getValue().value);
     }
   }
 
@@ -154,17 +165,17 @@
   }
 
   /**
-   * @return the valuesDb
+   * @return the values
    */
-  public Map<String, ApplicationDataMapValueDb> getValuesDb() {
-    return valuesDb;
+  public Map<String, String> getValues() {
+    return values;
   }
 
   /**
-   * @param valuesDb the valuesDb to set
+   * @param values the values to set
    */
-  public void setValuesDb(Map<String, ApplicationDataMapValueDb> valuesDb) {
-    this.valuesDb = valuesDb;
+  public void setValues(Map<String, String> values) {
+    this.values = values;
   }
 
   /**

Modified: 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/PersonDb.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/PersonDb.java?rev=732371&r1=732370&r2=732371&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/PersonDb.java
 (original)
+++ 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/PersonDb.java
 Wed Jan  7 07:43:08 2009
@@ -17,14 +17,17 @@
  */
 package org.apache.shindig.social.opensocial.jpa;
 
-import com.google.common.collect.Maps;
-
+import static javax.persistence.CascadeType.ALL;
+import static javax.persistence.CascadeType.MERGE;
+import static javax.persistence.CascadeType.PERSIST;
+import static javax.persistence.CascadeType.REFRESH;
 import static javax.persistence.GenerationType.IDENTITY;
 
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 
-import org.apache.shindig.social.opensocial.jpa.api.FilterCapability;
 import org.apache.shindig.social.opensocial.jpa.api.DbObject;
+import org.apache.shindig.social.opensocial.jpa.api.FilterCapability;
 import org.apache.shindig.social.opensocial.jpa.api.FilterSpecification;
 import org.apache.shindig.social.opensocial.model.Account;
 import org.apache.shindig.social.opensocial.model.Address;
@@ -41,7 +44,11 @@
 import org.apache.shindig.social.opensocial.model.Enum.Smoker;
 import org.apache.shindig.social.opensocial.spi.PersonService.FilterOperation;
 
-import com.google.common.collect.Lists;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
 
 import javax.persistence.Basic;
 import javax.persistence.Column;
@@ -63,26 +70,15 @@
 import javax.persistence.Transient;
 import javax.persistence.Version;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import static javax.persistence.CascadeType.ALL;
-import static javax.persistence.CascadeType.PERSIST;
-import static javax.persistence.CascadeType.REFRESH;
-import static javax.persistence.CascadeType.MERGE;
-
 /**
  * Default Implementation of the Person object in the 
org.apache.shindig.social.opensocial.jpa.
  */
 @Entity
 @Table(name = "person")
 @NamedQueries(value = {
-    @NamedQuery(name = PersonDb.FINDBY_PERSONID, 
+    @NamedQuery(name = PersonDb.FINDBY_PERSONID,
         query = "select p from PersonDb p where p.id = :id "),
-    @NamedQuery(name = PersonDb.FINDBY_LIKE_PERSONID, 
+    @NamedQuery(name = PersonDb.FINDBY_LIKE_PERSONID,
         query = "select p from PersonDb p where p.id like :id") })
 public class PersonDb implements Person, DbObject {
 
@@ -124,7 +120,7 @@
 
   private static final String TVSHOWS_PROPERTY = "tvshow";
 
-  private static final Map<String, FilterSpecification> FILTER_COLUMNS = 
+  private static final Map<String, FilterSpecification> FILTER_COLUMNS =
     new HashMap<String, FilterSpecification>();
 
   private static final FilterOperation[] ALL_FILTEROPTIONS = new 
FilterOperation[] {
@@ -132,7 +128,7 @@
       FilterOperation.startsWith };
   private static final FilterOperation[] NUMERIC_FILTEROPTIONS = new 
FilterOperation[] {
       FilterOperation.equals, FilterOperation.present };
-  private static final FilterOperation[] EQUALS_FILTEROPTIONS = 
+  private static final FilterOperation[] EQUALS_FILTEROPTIONS =
     new FilterOperation[] { FilterOperation.equals };
 
   static {
@@ -189,7 +185,10 @@
 
   public static final String JPQL_FINDALLPERSON = null;
 
-  public static final String JPQL_FINDPERSON_BY_FRIENDS = null;
+  // TODO The commented out query supports sorting by friend.score but needs a 
join with FriendDb which returns duplicates.
+  // Using 'group by' to avoid duplicates doesn't work in HSQLDB or Derby - 
causes a "Not in aggregate function or group by clause" jdbc exception.
+  // public static final String JPQL_FINDPERSON_BY_FRIENDS = "select p from 
PersonDb p join FriendDb f on p.objectId = f.friend.objectId where p.objectId 
in (select f.friend.objectId from PersonDb p, FriendDb f where p.objectId = 
f.person.objectId and ";
+  public static final String JPQL_FINDPERSON_BY_FRIENDS = "select p from 
PersonDb p where p.objectId in (select f.friend.objectId from PersonDb p, 
FriendDb f where p.objectId = f.person.objectId and ";
 
   public static final Object JPQL_FINDPERSON_BY_GROUP = null;
 
@@ -205,7 +204,7 @@
   private long objectId;
 
   /**
-   * An optimistic locking field
+   * An optimistic locking field.
    */
   @Version
   @Column(name = "version")
@@ -246,14 +245,14 @@
   protected String children;
 
   /**
-   * 
+   *
    */
   @ManyToOne(targetEntity = AddressDb.class, cascade = { PERSIST, MERGE, 
REFRESH })
   @JoinColumn(name = "address_id", referencedColumnName = "oid")
   protected Address currentLocation;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "birthday")
@@ -261,7 +260,7 @@
   protected Date birthday;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "drinker", length = 255)
@@ -275,33 +274,33 @@
   private String displayName;
 
   /**
-   * 
+   *
    */
   @OneToMany(targetEntity = EmailDb.class, mappedBy = "person", cascade = ALL)
   protected List<ListField> emails;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "ethnicity", length = 255)
   protected String ethnicity;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "fashion", length = 255)
   protected String fashion;
 
   /**
-   * 
+   *
    */
   @Transient
   protected List<String> food;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "gender", length = 255)
@@ -311,65 +310,65 @@
   protected Gender gender;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "happiest_when", length = 255)
   protected String happiestWhen;
 
   /**
-   * 
+   *
    */
   @Transient
   protected Boolean hasApp;
 
   /**
-   * 
+   *
    */
   @Transient
   protected List<String> heroes;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "humor", length = 255)
   protected String humor;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "person_id", length = 255)
   protected String id;
 
   /**
-   * 
+   *
    */
   @OneToMany(targetEntity = ImDb.class, mappedBy = "person", cascade = ALL)
   protected List<ListField> ims;
 
   /**
-   * 
+   *
    */
   @Transient
   protected List<String> interests;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "job_interests", length = 255)
   protected String jobInterests;
 
   /**
-   * 
+   *
    */
   @Transient
   protected List<String> languagesSpoken;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "updated")
@@ -377,40 +376,40 @@
   protected Date updated;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "living_arrangement", length = 255)
   protected String livingArrangement;
 
   /**
-   * 
+   *
    */
   @Transient
   // stored as a property, processed on get,set
   protected List<Enum<Enum.LookingFor>> lookingFor;
 
   /**
-   * 
+   *
    */
   @Transient
   protected List<String> movies;
 
   /**
-   * 
+   *
    */
   @Transient
   protected List<String> music;
 
   /**
-   * 
+   *
    */
   @ManyToOne(targetEntity = NameDb.class, cascade = ALL)
   @JoinColumn(name = "name_id", referencedColumnName = "oid")
   protected Name name;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "network_presence", length = 255)
@@ -421,34 +420,34 @@
       NetworkPresence.XA);
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "nickname", length = 255)
   protected String nickname;
 
   /**
-   * 
+   *
    */
   @OneToMany(targetEntity = PersonOrganizationDb.class, mappedBy = "person", 
cascade = { PERSIST,
       MERGE, REFRESH })
   protected List<Organization> organizations;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "pets", length = 255)
   protected String pets;
 
   /**
-   * 
+   *
    */
   @OneToMany(targetEntity = PhoneDb.class, mappedBy = "person", cascade = ALL)
   protected List<ListField> phoneNumbers;
 
   /**
-   * 
+   *
    */
   @OneToMany(targetEntity = PhotoDb.class, mappedBy = "person", cascade = ALL)
   protected List<ListField> photos;
@@ -457,60 +456,60 @@
   protected String politicalViews;
 
   /**
-   * 
+   *
    */
   @Transient
   protected Url profileSong;
 
   /**
-   * 
+   *
    */
   @Transient
   protected Url profileVideo;
 
   /**
-   * 
+   *
    */
   @Transient
   protected List<String> quotes;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "relationship_status", length = 255)
   protected String relationshipStatus;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "religion", length = 255)
   protected String religion;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "romance", length = 255)
   protected String romance;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "scared_of", length = 255)
   protected String scaredOf;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "sexual_orientation", length = 255)
   protected String sexualOrientation;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "smoker", length = 255)
@@ -520,51 +519,51 @@
   protected Enum<Enum.Smoker> smoker;
 
   /**
-   * 
+   *
    */
   @Transient
   protected List<String> sports;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "status", length = 255)
   protected String status;
 
   /**
-   * 
+   *
    */
   @Transient
   protected List<String> tags;
 
   /**
-   * 
+   *
    */
   @Basic
   @Column(name = "utc_offset")
   protected Long utcOffset;
 
   /**
-   * 
+   *
    */
   @Transient
   protected List<String> turnOffs;
 
   /**
-   * 
+   *
    */
   @Transient
   protected List<String> turnOns;
 
   /**
-   * 
+   *
    */
   @Transient
   protected List<String> tvShows;
 
   /**
-   * 
+   *
    */
   @OneToMany(targetEntity = UrlDb.class, mappedBy = "person", cascade = ALL)
   protected List<Url> urls;
@@ -583,8 +582,8 @@
    * to application.oid.
    */
   @ManyToMany(targetEntity = ApplicationDb.class)
-  @JoinTable(name = "person_application", 
-      joinColumns = @JoinColumn(name = "person_id", referencedColumnName = 
"oid"), 
+  @JoinTable(name = "person_application",
+      joinColumns = @JoinColumn(name = "person_id", referencedColumnName = 
"oid"),
       inverseJoinColumns = @JoinColumn(name = "application_id", 
referencedColumnName = "oid"))
   protected List<ApplicationDb> applictions;
 
@@ -1262,7 +1261,7 @@
 
   /*
    * (non-Javadoc)
-   * 
+   *
    * @see org.apache.shindig.social.opensocial.model.Person#getDisplayName()
    */
   public String getDisplayName() {
@@ -1271,7 +1270,7 @@
 
   /*
    * (non-Javadoc)
-   * 
+   *
    * @see 
org.apache.shindig.social.opensocial.model.Person#setDisplayName(java.lang.String)
    */
   public void setDisplayName(String displayName) {
@@ -1282,7 +1281,6 @@
     return FILTER_CAPABILITY;
 
   }
-
   /**
    * @return the applictions
    */

Modified: 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/hibernate/Bootstrap.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/hibernate/Bootstrap.java?rev=732371&r1=732370&r2=732371&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/hibernate/Bootstrap.java
 (original)
+++ 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/hibernate/Bootstrap.java
 Wed Jan  7 07:43:08 2009
@@ -19,22 +19,20 @@
 package org.apache.shindig.social.opensocial.jpa.hibernate;
 
 import com.google.common.collect.Maps;
+import com.google.inject.Inject;
+import com.google.inject.name.Named;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
-import java.util.HashMap;
 import java.util.Map;
 
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.Persistence;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import com.google.inject.Inject;
-import com.google.inject.name.Named;
-
 /**
- * 
+ *
  */
 public class Bootstrap {
 
@@ -68,9 +66,9 @@
     this.minWrite = minWrite;
 
   }
-  
+ 
   public Bootstrap() {
-    
+   
   }
 
   public void init(String unitName) {

Modified: 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/ActivityServiceDb.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/ActivityServiceDb.java?rev=732371&r1=732370&r2=732371&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/ActivityServiceDb.java
 (original)
+++ 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/ActivityServiceDb.java
 Wed Jan  7 07:43:08 2009
@@ -17,28 +17,30 @@
  */
 package org.apache.shindig.social.opensocial.jpa.spi;
 
+import com.google.inject.Inject;
+
 import org.apache.shindig.auth.SecurityToken;
 import org.apache.shindig.common.util.ImmediateFuture;
 import org.apache.shindig.social.ResponseError;
 import org.apache.shindig.social.opensocial.jpa.ActivityDb;
-import org.apache.shindig.social.opensocial.jpa.ApplicationDataMapDb;
+import org.apache.shindig.social.opensocial.jpa.MediaItemDb;
 import org.apache.shindig.social.opensocial.model.Activity;
+import org.apache.shindig.social.opensocial.model.MediaItem;
 import org.apache.shindig.social.opensocial.spi.ActivityService;
 import org.apache.shindig.social.opensocial.spi.GroupId;
 import org.apache.shindig.social.opensocial.spi.RestfulCollection;
 import org.apache.shindig.social.opensocial.spi.SocialSpiException;
 import org.apache.shindig.social.opensocial.spi.UserId;
 
-import com.google.inject.Inject;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.Future;
 
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
 /**
  *
  */
@@ -56,7 +58,54 @@
    */
   public Future<Void> createActivity(UserId userId, GroupId groupId, String 
appId,
       Set<String> fields, Activity activity, SecurityToken token) throws 
SocialSpiException {
-    // TODO Auto-generated method stub
+    String uid = SPIUtils.getUserList(userId, token);
+
+    try {
+      // Map activity into a new ActivityDb instance
+      // TODO Could we use dozer to do this mapping instead, for 
future-proofing reasons?
+      ActivityDb activityDb = new ActivityDb();
+      activityDb.setPostedTime(new Date().getTime());
+      activityDb.setAppId(appId);
+      activityDb.setUserId(uid);
+      activityDb.setId(activity.getId());
+      activityDb.setBodyId(activity.getBodyId());
+      activityDb.setBody(activity.getBody());
+      activityDb.setExternalId(activity.getExternalId());
+      activityDb.setTitleId(activity.getTitleId());
+      activityDb.setTitle(activity.getTitle());
+      activityDb.setUpdated(new Date());
+      activityDb.setPriority(activity.getPriority());
+      activityDb.setStreamFaviconUrl(activity.getStreamFaviconUrl());
+      activityDb.setStreamSourceUrl(activity.getStreamSourceUrl());
+      activityDb.setStreamTitle(activity.getStreamTitle());
+      activityDb.setStreamUrl(activity.getStreamUrl());
+      activityDb.setUrl(activity.getUrl());
+      if(activity.getMediaItems() != null) {
+        List<MediaItem> mediaItems = new ArrayList<MediaItem>();
+        for(MediaItem m : activity.getMediaItems()) {
+          MediaItemDb mediaItem = new MediaItemDb();
+          mediaItem.setMimeType(m.getMimeType());
+          mediaItem.setType(m.getType());
+          mediaItem.setUrl(m.getUrl());
+          mediaItems.add(mediaItem);
+        }
+        activityDb.setMediaItems(mediaItems);
+      }
+      if (activity.getTemplateParams() != null) {
+        activityDb.setTemplateParams(activity.getTemplateParams());
+      }
+
+      // TODO How should transactions be managed? Should samples be using 
warp-persist instead?
+      if (!entityManager.getTransaction().isActive()) {
+        entityManager.getTransaction().begin();
+      }
+      entityManager.persist(activityDb);
+      entityManager.getTransaction().commit();
+
+    } catch (Exception e) {
+      throw new SocialSpiException(ResponseError.INTERNAL_ERROR, "Failed to 
create activity", e);
+    }
+
     return null;
   }
 
@@ -74,8 +123,60 @@
    */
   public Future<RestfulCollection<Activity>> getActivities(Set<UserId> 
userIds, GroupId groupId,
       String appId, Set<String> fields, SecurityToken token) throws 
SocialSpiException {
-    // TODO Auto-generated method stub
-    return null;
+
+    // TODO currently the implementation of this method ignores the fields 
variable. Is this correct?
+
+    List<Activity> plist = null;
+    int lastPos = 1;
+
+    StringBuilder sb = new StringBuilder();
+    // sanitize the list to get the uid's and remove duplicates
+    List<String> paramList = SPIUtils.getUserList(userIds, token);
+    // select the group Id as this will drive the query
+    switch (groupId.getType()) {
+    case all:
+      // select all contacts
+      sb.append("");
+      lastPos = JPQLUtils.addInClause(sb, "p", "id", lastPos, 
paramList.size());
+      break;
+    case friends:
+      // select all friends (subset of contacts)
+      sb.append(ActivityDb.JPQL_FINDACTIVITY_BY_FRIENDS);
+      lastPos = JPQLUtils.addInClause(sb, "p", "id", lastPos, 
paramList.size());
+      sb.append(")) ");
+      // TODO Group by doesn't work in HSQLDB or Derby - causes a "Not in 
aggregate function or group by clause" jdbc exception
+      // sb.append(" group by p ");
+      break;
+    case groupId:
+      // select those in the group
+      // TODO Needs implementing and then have a unit test created to test it.
+      sb.append("");
+      lastPos = JPQLUtils.addInClause(sb, "p", "id", lastPos, 
paramList.size());
+      sb.append(" and g.id = ?").append(lastPos);
+      lastPos++;
+      break;
+    case deleted:
+      // ???
+      break;
+    case self:
+      // select self
+      sb.append(ActivityDb.JPQL_FINDACTIVITY);
+      lastPos = JPQLUtils.addInClause(sb, "a", "userId", lastPos, 
paramList.size());
+      break;
+    default:
+      throw new SocialSpiException(ResponseError.BAD_REQUEST, "Group ID not 
recognized");
+
+    }
+
+    plist = JPQLUtils.getListQuery(entityManager, sb.toString(), paramList, 
null);
+
+    if (plist == null) {
+      plist = new ArrayList<Activity>();
+    }
+
+    // all of the above could equally have been placed into a thread to 
overlay the
+    // db wait times.
+    return ImmediateFuture.newInstance(new RestfulCollection<Activity>(plist));
   }
 
   /* (non-Javadoc)
@@ -99,7 +200,7 @@
     throw new SocialSpiException(ResponseError.BAD_REQUEST,"Cant find 
activity");
   }
 
-  
+
   /**
    * @param userId
    * @param groupId
@@ -113,11 +214,11 @@
     String uid = SPIUtils.getUserList(userId, token);
     q.setParameter(ActivityDb.PARAM_USERID, uid);
     q.setParameter(ActivityDb.PARAM_ACTIVITYID, activityId);
-    q.setFirstResult(1);
+    q.setFirstResult(0);
     q.setMaxResults(1);
     List<?> activities = q.getResultList();
     if ( activities != null && activities.size() > 0 ) {
-      return (Activity) activities.get(1);
+      return (Activity) activities.get(0);
     }
     return null;
   }

Modified: 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/AppDataServiceDb.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/AppDataServiceDb.java?rev=732371&r1=732370&r2=732371&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/AppDataServiceDb.java
 (original)
+++ 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/AppDataServiceDb.java
 Wed Jan  7 07:43:08 2009
@@ -19,6 +19,7 @@
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import com.google.inject.Inject;
 
 import org.apache.shindig.auth.SecurityToken;
 import org.apache.shindig.common.util.ImmediateFuture;
@@ -29,19 +30,16 @@
 import org.apache.shindig.social.opensocial.spi.SocialSpiException;
 import org.apache.shindig.social.opensocial.spi.UserId;
 
-import com.google.inject.Inject;
-
-import javax.persistence.EntityManager;
-
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.Future;
 
+import javax.persistence.EntityManager;
+
 /**
- * 
+ *
  */
 public class AppDataServiceDb implements AppDataService {
 
@@ -61,11 +59,16 @@
     List<ApplicationDataMapDb> dataMaps = getDataMap(userId, groupId, appId, 
token);
     for (ApplicationDataMapDb adm : dataMaps) {
       for (String f : fields) {
-        adm.remove(f);
+        adm.getValues().remove(f);
       }
     }
+     // TODO How should transactions be managed? Should samples be using 
warp-persist instead?
+     if (!entityManager.getTransaction().isActive()) {
+       entityManager.getTransaction().begin();
+     }
 
     entityManager.flush();
+    entityManager.getTransaction().commit();
 
     return ImmediateFuture.newInstance(null);
   }
@@ -112,12 +115,12 @@
     default: // including self
       // userId is the user Id
       sb.append(ApplicationDataMapDb.FINDBY_SELF_GROUP);
-      sb.append(" and am.personId = ?").append(lastParam);
+      sb.append(" am.personId = ?").append(lastParam);
       lastParam++;
       break;
 
     }
-    sb.append(" and a.id = ?").append(lastParam);
+    sb.append(" and am.application.id = ?").append(lastParam);
     lastParam++;
     paramList.add(appId);
     return JPQLUtils.getListQuery(entityManager, sb.toString(), paramList, 
null);
@@ -144,7 +147,8 @@
       break;
     case friends:
       sb.append(ApplicationDataMapDb.FINDBY_FRIENDS_GROUP);
-      lastParam = JPQLUtils.addInClause(sb, "am", "personId", lastParam, 
paramList.size());
+      lastParam = JPQLUtils.addInClause(sb, "p", "id", lastParam, 
paramList.size());
+      sb.append(")");
       // userId translates into all friends
       break;
     case groupId:
@@ -162,7 +166,7 @@
       break;
 
     }
-    sb.append(" and a.id = ?").append(lastParam);
+    sb.append(" and am.application.id = ?").append(lastParam);
     lastParam++;
     paramList.add(appId);
 
@@ -174,13 +178,16 @@
     // only add in the fields
     if (fields == null || fields.size() == 0) {
       for (ApplicationDataMapDb adm : dataMaps) {
-        results.put(adm.getPersonId(), adm);
+        results.put(adm.getPersonId(), adm.getValues());
       }
     } else {
       for (ApplicationDataMapDb adm : dataMaps) {
         Map<String, String> m = Maps.newHashMap();
         for (String f : fields) {
-          m.put(f, adm.get(f));
+          String value = adm.getValues().get(f);
+          if (null != value) {
+            m.put(f, value);
+          }
         }
         results.put(adm.getPersonId(), m);
       }
@@ -198,11 +205,16 @@
     List<ApplicationDataMapDb> dataMaps = getDataMap(userId, groupId, appId, 
token);
     for (ApplicationDataMapDb adm : dataMaps) {
       for (String f : fields) {
-        adm.put(f, values.get(f));
+        adm.getValues().put(f, values.get(f));
       }
     }
 
+    // TODO How should transactions be managed? Should samples be using 
warp-persist instead?
+    if (!entityManager.getTransaction().isActive()) {
+      entityManager.getTransaction().begin();
+    }
     entityManager.flush();
+    entityManager.getTransaction().commit();
 
     return ImmediateFuture.newInstance(null);
   }

Modified: 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/JPQLUtils.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/JPQLUtils.java?rev=732371&r1=732370&r2=732371&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/JPQLUtils.java
 (original)
+++ 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/JPQLUtils.java
 Wed Jan  7 07:43:08 2009
@@ -19,11 +19,11 @@
 
 import org.apache.shindig.social.opensocial.spi.CollectionOptions;
 
+import java.util.List;
+
 import javax.persistence.EntityManager;
 import javax.persistence.Query;
 
-import java.util.List;
-
 /**
  *
  */
@@ -41,7 +41,10 @@
       int nfields) {
     sb.append(alias).append(".").append(inField).append(" in (");
     for (int i = firstField; i < (firstField + nfields); i++) {
-      sb.append(" ?").append(i).append(" ");
+      if (i != firstField) {
+        sb.append(", ");
+      }
+      sb.append("?").append(i);
     }
     sb.append(")");
     return firstField + nfields;
@@ -67,7 +70,7 @@
     }
     if (collectionOptions != null) {
       q.setFirstResult(collectionOptions.getFirst());
-      q.setMaxResults(collectionOptions.getFirst() + 
collectionOptions.getMax());
+      q.setMaxResults(collectionOptions.getMax());
     }
     return (List<T>) q.getResultList();
   }

Modified: 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDb.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDb.java?rev=732371&r1=732370&r2=732371&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDb.java
 (original)
+++ 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/PersonServiceDb.java
 Wed Jan  7 07:43:08 2009
@@ -17,6 +17,9 @@
  */
 package org.apache.shindig.social.opensocial.jpa.spi;
 
+import com.google.common.collect.Lists;
+import com.google.inject.Inject;
+
 import org.apache.shindig.auth.SecurityToken;
 import org.apache.shindig.common.util.ImmediateFuture;
 import org.apache.shindig.social.ResponseError;
@@ -31,17 +34,13 @@
 import org.apache.shindig.social.opensocial.spi.SocialSpiException;
 import org.apache.shindig.social.opensocial.spi.UserId;
 
-import com.google.common.collect.Lists;
-import com.google.inject.Inject;
-
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.Future;
 
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
 /**
  * Implements the PersonService from the SPI binding to the JPA model and 
providing queries to
  * support the OpenSocial implementation.
@@ -94,6 +93,9 @@
       // select all friends (subset of contacts)
       sb.append(PersonDb.JPQL_FINDPERSON_BY_FRIENDS);
       lastPos = JPQLUtils.addInClause(sb, "p", "id", lastPos, 
paramList.size());
+      sb.append(") ");
+      // TODO Group by doesn't work in HSQLDB or Derby - causes a "Not in 
aggregate function or group by clause" jdbc exception
+      // sb.append(" group by p ");
       break;
     case groupId:
       // select those in the group
@@ -115,7 +117,6 @@
 
     }
 
-
     int filterPos = addFilterClause(sb, PersonDb.getFilterCapability(), 
collectionOptions,
         lastPos);
     if (filterPos > 0) {
@@ -128,9 +129,10 @@
     if (plist == null) {
       plist = Lists.newArrayList();
     }
+
     // all of the above could equally have been placed into a thread to 
overlay the
     // db wait times.
-    return ImmediateFuture.newInstance(new RestfulCollection<Person>(plist));
+    return ImmediateFuture.newInstance(new RestfulCollection<Person>(plist, 
collectionOptions.getFirst(), plist.size()));
 
   }
 
@@ -230,10 +232,17 @@
     String sortBy = collectionOptions.getSortBy();
     if (sortBy != null && sortBy.length() > 0) {
       if (PersonService.TOP_FRIENDS_SORT.equals(sortBy)) {
+        // TODO sorting by friend.score doesn't work right now because of 
group by issue (see above TODO)
         // this assumes that the query is a join with the friends store.
         sb.append(" order by f.score ");
       } else {
-        sb.append(" order by p.").append(sortBy);
+        if ("name".equals(sortBy)) {
+          // TODO Is this correct?
+          // If sortBy is name then order by p.name.familyName, 
p.name.givenName.
+          sb.append(" order by p.name.familyName, p.name.givenName ");
+        } else {
+          sb.append(" order by p." + sortBy);
+        }
         switch (collectionOptions.getSortOrder()) {
         case ascending:
           sb.append(" asc ");

Modified: 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/SPIUtils.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/SPIUtils.java?rev=732371&r1=732370&r2=732371&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/SPIUtils.java
 (original)
+++ 
incubator/shindig/trunk/java/samples/src/main/java/org/apache/shindig/social/opensocial/jpa/spi/SPIUtils.java
 Wed Jan  7 07:43:08 2009
@@ -39,6 +39,7 @@
    * @return
    */
   public static List<String> getUserList(Set<UserId> userIds, SecurityToken 
token) {
+    // TODO What's the use of userIdMap?
     HashMap<String, String> userIdMap = Maps.newHashMap();
     List<String> paramList = Lists.newArrayList();
     for (UserId u : userIds) {
@@ -63,7 +64,7 @@
   public static String getUserList(UserId userId, SecurityToken token) {
     return userId.getUserId(token);
   }
-  
+
   public static <T> List<T> toList(Set<T> s) {
     List<T> l = new ArrayList<T>();
     l.addAll(s);

Modified: 
incubator/shindig/trunk/java/samples/src/test/java/org/apache/shindig/social/opensocial/jpa/test/PersonPopulate.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/samples/src/test/java/org/apache/shindig/social/opensocial/jpa/test/PersonPopulate.java?rev=732371&r1=732370&r2=732371&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/samples/src/test/java/org/apache/shindig/social/opensocial/jpa/test/PersonPopulate.java
 (original)
+++ 
incubator/shindig/trunk/java/samples/src/test/java/org/apache/shindig/social/opensocial/jpa/test/PersonPopulate.java
 Wed Jan  7 07:43:08 2009
@@ -45,25 +45,25 @@
 import org.apache.shindig.social.opensocial.model.Enum.LookingFor;
 import org.apache.shindig.social.opensocial.model.Enum.Smoker;
 import org.apache.shindig.social.opensocial.model.Person.Gender;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import javax.persistence.EntityManager;
-import javax.persistence.Query;
-
-import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.List;
 import java.util.Random;
 
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
 public class PersonPopulate {
 
   private EntityManager entityManager;
 
   /**
-   * 
+   *
    */
   public PersonPopulate(EntityManager entityManager) {
     this.entityManager = entityManager;
@@ -152,7 +152,7 @@
     person.setSports(getList("Sports"));
     person.setStatus("Status");
     person.setTags(getList("tags"));
-    
+
     List<ListField> photos = Lists.newArrayList();
     photos.add(getNewPhoto(i));
     photos.add(getNewPhoto(i * 3));
@@ -185,7 +185,7 @@
 
   private Url getNewUrl(int i) {
     String targetUrl = "http://sdfsdfsd.sdfdsf/"; + String.valueOf(i % 33);
-    List<?> l = find(UrlDb.FINDBY_URL, 
+    List<?> l = find(UrlDb.FINDBY_URL,
         new String[] { UrlDb.PARAM_URL }, new Object[] { targetUrl });
     if (l.size() == 0) {
       Url url = new UrlDb();
@@ -209,7 +209,7 @@
     }
     return phone;
   }
-  
+
   private PhotoDb getNewPhoto(int i) {
     String targetPhoto = String.valueOf(i % 33);
     PhotoDb photo = findOne(PhotoDb.FINDBY_PHOTO,
@@ -349,7 +349,7 @@
     }
     return address;
   }
-  
+
   private Address getNewOrganizationAddress(int i) {
     Address address = findOne(AddressDb.FINDBY_POSTCODE, new String[] { 
AddressDb.PARAM_POSTCODE },
         new Object[] { String.valueOf(i % 10) });
@@ -369,7 +369,7 @@
     }
     return address;
   }
-  
+
   private Address getNewPersonAddress(int i) {
     Address address = findOne(AddressDb.FINDBY_POSTCODE, new String[] { 
AddressDb.PARAM_POSTCODE },
         new Object[] { String.valueOf(i % 10) });

Modified: 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java?rev=732371&r1=732370&r2=732371&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java
 Wed Jan  7 07:43:08 2009
@@ -19,7 +19,6 @@
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
-
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
@@ -30,7 +29,6 @@
 import org.apache.shindig.social.core.util.BeanJsonConverter;
 import org.apache.shindig.social.core.util.BeanXStreamAtomConverter;
 import org.apache.shindig.social.core.util.BeanXStreamConverter;
-import org.apache.shindig.social.core.util.xstream.GuiceBeanProvider;
 import org.apache.shindig.social.core.util.xstream.XStream081Configuration;
 import org.apache.shindig.social.opensocial.service.DataServiceServlet;
 import org.apache.shindig.social.opensocial.service.HandlerDispatcher;
@@ -45,8 +43,6 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Vector;
@@ -169,7 +165,7 @@
 
   /**
    * parse entry.content xml into a Map<> struct
-   * 
+   *
    * @param str
    *          input content string
    * @return the map<> of <name, value> pairs from the content xml
@@ -203,7 +199,7 @@
   /**
    * Converts a node which child nodes into a map keyed on element names
    * containing the text inside each child node.
-   * 
+   *
    * @param n
    *          the node to convert.
    * @return a map keyed on element name, containing the contents of each
@@ -230,9 +226,9 @@
    * Converts <entry> <key>k</key> <value> <entry> <key>count</key>
    * <value>val</value> </entry> <entry> <key>lastUpdate</key>
    * <value>val</value> </entry> </value> </entry>
-   * 
+   *
    * To map.get("k").get("count")
-   * 
+   *
    * @param result
    * @return
    */


Reply via email to