You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by wo...@apache.org on 2011/05/17 19:03:55 UTC

svn commit: r1104411 [1/2] - in /shindig/trunk: config/ content/samplecontainer/examples/ActivityStreams/ content/sampledata/ java/social-api/src/main/java/org/apache/shindig/social/core/model/ java/social-api/src/main/java/org/apache/shindig/social/co...

Author: woodser
Date: Tue May 17 17:03:54 2011
New Revision: 1104411

URL: http://svn.apache.org/viewvc?rev=1104411&view=rev
Log:
Committing changes to support Activity Streams 1.0
- updated data model
- updated tests
- updated serialization
- updated sample Activity Streams gadget
- create/update returns ActivityEntry instead of null

Neither arbitrary nor OpenSocial-specific extensions are supported yet.  That's the plan for the next patch.

Added:
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ExtensionImpl.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/Extension.java
Removed:
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/OpenSocialImpl.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/OpenSocial.java
Modified:
    shindig/trunk/config/container.js
    shindig/trunk/content/samplecontainer/examples/ActivityStreams/ActivityStreamsRender.js
    shindig/trunk/content/samplecontainer/examples/ActivityStreams/OpenSocialWrapper.js
    shindig/trunk/content/sampledata/canonicaldb.json
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActivityEntryImpl.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActivityObjectImpl.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomEntry.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/xstream/XStream081Configuration.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityEntry.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityObject.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/MediaLink.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/ActivityStreamService.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/sample/spi/JsonDbOpensocialService.java
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulAtomActivityEntryTest.java
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulJsonActivityEntryTest.java
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlActivityEntryTest.java
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryAtomId.xml
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryAtomIds.xml
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonCreated.json
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonDelete.json
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonGroup.json
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonId.json
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonIds.json
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonUpdated.json
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryXmlId.xml
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryXmlIds.xml
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityStreamsSupportedFields.json
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/ActivityStreamHandlerTest.java
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/sample/spi/JsonDbOpensocialServiceTest.java

Modified: shindig/trunk/config/container.js
URL: http://svn.apache.org/viewvc/shindig/trunk/config/container.js?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/config/container.js (original)
+++ shindig/trunk/config/container.js Tue May 17 17:03:54 2011
@@ -266,8 +266,8 @@
        "activity" : ["appId", "body", "bodyId", "externalId", "id", "mediaItems", "postedTime", "priority", 
                      "streamFaviconUrl", "streamSourceUrl", "streamTitle", "streamUrl", "templateParams", "title",
                      "url", "userId"],
-       "activityEntry" : ["actor", "body", "generator", "icon", "object", "postedTime", "provider", "target", "title",
-                          "updatedTime", "verb"],
+       "activityEntry" : ["actor", "content", "generator", "icon", "id", "object", "published", "provider", "target",
+                          "title", "updated", "url", "verb"],
        "album" : ["id", "thumbnailUrl", "title", "description", "location", "ownerId"],
        "mediaItem" : ["album_id", "created", "description", "duration", "file_size", "id", "language", "last_updated",
                       "location", "mime_type", "num_comments", "num_views", "num_votes", "rating", "start_time",

Modified: shindig/trunk/content/samplecontainer/examples/ActivityStreams/ActivityStreamsRender.js
URL: http://svn.apache.org/viewvc/shindig/trunk/content/samplecontainer/examples/ActivityStreams/ActivityStreamsRender.js?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/content/samplecontainer/examples/ActivityStreams/ActivityStreamsRender.js (original)
+++ shindig/trunk/content/samplecontainer/examples/ActivityStreams/ActivityStreamsRender.js Tue May 17 17:03:54 2011
@@ -117,16 +117,16 @@ function ActivityStreamsRender() {
 	function processActivityEntries(entries) {
 		var html = '';
 		for(idx = 0; idx < entries.length; idx++) {
-			if(entries[idx].object.link && entries[idx].object.link != "null") {
-				html += "<h3><a href='" + entries[idx].object.link + "'>" + entries[idx].title + "</a></h3>";
+			if(entries[idx].object.url && entries[idx].object.url != "null") {
+				html += "<h3><a href='" + entries[idx].object.url + "'>" + entries[idx].title + "</a></h3>";
 			} else {
 				html += "<h3>" + entries[idx].title + "</h3>";
 			}
-			html += "ID: " + entries[idx].object.id + "<br>";
+			html += "ID: " + entries[idx].id + "<br>";
 			html += "Actor: " + entries[idx].actor.displayName + "<br>";
-			html += "Posted: " + entries[idx].postedTime + "<br>";
-			if(entries[idx].body && entries[idx].body != "null") {
-				html += "Body: " + entries[idx].body + "<br>";
+			html += "Posted: " + entries[idx].published + "<br>";
+			if(entries[idx].content && entries[idx].content != "null") {
+				html += "Content: " + entries[idx].content + "<br>";
 			}
 		}
 		return html;

Modified: shindig/trunk/content/samplecontainer/examples/ActivityStreams/OpenSocialWrapper.js
URL: http://svn.apache.org/viewvc/shindig/trunk/content/samplecontainer/examples/ActivityStreams/OpenSocialWrapper.js?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/content/samplecontainer/examples/ActivityStreams/OpenSocialWrapper.js (original)
+++ shindig/trunk/content/samplecontainer/examples/ActivityStreams/OpenSocialWrapper.js Tue May 17 17:03:54 2011
@@ -93,15 +93,15 @@ function OpenSocialWrapper() {
 		osapi.activitystreams.get(params).execute(callback);
 	}
 	
-	this.postActivityEntry = function(title, body, verb, actorId, actorName, objectName, objectSummary,
+	this.postActivityEntry = function(title, content, verb, actorId, actorName, objectName, objectSummary,
 									  objectPermalink, objectType, callback) { 
 		var params = {
 			userId: '@viewer',
 			groupId: '@self',
 			activity: {
-				postedTime: '2010-04-27T06:02:36+0000',
+				published: '2010-04-27T06:02:36+0000',
 				title: title,
-				body: body,
+				content: content,
 				actor: {
 					id: actorId,
 					displayName: actorName
@@ -110,7 +110,7 @@ function OpenSocialWrapper() {
 				object: {
 					id: new	Date().getTime(),
 					displayName: objectName,
-					link: objectPermalink,
+					url: objectPermalink,
 					objectType: objectType,
 					summary: objectSummary
 				}
@@ -123,13 +123,13 @@ function OpenSocialWrapper() {
 		var params = {
 			userId: '@viewer',
 			groupId: '@self',
-			activityEntryId: activityEntryId
+			activityId: activityEntryId
 		}
 		osapi.activitystreams.delete(params).execute(callback);
 	}
 	
 	this.getActivityEntryById = function(activityEntryId, callback) {
-		var params = {activityEntryId: activityEntryId};
+		var params = {activityId: activityEntryId};
 		osapi.activitystreams.get(params).execute(callback);
 	}
 }
\ No newline at end of file

Modified: shindig/trunk/content/sampledata/canonicaldb.json
URL: http://svn.apache.org/viewvc/shindig/trunk/content/sampledata/canonicaldb.json?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/content/sampledata/canonicaldb.json (original)
+++ shindig/trunk/content/sampledata/canonicaldb.json Tue May 17 17:03:54 2011
@@ -351,71 +351,82 @@
 },
 "activityEntries" : {
 	"john.doe": [{
-      "verb": "post",
-      "postedTime": "2011-02-10T15:04:55Z",	
-      "generator": {
-        "url": "http://example.org/activities-app"
-      },
-      "provider": {
-        "url": "http://example.org/activity-stream"
-      },
-      "title": "John Doe posted a new video to his album.",
-      "target": {
-        "url": "http://example.org/album/",
-        "objectType": "http://activitystrea.ms/schema/1.0/photo-album",
-        "id": "tag:example.org,2011:abc123",
-        "displayName": "John's Photo Album",
-        "image": {
-          "url": "http://example.org/album/thumbnail.jpg",
-          "width": 250,
-          "height": 250
-        }
-      },
-      "object" : {
-        "url": "http://example.org/album/my_fluffy_cat.jpg",
-        "objectType": "http://activitystrea.ms/schema/1.0/photo",
-        "id": "object1",
-        "summary": "<body>My activity summary.</body>",
-        "image": {
-          "url": "http://example.org/album/my_fluffy_cat_thumb.jpg",
-          "width": 250,
-          "height": 250
+		"id": "activity1",
+		"title": "John posted a new blog entry",
+	    "published": "2011-02-10T15:04:55Z",
+	    "actor": {
+	      "url": "http://example.org/john",
+	      "objectType" : "person",
+	      "id": "john.doe",
+	      "image": {
+	        "url": "http://example.org/john/image",
+	        "width": 250,
+	        "height": 250
+	      },
+	      "displayName": "John Doe"
+	    },
+	    "verb": "post",
+	    "object" : {
+	      "url": "http://example.org/blog/2011/02/entry",
+	      "id": "object1"
+	    },
+	    "target" : {
+	      "url": "http://example.org/blog/",
+	      "objectType": "blog",
+	      "id": "target1",
+	      "displayName": "John's Blog"
+	    }
+	  }, {
+	  	"id": "activity2",
+        "published": "2011-02-10T15:04:55Z",
+        "generator": {
+          "url": "http://example.org/activities-app"
         },
-        "upstreamDuplicates": ["upstreamId1", "upstreamId2"],
-	    "attachedObjects": [{
-	     "url": "http://example.org/attached1",
-	      "id": "attached1"
-	    }, {
-	      "url": "http://example.org/attached2",
-	      "id": "attached2"
-	    }]
-      },
-      "actor": {
-        "url": "http://example.org/john",
-        "objectType": "person",
-        "id": "john.doe",
-        "image": {
-          "url": "http://example.org/john/image",
-          "width": 250,
-          "height": 250
+        "provider": {
+          "url": "http://example.org/activity-stream"
         },
-        "displayName": "John Doe"
-      },
-      "openSocial" : {}
-    }, {
-		"title": "Super simple ActivityEntry",
-		"actor": {
-			"id": "john.doe",
-			"displayName": "John Doe"
-		},
-		"postedTime": "2010-04-27T06:02:36+0000",
-		"object": {
-			"id": "object2",
-			"displayName": "Super simple ActivityObject",
-			"objectType": "article"
-		},
-		"verb": "post"
-	}]
+        "title": "John posted a new video to his album.",
+        "actor": {
+          "url": "http://example.org/john",
+          "objectType": "person",
+          "id": "john.doe",
+          "image": {
+            "url": "http://example.org/john/image",
+            "width": 250,
+            "height": 250
+          },
+          "displayName": "John Doe"
+        },
+        "verb": "post",
+        "object" : {
+          "url": "http://example.org/album/my_fluffy_cat.jpg",
+          "objectType": "photo",
+          "id": "object2",
+          "summary": "Photo posted",
+          "image": {
+            "url": "http://example.org/album/my_fluffy_cat_thumb.jpg",
+            "width": 250,
+            "height": 250
+          },
+          "upstreamDuplicates" : ["upstream1", "upstream2"],
+          "downstreamDuplicates" : ["downstream1", "downstream2"],
+          "attachments": [
+          	{"id": "attachment1", "objectType": "attachment"},
+          	{"id": "attachment2", "objectType": "attachment"}
+          ]
+        },
+        "target": {
+          "url": "http://example.org/album/",
+          "objectType": "photo-album",
+          "id": "target2",
+          "displayName": "John's Photo Album",
+          "image": {
+            "url": "http://example.org/album/thumbnail.jpg",
+            "width": 250,
+            "height": 250
+          }
+        }
+      }]
 },
 "albums" : {
 	"john.doe": [{

Modified: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActivityEntryImpl.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActivityEntryImpl.java?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActivityEntryImpl.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActivityEntryImpl.java Tue May 17 17:03:54 2011
@@ -20,8 +20,7 @@ package org.apache.shindig.social.core.m
 
 import org.apache.shindig.social.opensocial.model.ActivityEntry;
 import org.apache.shindig.social.opensocial.model.ActivityObject;
-import org.apache.shindig.social.opensocial.model.MediaLink;
-import org.apache.shindig.social.opensocial.model.OpenSocial;
+import org.apache.shindig.social.opensocial.model.Extension;
 
 /**
  * A simple bean implementation of an ActivityStream Entry.
@@ -29,27 +28,27 @@ import org.apache.shindig.social.opensoc
 public class ActivityEntryImpl implements ActivityEntry {
   
   private ActivityObject actor;
-  private String body;
+  private String content;
   private ActivityObject generator;
-  private MediaLink icon;
+  private String icon;
+  private String id;
   private ActivityObject object;
-  private String postedTime;
+  private String published;
   private ActivityObject provider;
   private ActivityObject target;
   private String title;
-  private String updatedTime;
+  private String updated;
+  private String url;
   private String verb;
-  private OpenSocial extensions;
+  private Extension openSocial;
 
   /**
    * Create a new empty ActivityEntry
    */
-  public ActivityEntryImpl() {
-  }
-
-  /** {@inheritDoc} */
+  public ActivityEntryImpl() { }
+  
   public ActivityObject getActor() {
-    return this.actor;
+    return actor;
   }
 
   /** {@inheritDoc} */
@@ -58,18 +57,18 @@ public class ActivityEntryImpl implement
   }
 
   /** {@inheritDoc} */
-  public String getBody() {
-    return this.body;
+  public String getContent() {
+    return content;
   }
 
   /** {@inheritDoc} */
-  public void setBody(String body) {
-    this.body = body;
+  public void setContent(String content) {
+    this.content = content;
   }
 
   /** {@inheritDoc} */
   public ActivityObject getGenerator() {
-    return this.generator;
+    return generator;
   }
 
   /** {@inheritDoc} */
@@ -78,38 +77,48 @@ public class ActivityEntryImpl implement
   }
 
   /** {@inheritDoc} */
-  public MediaLink getIcon() {
-    return this.icon;
+  public String getIcon() {
+    return icon;
   }
 
   /** {@inheritDoc} */
-  public void setIcon(MediaLink icon) {
+  public void setIcon(String icon) {
     this.icon = icon;
   }
 
   /** {@inheritDoc} */
+  public String getId() {
+    return id;
+  }
+
+  /** {@inheritDoc} */
+  public void setId(String id) {
+    this.id = id;
+  }
+
+  /** {@inheritDoc} */
   public ActivityObject getObject() {
-    return this.object;
+    return object;
   }
 
   /** {@inheritDoc} */
   public void setObject(ActivityObject object) {
-    this.object = object; 
+    this.object = object;
   }
 
   /** {@inheritDoc} */
-  public String getPostedTime() {
-    return this.postedTime;
+  public String getPublished() {
+    return published;
   }
 
   /** {@inheritDoc} */
-  public void setPostedTime(String postedTime) {
-    this.postedTime = postedTime;
+  public void setPublished(String published) {
+    this.published = published;
   }
 
   /** {@inheritDoc} */
   public ActivityObject getProvider() {
-    return this.provider;
+    return provider;
   }
 
   /** {@inheritDoc} */
@@ -119,7 +128,7 @@ public class ActivityEntryImpl implement
 
   /** {@inheritDoc} */
   public ActivityObject getTarget() {
-    return this.target;
+    return target;
   }
 
   /** {@inheritDoc} */
@@ -129,7 +138,7 @@ public class ActivityEntryImpl implement
 
   /** {@inheritDoc} */
   public String getTitle() {
-    return this.title;
+    return title;
   }
 
   /** {@inheritDoc} */
@@ -138,18 +147,28 @@ public class ActivityEntryImpl implement
   }
 
   /** {@inheritDoc} */
-  public String getUpdatedTime() {
-    return this.updatedTime;
+  public String getUpdated() {
+    return updated;
+  }
+
+  /** {@inheritDoc} */
+  public void setUpdated(String updated) {
+    this.updated = updated;
+  }
+  
+  /** {@inheritDoc} */
+  public String getUrl() {
+    return url;
   }
 
   /** {@inheritDoc} */
-  public void setUpdatedTime(String updatedTime) {
-    this.updatedTime = updatedTime;
+  public void setUrl(String url) {
+    this.url = url;
   }
 
   /** {@inheritDoc} */
   public String getVerb() {
-    return this.verb;
+    return verb;
   }
 
   /** {@inheritDoc} */
@@ -158,13 +177,12 @@ public class ActivityEntryImpl implement
   }
 
   /** {@inheritDoc} */
-  public OpenSocial getOpenSocial() {
-	  return extensions;
+  public Extension getOpenSocial() {
+    return openSocial;
   }
 
   /** {@inheritDoc} */
-  public void setOpenSocial(OpenSocial extensions) {
-	  this.extensions = extensions;
-
+  public void setOpenSocial(Extension openSocial) {
+    this.openSocial = openSocial;
   }
 }

Modified: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActivityObjectImpl.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActivityObjectImpl.java?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActivityObjectImpl.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActivityObjectImpl.java Tue May 17 17:03:54 2011
@@ -28,66 +28,78 @@ import org.apache.shindig.social.opensoc
  */
 public class ActivityObjectImpl implements ActivityObject {
   
-  private List<ActivityObject> attachedObjects;
+  private List<ActivityObject> attachments;
+  private ActivityObject author;
+  private String content;
   private String displayName;
   private List<String> downstreamDuplicates;
-  private String embedCode;
   private String id;
   private MediaLink image;
   private String objectType;
+  private String published;
   private String summary;
+  private String updated;
   private List<String> upstreamDuplicates;
   private String url;
   
   /**
-   * A simple implementation of an ActivtyObject
+   * Constructs an empty ActivityObject.
    */
-  public ActivityObjectImpl() {
-  }
+  public ActivityObjectImpl() { }
 
   /** {@inheritDoc} */
-  public List<ActivityObject> getAttachedObjects() {
-    return this.attachedObjects;
+  public List<ActivityObject> getAttachments() {
+    return attachments;
   }
 
   /** {@inheritDoc} */
-  public void setAttachedObjects(List<ActivityObject> attachedObjects) {
-    this.attachedObjects = attachedObjects;
+  public void setAttachments(List<ActivityObject> attachments) {
+    this.attachments = attachments;
   }
 
   /** {@inheritDoc} */
-  public String getDisplayName() {
-    return this.displayName;
+  public ActivityObject getAuthor() {
+    return author;
   }
 
   /** {@inheritDoc} */
-  public void setDisplayName(String displayName) {
-    this.displayName = displayName;
+  public void setAuthor(ActivityObject author) {
+    this.author = author;
+  }
+  
+  /** {@inheritDoc} */
+  public String getContent() {
+    return content;
   }
 
   /** {@inheritDoc} */
-  public List<String> getDownstreamDuplicates() {
-    return this.downstreamDuplicates;
+  public void setContent(String content) {
+    this.content = content;
   }
 
   /** {@inheritDoc} */
-  public void setDownstreamDuplicates(List<String> downstreamDuplicates) {
-    this.downstreamDuplicates = downstreamDuplicates;
+  public String getDisplayName() {
+    return displayName;
   }
 
   /** {@inheritDoc} */
-  public String getEmbedCode() {
-    return this.embedCode;
+  public void setDisplayName(String displayName) {
+    this.displayName = displayName;
   }
 
   /** {@inheritDoc} */
-  public void setEmbedCode(String embedCode) {
-    this.embedCode = embedCode;
+  public List<String> getDownstreamDuplicates() {
+    return downstreamDuplicates;
   }
 
   /** {@inheritDoc} */
+  public void setDownstreamDuplicates(List<String> downstreamDuplicates) {
+    this.downstreamDuplicates = downstreamDuplicates;
+  }
+  
+  /** {@inheritDoc} */
   public String getId() {
-    return this.id;
+    return id;
   }
 
   /** {@inheritDoc} */
@@ -97,7 +109,7 @@ public class ActivityObjectImpl implemen
 
   /** {@inheritDoc} */
   public MediaLink getImage() {
-    return this.image;
+    return image;
   }
 
   /** {@inheritDoc} */
@@ -107,37 +119,57 @@ public class ActivityObjectImpl implemen
 
   /** {@inheritDoc} */
   public String getObjectType() {
-    return this.objectType;
+    return objectType;
   }
 
   /** {@inheritDoc} */
   public void setObjectType(String objectType) {
     this.objectType = objectType;
   }
-
+  
   /** {@inheritDoc} */
-  public List<String> getUpstreamDuplicates() {
-    return this.upstreamDuplicates;
+  public String getPublished() {
+    return published;
   }
 
   /** {@inheritDoc} */
-  public void setUpstreamDuplicates(List<String> upstreamDuplicates) {
-    this.upstreamDuplicates = upstreamDuplicates;
+  public void setPublished(String published) {
+    this.published = published;
   }
 
   /** {@inheritDoc} */
   public String getSummary() {
-    return this.summary;
+    return summary;
   }
 
   /** {@inheritDoc} */
   public void setSummary(String summary) {
     this.summary = summary;
   }
+  
+  /** {@inheritDoc} */
+  public String getUpdated() {
+    return updated;
+  }
+
+  /** {@inheritDoc} */
+  public void setUpdated(String updated) {
+    this.updated = updated;
+  }
 
   /** {@inheritDoc} */
+  public List<String> getUpstreamDuplicates() {
+    return upstreamDuplicates;
+  }
+
+  /** {@inheritDoc} */
+  public void setUpstreamDuplicates(List<String> upstreamDuplicates) {
+    this.upstreamDuplicates = upstreamDuplicates;
+  }
+  
+  /** {@inheritDoc} */
   public String getUrl() {
-    return this.url;
+    return url;
   }
 
   /** {@inheritDoc} */

Added: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ExtensionImpl.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ExtensionImpl.java?rev=1104411&view=auto
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ExtensionImpl.java (added)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ExtensionImpl.java Tue May 17 17:03:54 2011
@@ -0,0 +1,10 @@
+package org.apache.shindig.social.core.model;
+
+import org.apache.shindig.social.opensocial.model.Extension;
+
+/**
+ * Extension namespace implementation.
+ */
+public class ExtensionImpl implements Extension {
+
+}

Modified: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomEntry.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomEntry.java?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomEntry.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomEntry.java Tue May 17 17:03:54 2011
@@ -87,15 +87,15 @@ public class AtomEntry {
       updated = activity.getUpdated();
     } else if (o instanceof ActivityEntry) {
       ActivityEntry activity = (ActivityEntry)o;
-      id = activity.getObject().getId();
+      id = activity.getId();
       title = activity.getTitle();
       summary = activity.getObject().getSummary();
       author = new AtomAuthor(activity);
       content = new AtomContent(activity);
       try {
-        updated = new SimpleDateFormat().parse(activity.getPostedTime());
+        updated = new SimpleDateFormat().parse(activity.getPublished());
       } catch (ParseException e) {
-        // TODO: map postedTime to updated field correctly
+        // TODO: map published to updated field correctly
       }
     } else if (oCopy instanceof Entry) {
       Entry<?, ?> e = (Entry<?, ?>) oCopy;

Modified: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/xstream/XStream081Configuration.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/xstream/XStream081Configuration.java?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/xstream/XStream081Configuration.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/xstream/XStream081Configuration.java Tue May 17 17:03:54 2011
@@ -57,7 +57,7 @@ import org.apache.shindig.social.opensoc
 import org.apache.shindig.social.opensocial.model.Message;
 import org.apache.shindig.social.opensocial.model.MessageCollection;
 import org.apache.shindig.social.opensocial.model.Name;
-import org.apache.shindig.social.opensocial.model.OpenSocial;
+import org.apache.shindig.social.opensocial.model.Extension;
 import org.apache.shindig.social.opensocial.model.Organization;
 import org.apache.shindig.social.opensocial.model.Person;
 import org.apache.shindig.social.opensocial.model.Url;
@@ -174,7 +174,7 @@ public class XStream081Configuration imp
         new ClassFieldMapping("organization", Organization.class),
         new ClassFieldMapping("person", Person.class),
         new ClassFieldMapping("url", Url.class),
-        new ClassFieldMapping("openSocial", OpenSocial.class),
+        new ClassFieldMapping("openSocial", Extension.class),
         // this is an example of a class field mapping with context. If
         // ListField is mapped inside an element named emails, replace the element
         // name
@@ -213,7 +213,7 @@ public class XStream081Configuration imp
         new ClassFieldMapping("organization", Organization.class),
         new ClassFieldMapping("person", Person.class),
         new ClassFieldMapping("url", Url.class),
-        new ClassFieldMapping("openSocial", OpenSocial.class),
+        new ClassFieldMapping("openSocial", Extension.class),
         // this is an example of a class field mapping with context. If
         // ListField is mapped inside an element named emails, replace the element
         // name that would have been defiend as fqcn ListField with email
@@ -253,7 +253,7 @@ public class XStream081Configuration imp
         .put("organization", Organization.class)
         .put("person", Person.class)
         .put("url", Url.class)
-        .put("openSocial", OpenSocial.class)
+        .put("openSocial", Extension.class)
         .put("listField", ListField.class).build()
     );
 
@@ -291,8 +291,9 @@ public class XStream081Configuration imp
         new ImplicitCollectionFieldMapping(Message.class, "collectionIds", String.class, "collectionsIds"),
         new ImplicitCollectionFieldMapping(Message.class, "replies", String.class, "replies"),
         
-        new ImplicitCollectionFieldMapping(ActivityObject.class, "downstreamDuplicates", String.class, "downstreamDuplicates"),
-        new ImplicitCollectionFieldMapping(ActivityObject.class, "upstreamDuplicates", String.class, "upstreamDuplicates"),
+        new ImplicitCollectionFieldMapping(ActivityObject.class, "downstreamDuplicates", String.class, "downstreamDuplicate"),
+        new ImplicitCollectionFieldMapping(ActivityObject.class, "upstreamDuplicates", String.class, "upstreamDuplicate"),
+        //new ImplicitCollectionFieldMapping(ActivityObject.class, "attachments", ActivityObject.class, "attachment"),
 
         new ImplicitCollectionFieldMapping(Activity.class, "mediaItems", MediaItem.class, "mediaItems"))
     );

Modified: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityEntry.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityEntry.java?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityEntry.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityEntry.java Tue May 17 17:03:54 2011
@@ -24,32 +24,33 @@ import org.apache.shindig.social.core.mo
 import com.google.inject.ImplementedBy;
 
 /**
- * <p>ActivityEntry interface.</p>
+ * <p>Represents an 'Activity' within the Activity Streams JSON 1.0
+ * specification.  Refer to http://activitystrea.ms/head/json-activity.html</p>
  */
 @ImplementedBy(ActivityEntryImpl.class)
 @Exportablebean
 public interface ActivityEntry {
   
   /**
-   * Fields that represent JSON elements for an activity entry.
+   * Fields that represent the JSON elements.
    */
   public static enum Field {
     ACTOR("actor"),
-    BODY("body"),
+    CONTENT("content"),
     GENERATOR("generator"),
     ICON("icon"),
+    ID("id"),
     OBJECT("object"),
-    POSTED_TIME("postedTime"),
+    PUBLISHED("published"),
     PROVIDER("provider"),
     TARGET("target"),
     TITLE("title"),
-    UPDATED_TIME("updatedTime"),
+    UPDATED("updated"),
+    URL("url"),
     VERB("verb"),
     OPENSOCIAL("openSocial");
     
-    /**
-     * The name of the JSON element.
-     */
+    // The name of the JSON element
     private final String jsonString;
     
     /**
@@ -86,18 +87,18 @@ public interface ActivityEntry {
   void setActor(ActivityObject actor);
 
   /**
-   * <p>getBody</p>
+   * <p>getContent</p>
    *
    * @return a {@link java.lang.String} object.
    */
-  String getBody();
+  String getContent();
 
   /**
-   * <p>setBody</p>
+   * <p>setContent</p>
    *
-   * @param body a {@link java.lang.String} object.
+   * @param content a {@link java.lang.String} object.
    */
-  void setBody(String body);
+  void setContent(String content);
   
   /**
    * <p>getGenerator</p>
@@ -116,16 +117,30 @@ public interface ActivityEntry {
   /**
    * <p>getIcon</p>
    *
-   * @return a {@link org.apache.shindig.social.opensocial.model.MediaLink} object.
+   * @return a {@link java.lang.String} object.
    */
-  MediaLink getIcon();
+  String getIcon();
 
   /**
    * <p>setIcon</p>
    *
-   * @param icon a {@link org.apache.shindig.social.opensocial.model.MediaLink} object.
+   * @param icon a {@link java.lang.String} object.
    */
-  void setIcon(MediaLink icon);
+  void setIcon(String icon);
+  
+  /**
+   * <p>getId</p>
+   *
+   * @return a {@link java.lang.String} object.
+   */
+  String getId();
+
+  /**
+   * <p>setId</p>
+   *
+   * @param id a {@link java.lang.String} object.
+   */
+  void setId(String id);
 
   /**
    * <p>getObject</p>
@@ -142,18 +157,18 @@ public interface ActivityEntry {
   void setObject(ActivityObject object);
 
   /**
-   * <p>getPostedTime</p>
+   * <p>getPublished</p>
    *
    * @return a {@link java.lang.String} object.
    */
-  String getPostedTime();
+  String getPublished();
 
   /**
-   * <p>setPostedTime</p>
+   * <p>setPublished</p>
    *
-   * @param postedTime a {@link java.lang.String} object.
+   * @param published a {@link java.lang.String} object.
    */
-  void setPostedTime(String postedTime);
+  void setPublished(String published);
   
   /**
    * <p>getProvider</p>
@@ -198,18 +213,32 @@ public interface ActivityEntry {
   void setTitle(String title);
   
   /**
-   * <p>getUpdatedTime</p>
+   * <p>getUpdated</p>
+   *
+   * @return a {@link java.lang.String} object.
+   */
+  String getUpdated();
+
+  /**
+   * <p>setUpdated</p>
+   *
+   * @param updated a {@link java.lang.String} object.
+   */
+  void setUpdated(String updated);
+  
+  /**
+   * <p>getUrl</p>
    *
    * @return a {@link java.lang.String} object.
    */
-  String getUpdatedTime();
+  String getUrl();
 
   /**
-   * <p>setUpdatedTime</p>
+   * <p>setUrl</p>
    *
-   * @param postedTime a {@link java.lang.String} object.
+   * @param url a {@link java.lang.String} object.
    */
-  void setUpdatedTime(String updatedTime);
+  void setUrl(String url);
 
   /**
    * <p>getVerb</p>
@@ -228,14 +257,14 @@ public interface ActivityEntry {
   /**
    * <p>getOpenSocial</p>
    * 
-   * @return a {@link org.apache.shindig.social.opensocial.model.OpenSocial} object
+   * @return a {@link org.apache.shindig.social.opensocial.model.Extension} object
    */
-  OpenSocial getOpenSocial();
+  Extension getOpenSocial();
   
   /**
    * <p>setOpenSocial</p>
    * 
-   * @return a {@link org.apache.shindig.social.opensocial.model.OpenSocial} object
+   * @return a {@link org.apache.shindig.social.opensocial.model.Extension} object
    */
-  void setOpenSocial(OpenSocial extensions);
+  void setOpenSocial(Extension opensocial);
 }

Modified: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityObject.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityObject.java?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityObject.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityObject.java Tue May 17 17:03:54 2011
@@ -27,29 +27,35 @@ import com.google.inject.ImplementedBy;
 
 /**
  * A representation of an Activity's object.
+ * 
+ * Note that an Activity's object may contain fields from an Activity when
+ * the objectType is of type 'activity'.  As such, ActivityObject becomes
+ * a superset of Activity.  Refer to the Activity Streams spec.
  */
 @ImplementedBy(ActivityObjectImpl.class)
 @Exportablebean
 public interface ActivityObject {
   
-  /*
-   * Fields that represent JSON elements for an activity entry.
+  /**
+   * Fields that represent the JSON elements.
    */
   public static enum Field {
-    ATTACHED_OBJECTS("attachedObjects"),
+    // Activity's object fields
+    ATTACHMENTS("attachments"),
+    AUTHOR("author"),
+    CONTENT("content"),
     DISPLAY_NAME("displayName"),
     DOWNSTREAM_DUPLICATES("downstreamDuplicates"),
-    EMBED_CODE("embedCode"),
     ID("id"),
     IMAGE("image"),
     OBJECT_TYPE("objectType"),
+    PUBLISHED("published"),
     SUMMARY("summary"),
+    UPDATED("updated"),
     UPSTREAM_DUPLICATES("upstreamDuplicates"),
     URL("url");
     
-    /*
-     * The name of the JSON element.
-     */
+    // The name of the JSON element
     private final String jsonString;
     
     /**
@@ -70,141 +76,186 @@ public interface ActivityObject {
       return jsonString;
     }
   }
-  
+
   /**
-   * Gets the list of Attached Activities for this entry
+   * <p>getAttachments</p>
    *
-   * @return a list of ActivityObjects
+   * @return a list of {@link org.apache.shindig.social.opensocial.model.ActivityObject} object
    */
-  List<ActivityObject> getAttachedObjects();
+  List<ActivityObject> getAttachments();
 
   /**
-   * Sets the list of Attached Activities for this entry
+   * <p>setAttachments</p>
    *
-   * @param attachedObjects a list of ActivityObjects
+   * @param attachments a list of {@link org.apache.shindig.social.opensocial.model.ActivityObject} objects
    */
-  void setAttachedObjects(List<ActivityObject> attachedObjects);
+  void setAttachments(List<ActivityObject> attachments);
 
   /**
-   * @return the human-readable name of the object
+   * <p>getAuthor</p>
+   *
+   * @return a {@link org.apache.shindig.social.opensocial.model.ActivityObject} object
    */
-  String getDisplayName();
+  ActivityObject getAuthor();
 
   /**
-   * Sets the name
-   * @param name a human-readable name
+   * <p>setAuthor</p>
+   *
+   * @param author a {@link org.apache.shindig.social.opensocial.model.ActivityObject} object
    */
-  void setDisplayName(String displayName);
+  void setAuthor(ActivityObject author);
+  
+  /**
+   * <p>getContent</p>
+   *
+   * @return a {@link java.lang.String} object.
+   */
+  String getContent();
 
   /**
-   * Get the list of downstream duplicates.
+   * <p>setContent</p>
    *
-   * @return a list of strings
+   * @param content a {@link java.lang.String} object.
    */
-  List<String> getDownstreamDuplicates();
+  void setContent(String content);
 
   /**
-   * Set the list of downstream duplicates
+   * <p>getDisplayName</p>
    *
-   * @param downstreamDuplicates a list of strings containing duplicate IDs
+   * @return a {@link java.lang.String} object.
    */
-  void setDownstreamDuplicates(List<String> downstreamDuplicates);
+  String getDisplayName();
 
   /**
-   * Returns the object's embedCode property.
-   * 
-   * @return String is the object's embedCode property.
+   * <p>setDisplayName</p>
+   *
+   * @param displayName a {@link java.lang.String} object
    */
-  String getEmbedCode();
-  
+  void setDisplayName(String displayName);
+
   /**
-   * Sets the objet's embedCode property.
-   * 
-   * @param embedCode is the value to set embedCode to
+   * <p>getDownstreamDuplicates</p>
+   *
+   * @return a list of {@link java.lang.String} objects
    */
-  void setEmbedCode(String embedCode);
+  List<String> getDownstreamDuplicates();
 
   /**
-   * Gets the absolute URI that uniquely identifies the object
+   * <p>setDownstreamDuplicates</p>
+   *
+   * @param downstreamDuplicates a list of {@link java.lang.String} objects
+   */
+  void setDownstreamDuplicates(List<String> downstreamDuplicates);
+  
+  /**
+   * <p>getId</p>
    *
-   * @return a non-null string
+   * @return a {@link java.lang.String} object.
    */
   String getId();
 
   /**
-   * Set the absolute URI that uniquely identifies the object
+   * <p>setId</p>
    *
-   * @param id a non-null string
+   * @param id a {@link java.lang.String} object.
    */
   void setId(String id);
 
   /**
-   * Get the link to a representative image.
+   * <p>getImage</p>
    *
-   * @return a {@link org.apache.shindig.extras.as.opensocial.model.MediaLink} object.
+   * @return a {@link org.apache.shindig.extras.as.opensocial.model.MediaLink} object
    */
   MediaLink getImage();
 
   /**
-   * Set the link to a representative image.
+   * <p>setImage</p>
    *
-   * @param image a {@link org.apache.shindig.extras.as.opensocial.model.MediaLink} object.
+   * @param image a {@link org.apache.shindig.extras.as.opensocial.model.MediaLink} object
    */
   void setImage(MediaLink image);
 
   /**
-   * Returns the ActivityObject's object type.
+   * <p>getObjectType</p>
    *
-   * @return String representing the object type
+   * @return a {@link java.lang.String} object
    */
   String getObjectType();
 
   /**
-   * Set's the ActivityObject's object type.
+   * <p>setObjectType</p>
    *
-   * @param objectType is the object type
+   * @param objectType a {@link java.lang.String} object
    */
   void setObjectType(String objectType);
-
+  
   /**
-   * Get the list of upstream duplicates.
+   * <p>getPublished</p>
    *
-   * @return a list of strings
+   * @return a {@link java.lang.String} object.
    */
-  List<String> getUpstreamDuplicates();
+  String getPublished();
 
   /**
-   * Set the list of upstream duplicates.
+   * <p>setPublished</p>
    *
-   * @param upstreamDuplicates a list of strings containing duplicate IDs
+   * @param published a {@link java.lang.String} object.
    */
-  void setUpstreamDuplicates(List<String> upstreamDuplicates);
+  void setPublished(String published);
 
   /**
-   * Gets the human-readable summary for this object.
-   * @return the summary
+   * <p>getSummary</p>
+   *
+   * @return a {@link java.lang.String} object
    */
   String getSummary();
 
   /**
-   * Sets the human-readable summary for this object.
+   * <p>setSummary</p>
    *
-   * @param summary a summary
+   * @param summary a {@link java.lang.String} object
    */
   void setSummary(String summary);
   
+  /**
+   * <p>getUpdated</p>
+   *
+   * @return a {@link java.lang.String} object.
+   */
+  String getUpdated();
+
+  /**
+   * <p>setUpdated</p>
+   *
+   * @param updated a {@link java.lang.String} object.
+   */
+  void setUpdated(String updated);
+
+  /**
+   * <p>getUpstreamDuplicates</p>
+   *
+   * @return a list of {@link java.lang.String} objects
+   */
+  List<String> getUpstreamDuplicates();
+
+  /**
+   * <p>setUpstreamDuplicates</p>
+   *
+   * @param upstreamDuplicates a list of {@link java.lang.String} objects
+   */
+  void setUpstreamDuplicates(List<String> upstreamDuplicates);
   
   /**
-   * Returns the object's URL.
-   * 
-   * @return String is the object's URL
+   * <p>getUrl</p>
+   *
+   * @return a {@link java.lang.String} object.
    */
   String getUrl();
-  
+
   /**
-   * Sets the object's URL.
-   * 
-   * @param url is the value to set the object's URL
+   * <p>setUrl</p>
+   *
+   * @param url a {@link java.lang.String} object.
    */
   void setUrl(String url);
 }

Added: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/Extension.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/Extension.java?rev=1104411&view=auto
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/Extension.java (added)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/Extension.java Tue May 17 17:03:54 2011
@@ -0,0 +1,41 @@
+package org.apache.shindig.social.opensocial.model;
+
+import org.apache.shindig.protocol.model.Exportablebean;
+import org.apache.shindig.social.core.model.ExtensionImpl;
+
+import com.google.inject.ImplementedBy;
+
+/**
+ * A generic class to represent extensions to data models.
+ */
+@ImplementedBy(ExtensionImpl.class)
+@Exportablebean
+public interface Extension {
+	
+	public static enum Field {
+	  ; // No fields to add
+	  
+		/**
+		 * The name of the JSON element.
+		 */
+		private final String jsonString;
+
+		/**
+		 * Constructs the field base for the JSON element.
+		 * 
+		 * @param jsonString the name of the element
+		 */
+		private Field(String jsonString) {
+			this.jsonString = jsonString;
+		}
+
+		/**
+		 * Returns the name of the JSON element.
+		 * 
+		 * @return String the name of the JSON element
+		 */
+		public String toString() {
+			return jsonString;
+		}
+	}
+}

Modified: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/MediaLink.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/MediaLink.java?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/MediaLink.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/MediaLink.java Tue May 17 17:03:54 2011
@@ -38,9 +38,7 @@ public interface MediaLink {
     URL("url"),
     WIDTH("width");
     
-    /**
-     * The name of the JSON element.
-     */
+    // The name of the JSON element
     private final String jsonString;
     
     /**

Modified: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/ActivityStreamService.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/ActivityStreamService.java?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/ActivityStreamService.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/ActivityStreamService.java Tue May 17 17:03:54 2011
@@ -110,7 +110,7 @@ public interface ActivityStreamService {
    * @return a response item containing any errors
    * @throws org.apache.shindig.protocol.ProtocolException if any
    */
-  Future<Void> updateActivityEntry(UserId userId, GroupId groupId, String appId,
+  Future<ActivityEntry> updateActivityEntry(UserId userId, GroupId groupId, String appId,
       Set<String> fields, ActivityEntry activity, String activityId,
       SecurityToken token) throws ProtocolException;
 
@@ -127,6 +127,6 @@ public interface ActivityStreamService {
    * @return a response item containing any errors
    * @throws org.apache.shindig.protocol.ProtocolException if any.
    */
-  Future<Void> createActivityEntry(UserId userId, GroupId groupId, String appId,
+  Future<ActivityEntry> createActivityEntry(UserId userId, GroupId groupId, String appId,
       Set<String> fields, ActivityEntry activity, SecurityToken token) throws ProtocolException;
 }

Modified: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/sample/spi/JsonDbOpensocialService.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/sample/spi/JsonDbOpensocialService.java?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/sample/spi/JsonDbOpensocialService.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/sample/spi/JsonDbOpensocialService.java Tue May 17 17:03:54 2011
@@ -1173,20 +1173,18 @@ public class JsonDbOpensocialService imp
   
   // Are fields really needed here?
   /** {@inheritDoc} */
-  public Future<Void> updateActivityEntry(UserId userId, GroupId groupId, String appId,
+  public Future<ActivityEntry> updateActivityEntry(UserId userId, GroupId groupId, String appId,
         Set<String> fields, ActivityEntry activityEntry, String activityId, SecurityToken token) throws ProtocolException {
     try {
       JSONObject jsonEntry = convertFromActivityEntry(activityEntry, fields);
-      JSONObject jsonEntryObject = jsonEntry.getJSONObject(ActivityEntry.Field.OBJECT.toString());
-      if (!jsonEntryObject.has(ActivityObject.Field.ID.toString())) {
+      if (!jsonEntry.has(ActivityEntry.Field.ID.toString())) {
         if (activityId != null) {
-          jsonEntryObject.put(ActivityObject.Field.ID.toString(), activityId);
+          jsonEntry.put(ActivityEntry.Field.ID.toString(), activityId);
         } else {
-          jsonEntryObject.put(ActivityObject.Field.ID.toString(), System.currentTimeMillis());
+          jsonEntry.put(ActivityEntry.Field.ID.toString(), System.currentTimeMillis());
         }
-        jsonEntry.put(ActivityEntry.Field.OBJECT.toString(), jsonEntryObject);
       }
-      String objectId = jsonEntry.getJSONObject(ActivityEntry.Field.OBJECT.toString()).getString(ActivityObject.Field.ID.toString());
+      activityId = jsonEntry.getString(ActivityEntry.Field.ID.toString());
 
       JSONArray jsonArray;
       if (db.getJSONObject(ACTIVITYSTREAMS_TABLE).has(userId.getUserId(token))) {
@@ -1199,13 +1197,12 @@ public class JsonDbOpensocialService imp
       // Find & replace activity
       for (int i = 0; i < jsonArray.length(); i++) {
         JSONObject entry = jsonArray.getJSONObject(i);
-        if (entry.getJSONObject(ActivityEntry.Field.OBJECT.toString())
-            .getString(ActivityObject.Field.ID.toString()).equals(objectId)) {
+        if (entry.getString(ActivityEntry.Field.ID.toString()).equals(activityId)) {
           jsonArray.put(i, jsonEntry);
-          return ImmediateFuture.newInstance(null);
+          return ImmediateFuture.newInstance(filterFields(jsonEntry, fields, ActivityEntry.class));
         }
       }
-      throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "Activity not found: " + objectId);
+      throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "Activity not found: " + activityId);
     } catch (JSONException je) {
       throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, je.getMessage(), je);
     }
@@ -1213,16 +1210,14 @@ public class JsonDbOpensocialService imp
   
   // Are fields really needed here?
   /** {@inheritDoc} */
-  public Future<Void> createActivityEntry(UserId userId, GroupId groupId, String appId,
+  public Future<ActivityEntry> createActivityEntry(UserId userId, GroupId groupId, String appId,
         Set<String> fields, ActivityEntry activityEntry, SecurityToken token) throws ProtocolException {
     try {
       JSONObject jsonEntry = convertFromActivityEntry(activityEntry, fields);
-      JSONObject jsonEntryObject = jsonEntry.getJSONObject(ActivityEntry.Field.OBJECT.toString());
-      if (!jsonEntryObject.has(ActivityObject.Field.ID.toString())) {
-        jsonEntryObject.put(ActivityObject.Field.ID.toString(), System.currentTimeMillis());
-        jsonEntry.put(ActivityEntry.Field.OBJECT.toString(), jsonEntryObject);
+      if (!jsonEntry.has(ActivityEntry.Field.ID.toString())) {
+        jsonEntry.put(ActivityEntry.Field.ID.toString(), System.currentTimeMillis());
       }
-      String objectId = jsonEntry.getJSONObject(ActivityEntry.Field.OBJECT.toString()).getString(ActivityObject.Field.ID.toString());
+      String activityId = jsonEntry.getString(ActivityEntry.Field.ID.toString());
 
       JSONArray jsonArray;
       if (db.getJSONObject(ACTIVITYSTREAMS_TABLE).has(userId.getUserId(token))) {
@@ -1235,13 +1230,12 @@ public class JsonDbOpensocialService imp
       // Ensure activity does not already exist
       for (int i = 0; i < jsonArray.length(); i++) {
         JSONObject entry = jsonArray.getJSONObject(i);
-        if (entry.getJSONObject(ActivityEntry.Field.OBJECT.toString())
-            .getString(ActivityObject.Field.ID.toString()).equals(objectId)) {
-          throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "Activity already exists: " + objectId);
+        if (entry.getString(ActivityEntry.Field.ID.toString()).equals(activityId)) {
+          throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "Activity already exists: " + activityId);
         }
       }
       jsonArray.put(jsonEntry);
-      return ImmediateFuture.newInstance(null);
+      return ImmediateFuture.newInstance(filterFields(jsonEntry, fields, ActivityEntry.class));
     } catch (JSONException je) {
       throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, je.getMessage(), je);
     }
@@ -1260,19 +1254,13 @@ public class JsonDbOpensocialService imp
           JSONArray newList = new JSONArray();
           for (int i = 0; i < activityEntries.length(); i++) {
             JSONObject activityEntry = activityEntries.getJSONObject(i);
-            if (!activityIds.contains(activityEntry.getJSONObject(ActivityEntry.Field.OBJECT.toString()).getString(ActivityObject.Field.ID.toString()))) {
+            if (!activityIds.contains(activityEntry.getString(ActivityEntry.Field.ID.toString()))) {
               newList.put(activityEntry);
             }
           }
           db.getJSONObject(ACTIVITYSTREAMS_TABLE).put(user, newList);
-          // TODO: This seems very odd that we return no useful response in this
-          // case
-          // There is no way to represent not-found
-          // if (found) { ??
-          // }
         }
       }
-      // What is the appropriate response here??
       return ImmediateFuture.newInstance(null);
     } catch (JSONException je) {
       throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, je.getMessage(), je);
@@ -1289,10 +1277,7 @@ public class JsonDbOpensocialService imp
         JSONArray activityEntries = db.getJSONObject(ACTIVITYSTREAMS_TABLE).getJSONArray(user);
         for (int i = 0; i < activityEntries.length(); i++) {
           JSONObject activityEntry = activityEntries.getJSONObject(i);
-          JSONObject actor = activityEntry.getJSONObject(ActivityEntry.Field.ACTOR.toString());
-          String actorId = actor.get(ActivityObject.Field.ID.toString()).toString();
-          if (actorId.equals(user)
-              && activityEntry.getJSONObject(ActivityEntry.Field.OBJECT.toString()).get(ActivityObject.Field.ID.toString()).toString().equals(activityId)) {
+          if (activityEntry.getString(ActivityEntry.Field.ID.toString()).equals(activityId)) {
             return ImmediateFuture.newInstance(filterFields(activityEntry, fields, ActivityEntry.class));
           }
         }
@@ -1342,9 +1327,7 @@ public class JsonDbOpensocialService imp
           boolean found = false;
           for (int i = 0; i < activityEntries.length(); i++) {
             JSONObject activityEntry = activityEntries.getJSONObject(i);
-            String actorId = activityEntry.getJSONObject(ActivityEntry.Field.ACTOR.toString()).getString(ActivityObject.Field.ID.toString());
-            String objectId = activityEntry.getJSONObject(ActivityEntry.Field.OBJECT.toString()).getString(ActivityObject.Field.ID.toString());
-            if (actorId.equals(user) && objectId.equals(activityId)) {
+            if (activityEntry.getString(ActivityEntry.Field.ID.toString()).equals(activityId)) {
               result.add(filterFields(activityEntry, fields, ActivityEntry.class));
               found = true;
               break;

Modified: shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulAtomActivityEntryTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulAtomActivityEntryTest.java?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulAtomActivityEntryTest.java (original)
+++ shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulAtomActivityEntryTest.java Tue May 17 17:03:54 2011
@@ -29,14 +29,14 @@ public class RestfulAtomActivityEntryTes
   
   @Test
   public void testGetActivityEntryAtomById() throws Exception {
-    String resp = getResponse("/activitystreams/john.doe/@self/1/object1", "GET", "atom", ContentTypes.OUTPUT_ATOM_CONTENT_TYPE);
+    String resp = getResponse("/activitystreams/john.doe/@self/1/activity2", "GET", "atom", ContentTypes.OUTPUT_ATOM_CONTENT_TYPE);
     String expected = TestUtils.loadTestFixture(FIXTURE_LOC + "ActivityEntryAtomId.xml");
     assertTrue(TestUtils.xmlsEqual(expected, resp));
   }
   
   @Test
   public void testGetActivityEntryAtomByIds() throws Exception {
-    String resp = getResponse("/activitystreams/john.doe/@self/1/object1,object2", "GET", "atom", ContentTypes.OUTPUT_ATOM_CONTENT_TYPE);
+    String resp = getResponse("/activitystreams/john.doe/@self/1/activity1,activity2", "GET", "atom", ContentTypes.OUTPUT_ATOM_CONTENT_TYPE);
     String expected = TestUtils.loadTestFixture(FIXTURE_LOC + "ActivityEntryAtomIds.xml");
     assertTrue(TestUtils.xmlsEqual(expected, resp));
   }

Modified: shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulJsonActivityEntryTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulJsonActivityEntryTest.java?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulJsonActivityEntryTest.java (original)
+++ shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulJsonActivityEntryTest.java Tue May 17 17:03:54 2011
@@ -33,14 +33,14 @@ public class RestfulJsonActivityEntryTes
   
   @Test
   public void testGetActivityEntryJsonById() throws Exception {
-    String resp = getResponse("/activitystreams/john.doe/@self/1/object1", "GET", null, ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
+    String resp = getResponse("/activitystreams/john.doe/@self/1/activity1", "GET", null, ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
     String expected = TestUtils.loadTestFixture(FIXTURE_LOC + "ActivityEntryJsonId.json");
     assertTrue(TestUtils.jsonsEqual(expected, resp));
   }
   
   @Test
   public void testGetActivityEntryJsonByIds() throws Exception {
-    String resp = getResponse("/activitystreams/john.doe/@self/1/object1,object2", "GET", null, ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
+    String resp = getResponse("/activitystreams/john.doe/@self/1/activity1,activity2", "GET", null, ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
     String expected = TestUtils.loadTestFixture(FIXTURE_LOC + "ActivityEntryJsonIds.json");
     assertTrue(TestUtils.jsonsEqual(expected, resp));
   }
@@ -60,8 +60,8 @@ public class RestfulJsonActivityEntryTes
   
   @Test
   public void testDeleteActivityEntryJson() throws Exception {
-    // First delete object1, then retrieve & test
-    getResponse("/activitystreams/john.doe/@self/1/object1", "DELETE", null, ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
+    // First delete activity1, then retrieve & test
+    getResponse("/activitystreams/john.doe/@self/1/activity1", "DELETE", null, ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
     String resp = getResponse("/activitystreams/john.doe/@self/1", "GET", null, ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
     String expected = TestUtils.loadTestFixture(FIXTURE_LOC + "ActivityEntryJsonDelete.json");;
     assertTrue(TestUtils.jsonsEqual(expected, resp));
@@ -69,26 +69,30 @@ public class RestfulJsonActivityEntryTes
   
   @Test
   public void testUpdateActivityEntryJson() throws Exception {
+    String expected = TestUtils.loadTestFixture(FIXTURE_LOC + "ActivityEntryJsonUpdated.json");
+    
     // Update activity
-    String postData = "{title : 'Super Updated Activity', actor: {id: 'john.doe'}, object : {id: 'object2'}}";
-    getResponse("/activitystreams/john.doe/@self/1/object2", "PUT", postData, null, ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
+    String postData = "{id: 'activity2', title : 'Super Updated Activity', actor: {id: 'john.doe'}, object : {id: 'object2'}}";
+    String putResp = getResponse("/activitystreams/john.doe/@self/1/activity2", "PUT", postData, null, ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
+    assertTrue(TestUtils.jsonsEqual(expected, putResp));
     
     // Retrieve updated activity & test
-    String resp = getResponse("/activitystreams/john.doe/@self/1", "GET", null, ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
-    String expected = TestUtils.loadTestFixture(FIXTURE_LOC + "ActivityEntryJsonUpdated.json");;
-    assertTrue(TestUtils.jsonsEqual(expected, resp));
+    String getResp = getResponse("/activitystreams/john.doe/@self/1/activity2", "GET", null, ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
+    assertTrue(TestUtils.jsonsEqual(expected, getResp));
   }
   
   @Test
   public void testCreateActivityEntryJson() throws Exception {
+    String expected = TestUtils.loadTestFixture(FIXTURE_LOC + "ActivityEntryJsonCreated.json");;
+    
     // Create activity
-    String postData = "{title : 'Super Created Activity', actor: {id: 'john.doe'}, object : {id: 'objectCreated'}}";
-    getResponse("/activitystreams/john.doe/@self/1", "POST", postData, null, ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
+    String postData = "{id: 'activityCreated', title : 'Super Created Activity', actor: {id: 'john.doe'}, object : {id: 'objectCreated'}}";
+    String postResp = getResponse("/activitystreams/john.doe/@self/1", "POST", postData, null, ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
+    assertTrue(TestUtils.jsonsEqual(expected, postResp));
     
     // Retrieve created activity & test
-    String resp = getResponse("/activitystreams/john.doe/@self/1/objectCreated", "GET", null, ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
-    String expected = TestUtils.loadTestFixture(FIXTURE_LOC + "ActivityEntryJsonCreated.json");;
-    assertTrue(TestUtils.jsonsEqual(expected, resp));
+    String getResp = getResponse("/activitystreams/john.doe/@self/1/activityCreated", "GET", null, ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
+    assertTrue(TestUtils.jsonsEqual(expected, getResp));
   }
   
   @Test

Modified: shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlActivityEntryTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlActivityEntryTest.java?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlActivityEntryTest.java (original)
+++ shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulXmlActivityEntryTest.java Tue May 17 17:03:54 2011
@@ -29,14 +29,14 @@ public class RestfulXmlActivityEntryTest
   
   @Test
   public void testGetActivityEntryXmlById() throws Exception {
-    String resp = getResponse("/activitystreams/john.doe/@self/1/object1", "GET", "xml", ContentTypes.OUTPUT_XML_CONTENT_TYPE);
+    String resp = getResponse("/activitystreams/john.doe/@self/1/activity2", "GET", "xml", ContentTypes.OUTPUT_XML_CONTENT_TYPE);
     String expected = TestUtils.loadTestFixture(FIXTURE_LOC + "ActivityEntryXmlId.xml");
     assertTrue(TestUtils.xmlsEqual(expected, resp));
   }
   
   @Test
   public void testGetActivityEntryXmlByIds() throws Exception {
-    String resp = getResponse("/activitystreams/john.doe/@self/1/object1,object2", "GET", "xml", ContentTypes.OUTPUT_XML_CONTENT_TYPE);
+    String resp = getResponse("/activitystreams/john.doe/@self/1/activity1,activity2", "GET", "xml", ContentTypes.OUTPUT_XML_CONTENT_TYPE);
     String expected = TestUtils.loadTestFixture(FIXTURE_LOC + "ActivityEntryXmlIds.xml");
     assertTrue(TestUtils.xmlsEqual(expected, resp));
   }

Modified: shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryAtomId.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryAtomId.xml?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryAtomId.xml (original)
+++ shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryAtomId.xml Tue May 17 17:03:54 2011
@@ -1,8 +1,8 @@
 <feed xmlns="http://www.w3.org/2005/Atom" xmlns:osearch="http://a9.com/-/spec/opensearch/1.1">
   <entry>
-    <id>object1</id>
-    <title>John Doe posted a new video to his album.</title>
-    <summary>&lt;body&gt;My activity summary.&lt;/body&gt;</summary>
+    <id>activity2</id>
+    <title>John posted a new video to his album.</title>
+    <summary>Photo posted</summary>
     <author>
       <uri>john.doe</uri>
       <name xmlns="http://ns.opensocial.org/2008/opensocial">John Doe</name>
@@ -23,45 +23,48 @@
         <generator>
           <url>http://example.org/activities-app</url>
         </generator>
+        <id>activity2</id>
         <object>
-          <attachedObjects>
+          <attachments>
             <object>
-              <id>attached1</id>
-              <url>http://example.org/attached1</url>
+              <id>attachment1</id>
+              <objectType>attachment</objectType>
             </object>
             <object>
-              <id>attached2</id>
-              <url>http://example.org/attached2</url>
+              <id>attachment2</id>
+              <objectType>attachment</objectType>
             </object>
-          </attachedObjects>
-          <id>object1</id>
+          </attachments>
+          <downstreamDuplicate>downstream1</downstreamDuplicate>
+          <downstreamDuplicate>downstream2</downstreamDuplicate>
+          <id>object2</id>
           <image>
             <height>250</height>
             <url>http://example.org/album/my_fluffy_cat_thumb.jpg</url>
             <width>250</width>
           </image>
-          <objectType>http://activitystrea.ms/schema/1.0/photo</objectType>
-          <summary>&lt;body&gt;My activity summary.&lt;/body&gt;</summary>
-          <upstreamDuplicates>upstreamId1</upstreamDuplicates>
-          <upstreamDuplicates>upstreamId2</upstreamDuplicates>
+          <objectType>photo</objectType>
+          <summary>Photo posted</summary>
+          <upstreamDuplicate>upstream1</upstreamDuplicate>
+          <upstreamDuplicate>upstream2</upstreamDuplicate>
           <url>http://example.org/album/my_fluffy_cat.jpg</url>
         </object>
-        <postedTime>2011-02-10T15:04:55Z</postedTime>
         <provider>
           <url>http://example.org/activity-stream</url>
         </provider>
+        <published>2011-02-10T15:04:55Z</published>
         <target>
           <displayName>John&apos;s Photo Album</displayName>
-          <id>tag:example.org,2011:abc123</id>
+          <id>target2</id>
           <image>
             <height>250</height>
             <url>http://example.org/album/thumbnail.jpg</url>
             <width>250</width>
           </image>
-          <objectType>http://activitystrea.ms/schema/1.0/photo-album</objectType>
+          <objectType>photo-album</objectType>
           <url>http://example.org/album/</url>
         </target>
-        <title>John Doe posted a new video to his album.</title>
+        <title>John posted a new video to his album.</title>
         <verb>post</verb>
       </activityEntry>
     </content>

Modified: shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryAtomIds.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryAtomIds.xml?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryAtomIds.xml (original)
+++ shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryAtomIds.xml Tue May 17 17:03:54 2011
@@ -1,8 +1,44 @@
 <feed xmlns="http://www.w3.org/2005/Atom" xmlns:osearch="http://a9.com/-/spec/opensearch/1.1">
   <entry>
-    <id>object1</id>
-    <title>John Doe posted a new video to his album.</title>
-    <summary>&lt;body&gt;My activity summary.&lt;/body&gt;</summary>
+    <id>activity1</id>
+    <title>John posted a new blog entry</title>
+    <author>
+      <uri>john.doe</uri>
+      <name xmlns="http://ns.opensocial.org/2008/opensocial">John Doe</name>
+    </author>
+    <content type="application/xml">
+      <activityEntry xmlns="http://ns.opensocial.org/2008/opensocial">
+        <actor>
+          <displayName>John Doe</displayName>
+          <id>john.doe</id>
+          <image>
+            <height>250</height>
+            <url>http://example.org/john/image</url>
+            <width>250</width>
+          </image>
+          <objectType>person</objectType>
+          <url>http://example.org/john</url>
+        </actor>
+        <id>activity1</id>
+        <object>
+          <id>object1</id>
+          <url>http://example.org/blog/2011/02/entry</url>
+        </object>
+        <published>2011-02-10T15:04:55Z</published>
+        <target>
+          <displayName>John&apos;s Blog</displayName>
+          <id>target1</id>
+          <objectType>blog</objectType>
+          <url>http://example.org/blog/</url>
+        </target>
+        <verb>post</verb>
+      </activityEntry>
+    </content>
+  </entry>
+  <entry>
+    <id>activity2</id>
+    <title>John posted a new video to his album.</title>
+    <summary>Photo posted</summary>
     <author>
       <uri>john.doe</uri>
       <name xmlns="http://ns.opensocial.org/2008/opensocial">John Doe</name>
@@ -23,69 +59,48 @@
         <generator>
           <url>http://example.org/activities-app</url>
         </generator>
+        <id>activity2</id>
         <object>
-          <attachedObjects>
+          <attachments>
             <object>
-              <id>attached1</id>
-              <url>http://example.org/attached1</url>
+              <id>attachment1</id>
+              <objectType>attachment</objectType>
             </object>
             <object>
-              <id>attached2</id>
-              <url>http://example.org/attached2</url>
+              <id>attachment2</id>
+              <objectType>attachment</objectType>
             </object>
-          </attachedObjects>
-          <id>object1</id>
+          </attachments>
+          <downstreamDuplicate>downstream1</downstreamDuplicate>
+          <downstreamDuplicate>downstream2</downstreamDuplicate>
+          <id>object2</id>
           <image>
             <height>250</height>
             <url>http://example.org/album/my_fluffy_cat_thumb.jpg</url>
             <width>250</width>
           </image>
-          <objectType>http://activitystrea.ms/schema/1.0/photo</objectType>
-          <summary>&lt;body&gt;My activity summary.&lt;/body&gt;</summary>
-          <upstreamDuplicates>upstreamId1</upstreamDuplicates>
-          <upstreamDuplicates>upstreamId2</upstreamDuplicates>
+          <objectType>photo</objectType>
+          <summary>Photo posted</summary>
+          <upstreamDuplicate>upstream1</upstreamDuplicate>
+          <upstreamDuplicate>upstream2</upstreamDuplicate>
           <url>http://example.org/album/my_fluffy_cat.jpg</url>
         </object>
-        <postedTime>2011-02-10T15:04:55Z</postedTime>
         <provider>
           <url>http://example.org/activity-stream</url>
         </provider>
+        <published>2011-02-10T15:04:55Z</published>
         <target>
           <displayName>John&apos;s Photo Album</displayName>
-          <id>tag:example.org,2011:abc123</id>
+          <id>target2</id>
           <image>
             <height>250</height>
             <url>http://example.org/album/thumbnail.jpg</url>
             <width>250</width>
           </image>
-          <objectType>http://activitystrea.ms/schema/1.0/photo-album</objectType>
+          <objectType>photo-album</objectType>
           <url>http://example.org/album/</url>
         </target>
-        <title>John Doe posted a new video to his album.</title>
-        <verb>post</verb>
-      </activityEntry>
-    </content>
-  </entry>
-  <entry>
-    <id>object2</id>
-    <title>Super simple ActivityEntry</title>
-    <author>
-      <uri>john.doe</uri>
-      <name xmlns="http://ns.opensocial.org/2008/opensocial">John Doe</name>
-    </author>
-    <content type="application/xml">
-      <activityEntry xmlns="http://ns.opensocial.org/2008/opensocial">
-        <actor>
-          <displayName>John Doe</displayName>
-          <id>john.doe</id>
-        </actor>
-        <object>
-          <displayName>Super simple ActivityObject</displayName>
-          <id>object2</id>
-          <objectType>article</objectType>
-        </object>
-        <postedTime>2010-04-27T06:02:36+0000</postedTime>
-        <title>Super simple ActivityEntry</title>
+        <title>John posted a new video to his album.</title>
         <verb>post</verb>
       </activityEntry>
     </content>

Modified: shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonCreated.json
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonCreated.json?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonCreated.json (original)
+++ shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonCreated.json Tue May 17 17:03:54 2011
@@ -1,5 +1,6 @@
 {
    "entry": {
+   	 "id":"activityCreated",
      "title":"Super Created Activity",
      "actor":{
         "id":"john.doe",

Modified: shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonDelete.json
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonDelete.json?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonDelete.json (original)
+++ shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonDelete.json Tue May 17 17:03:54 2011
@@ -2,19 +2,56 @@
    "startIndex":0,
    "totalResults":1,
    "entry":[
-      {
-         "title":"Super simple ActivityEntry",
-         "verb":"post",
-         "postedTime":"2010-04-27T06:02:36+0000",
-         "actor":{
-            "id":"john.doe",
-            "displayName":"John Doe"
-         },
-         "object":{
-            "id":"object2",
-            "displayName":"Super simple ActivityObject",
-            "objectType":"article"
-         }
+{
+	  	"id": "activity2",
+        "published": "2011-02-10T15:04:55Z",
+        "generator": {
+          "url": "http://example.org/activities-app"
+        },
+        "provider": {
+          "url": "http://example.org/activity-stream"
+        },
+        "title": "John posted a new video to his album.",
+        "actor": {
+          "url": "http://example.org/john",
+          "objectType": "person",
+          "id": "john.doe",
+          "image": {
+            "url": "http://example.org/john/image",
+            "width": 250,
+            "height": 250
+          },
+          "displayName": "John Doe"
+        },
+        "verb": "post",
+        "object" : {
+          "url": "http://example.org/album/my_fluffy_cat.jpg",
+          "objectType": "photo",
+          "id": "object2",
+          "summary": "Photo posted",
+          "image": {
+            "url": "http://example.org/album/my_fluffy_cat_thumb.jpg",
+            "width": 250,
+            "height": 250
+          },
+          "upstreamDuplicates" : ["upstream1", "upstream2"],
+          "downstreamDuplicates" : ["downstream1", "downstream2"],
+          "attachments": [
+          	{"id": "attachment1", "objectType": "attachment"},
+          	{"id": "attachment2", "objectType": "attachment"}
+          ]
+        },
+        "target": {
+          "url": "http://example.org/album/",
+          "objectType": "photo-album",
+          "id": "target2",
+          "displayName": "John's Photo Album",
+          "image": {
+            "url": "http://example.org/album/thumbnail.jpg",
+            "width": 250,
+            "height": 250
+          }
+        }
       }
    ],
    "itemsPerPage":1

Modified: shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonGroup.json
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonGroup.json?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonGroup.json (original)
+++ shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonGroup.json Tue May 17 17:03:54 2011
@@ -3,77 +3,81 @@
    "totalResults":2,
    "entry":[
       {
-         "title":"John Doe posted a new video to his album.",
-         "verb":"post",
-         "target":{
-            "id":"tag:example.org,2011:abc123",
-            "image":{
-               "height":250,
-               "width":250,
-               "url":"http://example.org/album/thumbnail.jpg"
-            },
-            "displayName":"John's Photo Album",
-            "objectType":"http://activitystrea.ms/schema/1.0/photo-album",
-            "url":"http://example.org/album/"
-         },
-         "generator":{
-            "url":"http://example.org/activities-app"
-         },
-         "postedTime":"2011-02-10T15:04:55Z",
-         "provider":{
-            "url":"http://example.org/activity-stream"
-         },
-         "actor":{
-            "id":"john.doe",
-            "image":{
-               "height":250,
-               "width":250,
-               "url":"http://example.org/john/image"
-            },
-            "displayName":"John Doe",
-            "objectType":"person",
-            "url":"http://example.org/john"
-         },
-         "object":{
-         	"summary": "<body>My activity summary.</body>",
-            "upstreamDuplicates":[
-               "upstreamId1",
-               "upstreamId2"
-            ],
-            "id":"object1",
-            "image":{
-               "height":250,
-               "width":250,
-               "url":"http://example.org/album/my_fluffy_cat_thumb.jpg"
-            },
-            "objectType":"http://activitystrea.ms/schema/1.0/photo",
-            "url":"http://example.org/album/my_fluffy_cat.jpg",
-            "attachedObjects":[
-               {
-                  "id":"attached1",
-                  "url":"http://example.org/attached1"
-               },
-               {
-                  "id":"attached2",
-                  "url":"http://example.org/attached2"
-               }
-            ]
-         },
-         "openSocial":{}
-      },
-      {
-         "title":"Super simple ActivityEntry",
-         "verb":"post",
-         "postedTime":"2010-04-27T06:02:36+0000",
-         "actor":{
-            "id":"john.doe",
-            "displayName":"John Doe"
-         },
-         "object":{
-            "id":"object2",
-            "displayName":"Super simple ActivityObject",
-            "objectType":"article"
-         }
+		"id": "activity1",
+		"title": "John posted a new blog entry",
+	    "published": "2011-02-10T15:04:55Z",
+	    "actor": {
+	      "url": "http://example.org/john",
+	      "objectType" : "person",
+	      "id": "john.doe",
+	      "image": {
+	        "url": "http://example.org/john/image",
+	        "width": 250,
+	        "height": 250
+	      },
+	      "displayName": "John Doe"
+	    },
+	    "verb": "post",
+	    "object" : {
+	      "url": "http://example.org/blog/2011/02/entry",
+	      "id": "object1"
+	    },
+	    "target" : {
+	      "url": "http://example.org/blog/",
+	      "objectType": "blog",
+	      "id": "target1",
+	      "displayName": "John's Blog"
+	    }
+	  }, {
+	  	"id": "activity2",
+        "published": "2011-02-10T15:04:55Z",
+        "generator": {
+          "url": "http://example.org/activities-app"
+        },
+        "provider": {
+          "url": "http://example.org/activity-stream"
+        },
+        "title": "John posted a new video to his album.",
+        "actor": {
+          "url": "http://example.org/john",
+          "objectType": "person",
+          "id": "john.doe",
+          "image": {
+            "url": "http://example.org/john/image",
+            "width": 250,
+            "height": 250
+          },
+          "displayName": "John Doe"
+        },
+        "verb": "post",
+        "object" : {
+          "url": "http://example.org/album/my_fluffy_cat.jpg",
+          "objectType": "photo",
+          "id": "object2",
+          "summary": "Photo posted",
+          "image": {
+            "url": "http://example.org/album/my_fluffy_cat_thumb.jpg",
+            "width": 250,
+            "height": 250
+          },
+          "upstreamDuplicates" : ["upstream1", "upstream2"],
+          "downstreamDuplicates" : ["downstream1", "downstream2"],
+          "attachments": [
+          	{"id": "attachment1", "objectType": "attachment"},
+          	{"id": "attachment2", "objectType": "attachment"}
+          ]
+        },
+        "target": {
+          "url": "http://example.org/album/",
+          "objectType": "photo-album",
+          "id": "target2",
+          "displayName": "John's Photo Album",
+          "image": {
+            "url": "http://example.org/album/thumbnail.jpg",
+            "width": 250,
+            "height": 250
+          }
+        }
       }
    ],
    "itemsPerPage":2

Modified: shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonId.json
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonId.json?rev=1104411&r1=1104410&r2=1104411&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonId.json (original)
+++ shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/fixtures/ActivityEntryJsonId.json Tue May 17 17:03:54 2011
@@ -1,61 +1,29 @@
 {
    "entry":{
-      "verb":"post",
-      "postedTime":"2011-02-10T15:04:55Z",
-      "generator":{
-         "url":"http://example.org/activities-app"
-      },
-      "provider":{
-         "url":"http://example.org/activity-stream"
-      },
-      "title":"John Doe posted a new video to his album.",
-      "target":{
-         "url":"http://example.org/album/",
-         "objectType":"http://activitystrea.ms/schema/1.0/photo-album",
-         "id":"tag:example.org,2011:abc123",
-         "displayName":"John's Photo Album",
-         "image":{
-            "url":"http://example.org/album/thumbnail.jpg",
-            "width":250,
-            "height":250
-         }
-      },
-      "object":{
-         "url":"http://example.org/album/my_fluffy_cat.jpg",
-         "objectType":"http://activitystrea.ms/schema/1.0/photo",
-         "id":"object1",
-         "summary": "<body>My activity summary.</body>",
-         "image":{
-            "url":"http://example.org/album/my_fluffy_cat_thumb.jpg",
-            "width":250,
-            "height":250
-         },
-         "upstreamDuplicates":[
-            "upstreamId1",
-            "upstreamId2"
-         ],
-         "attachedObjects":[
-            {
-               "url":"http://example.org/attached1",
-               "id":"attached1"
-            },
-            {
-               "url":"http://example.org/attached2",
-               "id":"attached2"
-            }
-         ]
-      },
-      "actor":{
-         "url":"http://example.org/john",
-         "objectType":"person",
-         "id":"john.doe",
-         "image":{
-            "url":"http://example.org/john/image",
-            "width":250,
-            "height":250
-         },
-         "displayName":"John Doe"
-      },
-      "openSocial":{}
-   }
+		"id": "activity1",
+		"title": "John posted a new blog entry",
+	    "published": "2011-02-10T15:04:55Z",
+	    "actor": {
+	      "url": "http://example.org/john",
+	      "objectType" : "person",
+	      "id": "john.doe",
+	      "image": {
+	        "url": "http://example.org/john/image",
+	        "width": 250,
+	        "height": 250
+	      },
+	      "displayName": "John Doe"
+	    },
+	    "verb": "post",
+	    "object" : {
+	      "url": "http://example.org/blog/2011/02/entry",
+	      "id": "object1"
+	    },
+	    "target" : {
+	      "url": "http://example.org/blog/",
+	      "objectType": "blog",
+	      "id": "target1",
+	      "displayName": "John's Blog"
+	    }
+	  }
 }
\ No newline at end of file