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

svn commit: r1060032 [1/2] - in /shindig/trunk: content/sampledata/ extras/src/main/java/org/apache/shindig/extras/as/ extras/src/main/java/org/apache/shindig/extras/as/core/model/ extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/ ext...

Author: lindner
Date: Mon Jan 17 18:05:04 2011
New Revision: 1060032

URL: http://svn.apache.org/viewvc?rev=1060032&view=rev
Log:
SHINDIG-1488 | Patch from Eric Woods | ActivityStreams Support (refactored)

Added:
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActionLinkImpl.java
      - copied, changed from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/ActionLinkImpl.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActivityEntryImpl.java
      - copied, changed from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/ActivityEntryImpl.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActivityObjectImpl.java
      - copied, changed from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/ActivityObjectImpl.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/MediaLinkImpl.java
      - copied, changed from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/MediaLinkImpl.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/StandardLinkImpl.java
      - copied, changed from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/StandardLinkImpl.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActionLink.java
      - copied, changed from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/ActionLink.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityEntry.java
      - copied, changed from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/ActivityEntry.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityObject.java
      - copied, changed from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/ActivityObject.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/MediaLink.java
      - copied, changed from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/MediaLink.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/StandardLink.java
      - copied, changed from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/StandardLink.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/ActivityStreamHandler.java
      - copied, changed from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/service/ActivityStreamsHandler.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/ActivityStreamService.java
      - copied, changed from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/spi/ActivityStreamService.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
      - copied, changed from r1059997, shindig/trunk/extras/src/test/java/org/apache/shindig/extras/as/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/opensocial/service/ActivityStreamHandlerTest.java
      - copied, changed from r1059997, shindig/trunk/extras/src/test/java/org/apache/shindig/extras/as/opensocial/service/ActivityStreamsHandlerTest.java
Removed:
    shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/ActivityStreamsGuiceModule.java
    shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/ActionLinkImpl.java
    shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/ActivityEntryImpl.java
    shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/ActivityObjectImpl.java
    shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/MediaLinkImpl.java
    shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/StandardLinkImpl.java
    shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/ActionLink.java
    shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/ActivityEntry.java
    shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/ActivityObject.java
    shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/MediaLink.java
    shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/StandardLink.java
    shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/service/ActivityStreamsHandler.java
    shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/spi/ActivityStreamService.java
    shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/sample/ActivityStreamsJsonDbService.java
    shindig/trunk/extras/src/test/java/org/apache/shindig/extras/as/ActivityStreamsTestsGuiceModule.java
    shindig/trunk/extras/src/test/java/org/apache/shindig/extras/as/dataservice/integration/AbstractActivityStreamsRestfulTests.java
    shindig/trunk/extras/src/test/java/org/apache/shindig/extras/as/dataservice/integration/RestfulJsonActivityEntryTest.java
    shindig/trunk/extras/src/test/java/org/apache/shindig/extras/as/opensocial/service/ActivityStreamsHandlerTest.java
    shindig/trunk/extras/src/test/java/org/apache/shindig/extras/as/sample/spi/ActivityStreamsJsonDbServiceTest.java
Modified:
    shindig/trunk/content/sampledata/canonicaldb.json
    shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/DataServiceServlet.java
    shindig/trunk/java/server/src/main/webapp/WEB-INF/web.xml
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomAuthor.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomContent.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/sample/SampleModule.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/SocialApiTestsGuiceModule.java
    shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/sample/spi/JsonDbOpensocialServiceTest.java

Modified: shindig/trunk/content/sampledata/canonicaldb.json
URL: http://svn.apache.org/viewvc/shindig/trunk/content/sampledata/canonicaldb.json?rev=1060032&r1=1060031&r2=1060032&view=diff
==============================================================================
--- shindig/trunk/content/sampledata/canonicaldb.json (original)
+++ shindig/trunk/content/sampledata/canonicaldb.json Mon Jan 17 18:05:04 2011
@@ -351,35 +351,59 @@
 },
 "activityEntries" : {
 	"john.doe": [{
-		"title": "This is my ActivityEntry!",
-		"body": "ActivityStreams are so much fun!",
+		"title": "John posted a photo",
+		"body": "John Doe posted a photo to the album Germany 2009",
 		"postedTime": "2010-04-27T06:02:36+0000",
 		"actor": {
 			"id": "john.doe",
 			"displayName": "John Doe"
 		},
+		"to": ["jane.doe", "canonical"],
+		"cc": ["george.doe"],
 		"verb": "post",
-		"standardLinks": {"myRel": [
-			{"href": "www.mypics.com/1", "type": "image/jpg"},
-			{"href": "www.mypics.com/2", "type": "image/jpg"}
-		]},
+		"standardLinks": {
+			"myRel1": 
+				[{"href": "www.mypics.com/1", "type": "image/jpg"},
+				{"href": "www.mypics.com/2", "type": "image/jpg"}],
+			"myRel2":
+				[{"href": "www.mypics.com/3", "type": "image/jpg"},
+				{"href": "www.mypics.com/4", "type": "image/jpg"}]
+		},
 		"object": {
-			"id": "myObjectId123",
-			"displayName": "My Object",
-			"link": "http://www.myobject.com",
-			"objectType": "article",
+			"id": "object1",
+			"displayName": "Frozen Eric",
+			"link": "http://www.johnsalbums/germany123",
+			"objectType": "picture",
 			"image": {
-				"url": "http://myvideos.com/raftingtrip/raftingvideo.avi",
-				"type": "http://activitystrea.ms/schema/1.0/video",
+				"url": "https://docs.google.com/uc?id=0B-zwcqgujo7CMTRmZTg3Y2UtZGZlYS00MTY4LWFjOTItNDRiNmY3MzRmYzQ5&export=download&hl=en",
+				"type": "http://activitystrea.ms/schema/1.0/picture",
 				"width": 400,
 				"height": 300,
 				"duration": 93
 			},
-			"actionLinks": [{
-				"target": "http://myvideos.com/raftingvideo",
-				"caption": "Went white water rafting in the great lakes - ga hah!"
-			}]
+			"actionLinks": [
+				{
+					"target": "http://johnsalbums/germany123/mediaItem3",
+					"caption": "Frozen at the top of the German Alps"
+				}, {
+					"target": "http://johnsalbums/germany123/mediaItem6",
+					"caption": "Sign of Garmisch-Partenkirchen"
+				}
+			]
 		}
+	}, {
+		"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"
 	}]
 },
 "albums" : {

Modified: shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/DataServiceServlet.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/DataServiceServlet.java?rev=1060032&r1=1060031&r2=1060032&view=diff
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/DataServiceServlet.java (original)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/DataServiceServlet.java Mon Jan 17 18:05:04 2011
@@ -217,7 +217,9 @@ public class DataServiceServlet extends 
       }
     }
     try {
-      contentType = servletRequest.getContentType();
+      // TODO: First implementation causes bug when Content-Type is application/atom+xml.  Fix is applied.
+      //contentType = servletRequest.getContentType();
+      contentType = ContentTypes.extractMimePart(servletRequest.getContentType());
     } catch (Throwable t) {
       //this happens while testing
       if (LOG.isLoggable(Level.FINE)) {

Modified: shindig/trunk/java/server/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/java/server/src/main/webapp/WEB-INF/web.xml?rev=1060032&r1=1060031&r2=1060032&view=diff
==============================================================================
--- shindig/trunk/java/server/src/main/webapp/WEB-INF/web.xml (original)
+++ shindig/trunk/java/server/src/main/webapp/WEB-INF/web.xml Mon Jan 17 18:05:04 2011
@@ -39,7 +39,6 @@
       org.apache.shindig.sample.shiro.ShiroGuiceModule:
       org.apache.shindig.sample.container.SampleContainerGuiceModule:
       org.apache.shindig.extras.ShindigExtrasGuiceModule:
-      org.apache.shindig.extras.as.ActivityStreamsGuiceModule
     </param-value>
   </context-param>
 

Modified: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java?rev=1060032&r1=1060031&r2=1060032&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/config/SocialApiGuiceModule.java Mon Jan 17 18:05:04 2011
@@ -33,6 +33,7 @@ import org.apache.shindig.social.core.oa
 import org.apache.shindig.social.core.util.BeanXStreamAtomConverter;
 import org.apache.shindig.social.core.util.xstream.XStream081Configuration;
 import org.apache.shindig.social.opensocial.service.ActivityHandler;
+import org.apache.shindig.social.opensocial.service.ActivityStreamHandler;
 import org.apache.shindig.social.opensocial.service.AlbumHandler;
 import org.apache.shindig.social.opensocial.service.AppDataHandler;
 import org.apache.shindig.social.opensocial.service.MediaItemHandler;
@@ -85,7 +86,8 @@ public class SocialApiGuiceModule extend
    * to add or replace additional handlers.
    */
   protected Set<Class<?>> getHandlers() {
-    return ImmutableSet.<Class<?>>of(ActivityHandler.class, AppDataHandler.class,
-        PersonHandler.class, MessageHandler.class, AlbumHandler.class, MediaItemHandler.class);
+    return ImmutableSet.<Class<?>> of(ActivityHandler.class, AppDataHandler.class,
+            PersonHandler.class, MessageHandler.class, AlbumHandler.class,
+            MediaItemHandler.class, ActivityStreamHandler.class);
   }
 }

Copied: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActionLinkImpl.java (from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/ActionLinkImpl.java)
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActionLinkImpl.java?p2=shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActionLinkImpl.java&p1=shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/ActionLinkImpl.java&r1=1059997&r2=1060032&rev=1060032&view=diff
==============================================================================
--- shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/ActionLinkImpl.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActionLinkImpl.java Mon Jan 17 18:05:04 2011
@@ -15,9 +15,9 @@
  * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations under the License.
  */
-package org.apache.shindig.extras.as.core.model;
+package org.apache.shindig.social.core.model;
 
-import org.apache.shindig.extras.as.opensocial.model.ActionLink;
+import org.apache.shindig.social.opensocial.model.ActionLink;
 
 /**
  * A simple implementation of an ActionLink used by ActivityStreams.

Copied: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActivityEntryImpl.java (from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/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?p2=shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActivityEntryImpl.java&p1=shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/ActivityEntryImpl.java&r1=1059997&r2=1060032&rev=1060032&view=diff
==============================================================================
--- shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/ActivityEntryImpl.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActivityEntryImpl.java Mon Jan 17 18:05:04 2011
@@ -16,15 +16,15 @@
  * specific language governing permissions and limitations under the License.
  */
 
-package org.apache.shindig.extras.as.core.model;
+package org.apache.shindig.social.core.model;
 
 import java.util.List;
 import java.util.Map;
 
-import org.apache.shindig.extras.as.opensocial.model.ActivityEntry;
-import org.apache.shindig.extras.as.opensocial.model.ActivityObject;
-import org.apache.shindig.extras.as.opensocial.model.MediaLink;
-import org.apache.shindig.extras.as.opensocial.model.StandardLink;
+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.StandardLink;
 
 /**
  * A simple bean implementation of an ActivityStream Entry.
@@ -174,22 +174,22 @@ public class ActivityEntryImpl implement
   }
   
   /** {@inheritDoc} */
-  public List<String> getCC() {
+  public List<String> getCc() {
     return cc;
   }
   
   /** {@inheritDoc} */
-  public void setCC(List<String> cc) {
+  public void setCc(List<String> cc) {
     this.cc = cc;
   }
 
   /** {@inheritDoc} */
-  public List<String> getBCC() {
+  public List<String> getBcc() {
     return bcc;
   }
   
   /** {@inheritDoc} */
-  public void setBCC(List<String> bcc) {
+  public void setBcc(List<String> bcc) {
     this.bcc = bcc;
   }
 }

Copied: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActivityObjectImpl.java (from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/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?p2=shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActivityObjectImpl.java&p1=shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/ActivityObjectImpl.java&r1=1059997&r2=1060032&rev=1060032&view=diff
==============================================================================
--- shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/ActivityObjectImpl.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/ActivityObjectImpl.java Mon Jan 17 18:05:04 2011
@@ -16,15 +16,15 @@
  * specific language governing permissions and limitations under the License.
  */
 
-package org.apache.shindig.extras.as.core.model;
+package org.apache.shindig.social.core.model;
 
 import java.util.List;
 import java.util.Map;
 
-import org.apache.shindig.extras.as.opensocial.model.ActionLink;
-import org.apache.shindig.extras.as.opensocial.model.ActivityObject;
-import org.apache.shindig.extras.as.opensocial.model.MediaLink;
-import org.apache.shindig.extras.as.opensocial.model.StandardLink;
+import org.apache.shindig.social.opensocial.model.ActionLink;
+import org.apache.shindig.social.opensocial.model.ActivityObject;
+import org.apache.shindig.social.opensocial.model.MediaLink;
+import org.apache.shindig.social.opensocial.model.StandardLink;
 
 /**
  * <p>ActivityObjectImpl class.</p>

Copied: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/MediaLinkImpl.java (from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/MediaLinkImpl.java)
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/MediaLinkImpl.java?p2=shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/MediaLinkImpl.java&p1=shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/MediaLinkImpl.java&r1=1059997&r2=1060032&rev=1060032&view=diff
==============================================================================
--- shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/MediaLinkImpl.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/MediaLinkImpl.java Mon Jan 17 18:05:04 2011
@@ -15,9 +15,9 @@
  * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations under the License.
  */
-package org.apache.shindig.extras.as.core.model;
+package org.apache.shindig.social.core.model;
 
-import org.apache.shindig.extras.as.opensocial.model.MediaLink;
+import org.apache.shindig.social.opensocial.model.MediaLink;
 
 /**
  * <p>MediaLinkImpl class.</p>

Copied: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/StandardLinkImpl.java (from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/StandardLinkImpl.java)
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/StandardLinkImpl.java?p2=shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/StandardLinkImpl.java&p1=shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/StandardLinkImpl.java&r1=1059997&r2=1060032&rev=1060032&view=diff
==============================================================================
--- shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/core/model/StandardLinkImpl.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/model/StandardLinkImpl.java Mon Jan 17 18:05:04 2011
@@ -15,9 +15,9 @@
  * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations under the License.
  */
-package org.apache.shindig.extras.as.core.model;
+package org.apache.shindig.social.core.model;
 
-import org.apache.shindig.extras.as.opensocial.model.StandardLink;
+import org.apache.shindig.social.opensocial.model.StandardLink;
 
 /**
  * <p>MediaLinkImpl class.</p>

Modified: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomAuthor.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomAuthor.java?rev=1060032&r1=1060031&r2=1060032&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomAuthor.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomAuthor.java Mon Jan 17 18:05:04 2011
@@ -18,6 +18,7 @@
 package org.apache.shindig.social.core.util.atom;
 
 import org.apache.shindig.social.opensocial.model.Activity;
+import org.apache.shindig.social.opensocial.model.ActivityEntry;
 
 /**
  * Represents and atom:entry/atom:author element.
@@ -26,7 +27,15 @@ public class AtomAuthor {
 
   @SuppressWarnings("unused")
   private String uri;
-
+  @SuppressWarnings("unused")
+  private String name;
+  
+  /**
+   * Default constructor for POSTs to the REST API.
+   */
+  public AtomAuthor() {
+  }
+  
   /**
    * @param activity
    */
@@ -34,4 +43,11 @@ public class AtomAuthor {
     uri = activity.getUserId();
   }
 
+  /**
+   * @param activityEntry
+   */
+  public AtomAuthor(ActivityEntry activityEntry) {
+    uri = activityEntry.getActor().getId();
+    name = activityEntry.getActor().getDisplayName();
+  }
 }

Modified: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomContent.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomContent.java?rev=1060032&r1=1060031&r2=1060032&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomContent.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomContent.java Mon Jan 17 18:05:04 2011
@@ -17,14 +17,15 @@
  */
 package org.apache.shindig.social.core.util.atom;
 
-import com.google.common.collect.Lists;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
 
 import org.apache.shindig.social.opensocial.model.Activity;
+import org.apache.shindig.social.opensocial.model.ActivityEntry;
 import org.apache.shindig.social.opensocial.model.Person;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
+import com.google.common.collect.Lists;
 
 /**
  * Represents and atom:content element.
@@ -36,6 +37,8 @@ public class AtomContent {
   @SuppressWarnings("unused")
   private Activity activity;
   @SuppressWarnings("unused")
+  private ActivityEntry activityEntry;
+  @SuppressWarnings("unused")
   private AtomAttribute type = new AtomAttribute("application/xml");
   @SuppressWarnings("unused")
   private Object entry;
@@ -55,6 +58,13 @@ public class AtomContent {
   public AtomContent(Activity activity) {
     this.activity = activity;
   }
+  
+  /**
+   * @param activityEntry
+   */
+  public AtomContent(ActivityEntry activityEntry) {
+    this.activityEntry = activityEntry;
+  }
 
   /**
    * @param value

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=1060032&r1=1060031&r2=1060032&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 Mon Jan 17 18:05:04 2011
@@ -17,12 +17,15 @@
  */
 package org.apache.shindig.social.core.util.atom;
 
-import org.apache.shindig.social.opensocial.model.Activity;
-import org.apache.shindig.social.opensocial.model.Person;
-
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Map.Entry;
 
+import org.apache.shindig.social.opensocial.model.Activity;
+import org.apache.shindig.social.opensocial.model.ActivityEntry;
+import org.apache.shindig.social.opensocial.model.Person;
+
 /**
  * This bean represents a Atom Entry for serialization. It contains, optionally
  * a person or an activity, from which are extracted the key atom fields.
@@ -49,11 +52,23 @@ public class AtomEntry {
   private AtomLink link;
   @SuppressWarnings("unused")
   private Object content;
+  
+  /**
+   * Default constructor for POSTs to the REST API.
+   */
+  public AtomEntry() {
+  }
 
   /**
    * @param o
    */
   public AtomEntry(Object o) {
+    Object oCopy = o;
+    if(o instanceof Entry) {
+      // Try to recognize Entry's value
+      o = ((Entry<?, ?>)o).getValue();
+    }
+    
     if (o instanceof Person) {
       Person person = (Person) o;
       content = new AtomContent(person);
@@ -70,13 +85,24 @@ public class AtomEntry {
       generator = new AtomGenerator(activity);
       author = new AtomAuthor(activity);
       updated = activity.getUpdated();
-    } else if ( o instanceof Entry ) {
-      Entry<?, ?> e = (Entry<?, ?>) o;
+    } else if (o instanceof ActivityEntry) {
+      ActivityEntry activity = (ActivityEntry)o;
+      id = activity.getObject().getId();
+      title = activity.getTitle();
+      summary = activity.getBody();
+      author = new AtomAuthor(activity);
+      content = new AtomContent(activity);
+      try {
+        updated = new SimpleDateFormat().parse(activity.getPostedTime());
+      } catch (ParseException e) {
+        // TODO: map postedTime to updated field correctly
+      }
+    } else if (oCopy instanceof Entry) {
+      Entry<?, ?> e = (Entry<?, ?>) oCopy;
       id = (String) e.getKey();
       content = new AtomContent(e.getValue());
     } else {
       content = o;
     }
   }
-
 }

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=1060032&r1=1060031&r2=1060032&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 Mon Jan 17 18:05:04 2011
@@ -46,16 +46,21 @@ import org.apache.shindig.social.core.ut
 import org.apache.shindig.social.core.util.atom.AtomKeyValue;
 import org.apache.shindig.social.core.util.atom.AtomLinkConverter;
 import org.apache.shindig.social.opensocial.model.Account;
+import org.apache.shindig.social.opensocial.model.ActionLink;
 import org.apache.shindig.social.opensocial.model.Activity;
+import org.apache.shindig.social.opensocial.model.ActivityEntry;
+import org.apache.shindig.social.opensocial.model.ActivityObject;
 import org.apache.shindig.social.opensocial.model.Address;
 import org.apache.shindig.social.opensocial.model.BodyType;
 import org.apache.shindig.social.opensocial.model.ListField;
 import org.apache.shindig.social.opensocial.model.MediaItem;
+import org.apache.shindig.social.opensocial.model.MediaLink;
 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.Organization;
 import org.apache.shindig.social.opensocial.model.Person;
+import org.apache.shindig.social.opensocial.model.StandardLink;
 import org.apache.shindig.social.opensocial.model.Url;
 
 import com.google.common.base.Objects;
@@ -136,7 +141,7 @@ public class XStream081Configuration imp
         .put("feed", atom)
         .put("person", os)
         .put("activity", os)
-        .put("activityStream", os)
+        .put("activityEntry", os)
         .put("account", os)
         .put("address", os)
         .put("bodyType", os)
@@ -154,9 +159,14 @@ public class XStream081Configuration imp
         // this is order specific, so put the more specified interfaces at the top.
         new ClassFieldMapping("feed", AtomFeed.class),
         new ClassFieldMapping("content", AtomContent.class),
+        new ClassFieldMapping("entry", AtomEntry.class),
 
         new ClassFieldMapping("activity", Activity.class),
-//  AS TODO      new ClassFieldMapping("activityStream", ActivityStream.class),
+        new ClassFieldMapping("activityEntry", ActivityEntry.class),
+        new ClassFieldMapping("object", ActivityObject.class),
+        new ClassFieldMapping("standardLink", StandardLink.class),
+        new ClassFieldMapping("actionLink", ActionLink.class),
+        new ClassFieldMapping("mediaLink", MediaLink.class),
         new ClassFieldMapping("account", Account.class),
         new ClassFieldMapping("address", Address.class),
         new ClassFieldMapping("bodyType", BodyType.class),
@@ -189,9 +199,14 @@ public class XStream081Configuration imp
     elementMappingList.put(ConverterSet.COLLECTION, ImmutableList.of(
         new ClassFieldMapping("feed", AtomFeed.class),
         new ClassFieldMapping("content", AtomContent.class),
+        new ClassFieldMapping("entry", AtomEntry.class),
 
         new ClassFieldMapping("activity", Activity.class),
-// AS TODO        new ClassFieldMapping("activityStream", ActivityStream.class),
+        new ClassFieldMapping("activityEntry", ActivityEntry.class),
+        new ClassFieldMapping("object", ActivityObject.class),
+        new ClassFieldMapping("standardLink", StandardLink.class),
+        new ClassFieldMapping("actionLink", ActionLink.class),
+        new ClassFieldMapping("mediaLink", MediaLink.class),
         new ClassFieldMapping("account", Account.class),
         new ClassFieldMapping("address", Address.class),
         new ClassFieldMapping("bodyType", BodyType.class),
@@ -221,13 +236,18 @@ public class XStream081Configuration imp
     elementClassMap.put(ConverterSet.DEFAULT, new ImmutableMap.Builder<String, Class<?>>()
         .put("feed", AtomFeed.class)
         .put("content", AtomContent.class)
+        .put("entry", AtomEntry.class)
         .put("email", ListField.class)
         .put("phone", ListField.class)
         .put("list", ArrayList.class)
         .put("map", ConcurrentHashMap.class)
         .put("appdata", DataCollection.class)
         .put("activity", Activity.class)
-// AS TODO        .put("activityStream", ActivityStream.class)
+        .put("activityEntry", ActivityEntry.class)
+        .put("object", ActivityObject.class)
+        .put("standardLink", StandardLink.class)
+        .put("actionLink", ActionLink.class)
+        .put("mediaLink", MediaLink.class)
         .put("account", Account.class)
         .put("address", Address.class)
         .put("bodyType", BodyType.class)
@@ -274,6 +294,10 @@ public class XStream081Configuration imp
         new ImplicitCollectionFieldMapping(Message.class, "recipients", String.class, "recipients"),
         new ImplicitCollectionFieldMapping(Message.class, "collectionIds", String.class, "collectionsIds"),
         new ImplicitCollectionFieldMapping(Message.class, "replies", String.class, "replies"),
+        
+        new ImplicitCollectionFieldMapping(ActivityEntry.class, "to", String.class, "to"),
+        new ImplicitCollectionFieldMapping(ActivityEntry.class, "cc", String.class, "cc"),
+        new ImplicitCollectionFieldMapping(ActivityEntry.class, "bcc", String.class, "bcc"),
 
         new ImplicitCollectionFieldMapping(Activity.class, "mediaItems", MediaItem.class, "mediaItems"))
     );

Copied: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActionLink.java (from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/ActionLink.java)
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActionLink.java?p2=shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActionLink.java&p1=shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/ActionLink.java&r1=1059997&r2=1060032&rev=1060032&view=diff
==============================================================================
--- shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/ActionLink.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActionLink.java Mon Jan 17 18:05:04 2011
@@ -15,10 +15,10 @@
  * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations under the License.
  */
-package org.apache.shindig.extras.as.opensocial.model;
+package org.apache.shindig.social.opensocial.model;
 
 import org.apache.shindig.protocol.model.Exportablebean;
-import org.apache.shindig.extras.as.core.model.ActionLinkImpl;
+import org.apache.shindig.social.core.model.ActionLinkImpl;
 
 import com.google.inject.ImplementedBy;
 

Copied: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityEntry.java (from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/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?p2=shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityEntry.java&p1=shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/ActivityEntry.java&r1=1059997&r2=1060032&rev=1060032&view=diff
==============================================================================
--- shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/ActivityEntry.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityEntry.java Mon Jan 17 18:05:04 2011
@@ -16,13 +16,13 @@
  * specific language governing permissions and limitations under the License.
  */
 
-package org.apache.shindig.extras.as.opensocial.model;
+package org.apache.shindig.social.opensocial.model;
 
 import java.util.List;
 import java.util.Map;
 
-import org.apache.shindig.extras.as.core.model.ActivityEntryImpl;
 import org.apache.shindig.protocol.model.Exportablebean;
+import org.apache.shindig.social.core.model.ActivityEntryImpl;
 
 import com.google.inject.ImplementedBy;
 
@@ -293,26 +293,26 @@ public interface ActivityEntry {
    *
    * @return a List<String> of carbon-copy recipients
    */
-  List<String> getCC();
+  List<String> getCc();
   
   /**
    * <p>setCC</p>
    *
    * @param cc is the list of carbon-copy recipients
    */
-  void setCC(List<String> cc);
+  void setCc(List<String> cc);
   
   /**
    * <p>getBCC</p>
    *
    * @return a List<String> of BCC recipients
    */
-  List<String> getBCC();
+  List<String> getBcc();
   
   /**
    * <p>setBCC</p>
    *
    * @param bcc is the list of BCC recipients
    */
-  void setBCC(List<String> bcc);
+  void setBcc(List<String> bcc);
 }

Copied: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityObject.java (from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/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?p2=shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityObject.java&p1=shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/ActivityObject.java&r1=1059997&r2=1060032&rev=1060032&view=diff
==============================================================================
--- shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/ActivityObject.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/ActivityObject.java Mon Jan 17 18:05:04 2011
@@ -16,13 +16,13 @@
  * specific language governing permissions and limitations under the License.
  */
 
-package org.apache.shindig.extras.as.opensocial.model;
+package org.apache.shindig.social.opensocial.model;
 
 import java.util.List;
 import java.util.Map;
 
-import org.apache.shindig.extras.as.core.model.ActivityObjectImpl;
 import org.apache.shindig.protocol.model.Exportablebean;
+import org.apache.shindig.social.core.model.ActivityObjectImpl;
 
 import com.google.inject.ImplementedBy;
 

Copied: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/MediaLink.java (from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/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?p2=shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/MediaLink.java&p1=shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/MediaLink.java&r1=1059997&r2=1060032&rev=1060032&view=diff
==============================================================================
--- shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/MediaLink.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/MediaLink.java Mon Jan 17 18:05:04 2011
@@ -15,10 +15,10 @@
  * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations under the License.
  */
-package org.apache.shindig.extras.as.opensocial.model;
+package org.apache.shindig.social.opensocial.model;
 
-import org.apache.shindig.extras.as.core.model.MediaLinkImpl;
 import org.apache.shindig.protocol.model.Exportablebean;
+import org.apache.shindig.social.core.model.MediaLinkImpl;
 
 import com.google.inject.ImplementedBy;
 

Copied: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/StandardLink.java (from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/StandardLink.java)
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/StandardLink.java?p2=shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/StandardLink.java&p1=shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/StandardLink.java&r1=1059997&r2=1060032&rev=1060032&view=diff
==============================================================================
--- shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/model/StandardLink.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/model/StandardLink.java Mon Jan 17 18:05:04 2011
@@ -15,10 +15,10 @@
  * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations under the License.
  */
-package org.apache.shindig.extras.as.opensocial.model;
+package org.apache.shindig.social.opensocial.model;
 
-import org.apache.shindig.extras.as.core.model.StandardLinkImpl;
 import org.apache.shindig.protocol.model.Exportablebean;
+import org.apache.shindig.social.core.model.StandardLinkImpl;
 
 import com.google.inject.ImplementedBy;
 

Copied: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/ActivityStreamHandler.java (from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/service/ActivityStreamsHandler.java)
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/ActivityStreamHandler.java?p2=shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/ActivityStreamHandler.java&p1=shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/service/ActivityStreamsHandler.java&r1=1059997&r2=1060032&rev=1060032&view=diff
==============================================================================
--- shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/service/ActivityStreamsHandler.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/ActivityStreamHandler.java Mon Jan 17 18:05:04 2011
@@ -15,21 +15,20 @@
  * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations under the License.
  */
-package org.apache.shindig.extras.as.opensocial.service;
+package org.apache.shindig.social.opensocial.service;
 
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.Future;
 
 import org.apache.shindig.config.ContainerConfig;
-import org.apache.shindig.extras.as.opensocial.spi.ActivityStreamService;
 import org.apache.shindig.protocol.HandlerPreconditions;
 import org.apache.shindig.protocol.Operation;
 import org.apache.shindig.protocol.ProtocolException;
 import org.apache.shindig.protocol.RequestItem;
 import org.apache.shindig.protocol.Service;
-import org.apache.shindig.extras.as.opensocial.model.ActivityEntry;
-import org.apache.shindig.social.opensocial.service.SocialRequestItem;
+import org.apache.shindig.social.opensocial.model.ActivityEntry;
+import org.apache.shindig.social.opensocial.spi.ActivityStreamService;
 import org.apache.shindig.social.opensocial.spi.CollectionOptions;
 import org.apache.shindig.social.opensocial.spi.UserId;
 
@@ -43,7 +42,7 @@ import com.google.inject.Inject;
  *
  */
 @Service(name = "activitystreams", path="/{userId}+/{groupId}/{appId}/{activityEntryId}+")
-public class ActivityStreamsHandler {
+public class ActivityStreamHandler {
 
   private final ActivityStreamService service;
   private final ContainerConfig config;
@@ -55,15 +54,15 @@ public class ActivityStreamsHandler {
    * @param config a {@link org.apache.shindig.config.ContainerConfig} object.
    */
   @Inject
-  public ActivityStreamsHandler(ActivityStreamService service, ContainerConfig config) {
+  public ActivityStreamHandler(ActivityStreamService service, ContainerConfig config) {
     this.service = service;
     this.config = config;
   }
 
   /**
-   * Allowed end-points /activities/{userId}/@self/{actvityId}+
+   * Allowed end-points /activitiestreams/{userId}/@self/{actvityId}+
    *
-   * examples: /activities/john.doe/@self/1
+   * examples: /activitiestreams/john.doe/@self/1
    *
    * @param request a {@link org.apache.shindig.social.opensocial.service.SocialRequestItem} object.
    * @return a {@link java.util.concurrent.Future} object.
@@ -84,9 +83,9 @@ public class ActivityStreamsHandler {
   }
 
   /**
-   * Allowed end-points /activities/{userId}/@self
+   * Allowed end-points /activitiestreams/{userId}/@self
    *
-   * examples: /activities/john.doe/@self - postBody is an activity object
+   * examples: /activitiestreams/john.doe/@self - postBody is an activity object
    *
    * TODO: REST end-point
    *
@@ -100,9 +99,9 @@ public class ActivityStreamsHandler {
   }
 
   /**
-   * Allowed end-points /activities/{userId}/@self
+   * Allowed end-points /activitiestreams/{userId}/@self
    *
-   * examples: /activities/john.doe/@self - postBody is an activity object
+   * examples: /activitiestreams/john.doe/@self - postBody is an activity object
    *
    * TODO: REST end-point
    *
@@ -127,11 +126,11 @@ public class ActivityStreamsHandler {
   }
 
   /**
-   * Allowed end-points /activities/{userId}/{groupId}/{optionalActvityId}+
-   * /activities/{userId}+/{groupId}
+   * Allowed end-points /activitiestreams/{userId}/{groupId}/{optionalActvityId}+
+   * /activitiestreams/{userId}+/{groupId}
    *
-   * examples: /activities/john.doe/@self/1 /activities/john.doe/@self
-   * /activities/john.doe,jane.doe/@friends
+   * examples: /activitiestreams/john.doe/@self/1 /activitiestreams/john.doe/@self
+   * /activitiestreams/john.doe,jane.doe/@friends
    *
    * @param request a {@link org.apache.shindig.social.opensocial.service.SocialRequestItem} object.
    * @return a {@link java.util.concurrent.Future} object.

Copied: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/ActivityStreamService.java (from r1059997, shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/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?p2=shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/ActivityStreamService.java&p1=shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/spi/ActivityStreamService.java&r1=1059997&r2=1060032&rev=1060032&view=diff
==============================================================================
--- shindig/trunk/extras/src/main/java/org/apache/shindig/extras/as/opensocial/spi/ActivityStreamService.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/spi/ActivityStreamService.java Mon Jan 17 18:05:04 2011
@@ -15,7 +15,7 @@
  * KIND, either express or implied. See the License for the
  * specific language governing permissions and limitations under the License.
  */
-package org.apache.shindig.extras.as.opensocial.spi;
+package org.apache.shindig.social.opensocial.spi;
 
 import java.util.Set;
 import java.util.concurrent.Future;
@@ -23,10 +23,7 @@ import java.util.concurrent.Future;
 import org.apache.shindig.auth.SecurityToken;
 import org.apache.shindig.protocol.ProtocolException;
 import org.apache.shindig.protocol.RestfulCollection;
-import org.apache.shindig.extras.as.opensocial.model.ActivityEntry;
-import org.apache.shindig.social.opensocial.spi.CollectionOptions;
-import org.apache.shindig.social.opensocial.spi.GroupId;
-import org.apache.shindig.social.opensocial.spi.UserId;
+import org.apache.shindig.social.opensocial.model.ActivityEntry;
 
 /**
  * The ActivityService interface defines the service provider interface to retrieve activities from

Modified: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/sample/SampleModule.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/sample/SampleModule.java?rev=1060032&r1=1060031&r2=1060032&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/sample/SampleModule.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/sample/SampleModule.java Mon Jan 17 18:05:04 2011
@@ -19,6 +19,7 @@ package org.apache.shindig.social.sample
 
 import org.apache.shindig.social.opensocial.oauth.OAuthDataStore;
 import org.apache.shindig.social.opensocial.spi.ActivityService;
+import org.apache.shindig.social.opensocial.spi.ActivityStreamService;
 import org.apache.shindig.social.opensocial.spi.AlbumService;
 import org.apache.shindig.social.opensocial.spi.AppDataService;
 import org.apache.shindig.social.opensocial.spi.MediaItemService;
@@ -43,6 +44,7 @@ public class SampleModule extends Abstra
     bind(String.class).annotatedWith(Names.named("shindig.canonical.json.db"))
         .toInstance("sampledata/canonicaldb.json");
     bind(ActivityService.class).to(JsonDbOpensocialService.class);
+    bind(ActivityStreamService.class).to(JsonDbOpensocialService.class);
     bind(AlbumService.class).to(JsonDbOpensocialService.class);
     bind(MediaItemService.class).to(JsonDbOpensocialService.class);
     bind(AppDataService.class).to(JsonDbOpensocialService.class);

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=1060032&r1=1060031&r2=1060032&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 Mon Jan 17 18:05:04 2011
@@ -38,12 +38,15 @@ import org.apache.shindig.protocol.Restf
 import org.apache.shindig.protocol.conversion.BeanConverter;
 import org.apache.shindig.protocol.model.SortOrder;
 import org.apache.shindig.social.opensocial.model.Activity;
+import org.apache.shindig.social.opensocial.model.ActivityEntry;
+import org.apache.shindig.social.opensocial.model.ActivityObject;
 import org.apache.shindig.social.opensocial.model.Album;
 import org.apache.shindig.social.opensocial.model.MediaItem;
 import org.apache.shindig.social.opensocial.model.Message;
 import org.apache.shindig.social.opensocial.model.MessageCollection;
 import org.apache.shindig.social.opensocial.model.Person;
 import org.apache.shindig.social.opensocial.spi.ActivityService;
+import org.apache.shindig.social.opensocial.spi.ActivityStreamService;
 import org.apache.shindig.social.opensocial.spi.AlbumService;
 import org.apache.shindig.social.opensocial.spi.AppDataService;
 import org.apache.shindig.social.opensocial.spi.CollectionOptions;
@@ -69,7 +72,7 @@ import com.google.inject.name.Named;
  */
 @Singleton
 public class JsonDbOpensocialService implements ActivityService, PersonService, AppDataService,
-    MessageService, AlbumService, MediaItemService {
+    MessageService, AlbumService, MediaItemService, ActivityStreamService {
 
   private static final Comparator<Person> NAME_COMPARATOR = new Comparator<Person>() {
     public int compare(Person person, Person person1) {
@@ -128,6 +131,11 @@ public class JsonDbOpensocialService imp
    * db["passwords"] -> Map<Person.Id, String>
    */
   private static final String PASSWORDS_TABLE = "passwords";
+  
+  /**
+   * db["people"] -> Map<Person.Id, Array<ActivityEntry>>
+   */
+  private static final String ACTIVITYSTREAMS_TABLE = "activityEntries";
 
   /**
    * Initializes the JsonDbOpensocialService using Guice
@@ -1162,6 +1170,148 @@ public class JsonDbOpensocialService imp
           je.getMessage(), je);
     }
   }
+  
+  // Are fields really needed here?
+  /** {@inheritDoc} */
+  public Future<Void> 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);
+      }
+
+      // TODO: bug fixed: jsonArray will not be null; will throw exception!
+      // Fix in createActivity()
+      JSONArray jsonArray;
+      if (db.getJSONObject(ACTIVITYSTREAMS_TABLE).has(userId.getUserId(token))) {
+        jsonArray = db.getJSONObject(ACTIVITYSTREAMS_TABLE).getJSONArray(userId.getUserId(token));
+      } else {
+        jsonArray = new JSONArray();
+        db.getJSONObject(ACTIVITYSTREAMS_TABLE).put(userId.getUserId(token), jsonArray);
+      }
+      jsonArray.put(jsonEntry);
+      return ImmediateFuture.newInstance(null);
+    } catch (JSONException je) {
+      throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, je.getMessage(), je);
+    }
+  }
+
+  /** {@inheritDoc} */
+  public Future<Void> deleteActivityEntries(UserId userId, GroupId groupId,
+      String appId, Set<String> activityIds, SecurityToken token) throws ProtocolException {
+    try {
+      String user = userId.getUserId(token);
+
+      if (db.getJSONObject(ACTIVITYSTREAMS_TABLE).has(user)) {
+        JSONArray activityEntries = db.getJSONObject(ACTIVITYSTREAMS_TABLE).getJSONArray(user);
+
+        if (activityEntries != null) {
+          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()))) {
+              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);
+    }
+  }
+
+  /** {@inheritDoc} */
+  public Future<ActivityEntry> getActivityEntry(UserId userId, GroupId groupId,
+      String appId, Set<String> fields, String activityId, SecurityToken token)
+      throws ProtocolException {
+    try {       
+      String user = userId.getUserId(token);
+      if (db.getJSONObject(ACTIVITYSTREAMS_TABLE).has(user)) {
+        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)) {
+            return ImmediateFuture.newInstance(filterFields(activityEntry, fields, ActivityEntry.class));
+          }
+        }
+      }
+
+      throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "ActivityEntry not found");
+    } catch (JSONException je) {
+      throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, je.getMessage(), je);
+    }
+  }
+  
+  /** {@inheritDoc} */
+  public Future<RestfulCollection<ActivityEntry>> getActivityEntries(
+      Set<UserId> userIds, GroupId groupId, String appId, Set<String> fields,
+      CollectionOptions options, SecurityToken token)
+      throws ProtocolException {
+      List<ActivityEntry> result = Lists.newArrayList();
+    try {
+      Set<String> idSet = getIdSet(userIds, groupId, token);
+      for (String id : idSet) {
+        if (db.getJSONObject(ACTIVITYSTREAMS_TABLE).has(id)) {
+          JSONArray activityEntries = db.getJSONObject(ACTIVITYSTREAMS_TABLE).getJSONArray(id);
+          for (int i = 0; i < activityEntries.length(); i++) {
+            JSONObject activityEntry = activityEntries.getJSONObject(i);
+            result.add(filterFields(activityEntry, fields, ActivityEntry.class));
+            // TODO: ActivityStreams don't have appIds
+          }
+        }
+      }
+      return ImmediateFuture.newInstance(new RestfulCollection<ActivityEntry>(result));
+    } catch (JSONException je) {
+      throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, je.getMessage(), je);
+    }
+  }
+  
+  /** {@inheritDoc} */
+  public Future<RestfulCollection<ActivityEntry>> getActivityEntries(
+      UserId userId, GroupId groupId, String appId, Set<String> fields,
+      CollectionOptions options, Set<String> activityIds, SecurityToken token)
+      throws ProtocolException {
+    List<ActivityEntry> result = Lists.newArrayList();    
+    try {
+      String user = userId.getUserId(token);
+      if (db.getJSONObject(ACTIVITYSTREAMS_TABLE).has(user)) {
+        JSONArray activityEntries = db.getJSONObject(ACTIVITYSTREAMS_TABLE).getJSONArray(user);
+        for(String activityId : activityIds) {
+          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)) {
+              result.add(filterFields(activityEntry, fields, ActivityEntry.class));
+              found = true;
+              break;
+            }
+          }
+          if (!found) {
+            throw new ProtocolException(HttpServletResponse.SC_NOT_FOUND, "ActivityEntry not found: " + activityId);
+          }
+        }
+      }
+      return ImmediateFuture.newInstance(new RestfulCollection<ActivityEntry>(result));
+    } catch (JSONException je) {
+      throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, je.getMessage(), je);
+    }
+  }
 
   // TODO Why specifically handle Activity instead of generic POJO (below)?
 
@@ -1170,6 +1320,11 @@ public class JsonDbOpensocialService imp
     // TODO Not using fields yet
     return new JSONObject(converter.convertToString(activity));
   }
+  
+  private JSONObject convertFromActivityEntry(ActivityEntry activityEntry, Set<String> fields) throws JSONException {
+    // TODO Not using fields yet
+    return new JSONObject(converter.convertToString(activityEntry));
+  }
 
   private JSONObject convertToJson(Object object) throws JSONException {
     // TODO not using fields yet

Modified: shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java?rev=1060032&r1=1060031&r2=1060032&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java (original)
+++ shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/SocialApiTestsGuiceModule.java Mon Jan 17 18:05:04 2011
@@ -30,10 +30,12 @@ import org.apache.shindig.protocol.conve
 import org.apache.shindig.protocol.conversion.xstream.XStreamConfiguration;
 import org.apache.shindig.social.core.util.xstream.XStream081Configuration;
 import org.apache.shindig.social.opensocial.service.ActivityHandler;
+import org.apache.shindig.social.opensocial.service.ActivityStreamHandler;
 import org.apache.shindig.social.opensocial.service.AppDataHandler;
 import org.apache.shindig.social.opensocial.service.MessageHandler;
 import org.apache.shindig.social.opensocial.service.PersonHandler;
 import org.apache.shindig.social.opensocial.spi.ActivityService;
+import org.apache.shindig.social.opensocial.spi.ActivityStreamService;
 import org.apache.shindig.social.opensocial.spi.AppDataService;
 import org.apache.shindig.social.opensocial.spi.MessageService;
 import org.apache.shindig.social.opensocial.spi.PersonService;
@@ -55,6 +57,7 @@ public class SocialApiTestsGuiceModule e
         .to(DataServiceServletFetcher.class);
 
     bind(ActivityService.class).to(JsonDbOpensocialService.class);
+    bind(ActivityStreamService.class).to(JsonDbOpensocialService.class);
     bind(AppDataService.class).to(JsonDbOpensocialService.class);
     bind(MessageService.class).to(JsonDbOpensocialService.class);
     bind(PersonService.class).to(JsonDbOpensocialService.class);
@@ -71,7 +74,7 @@ public class SocialApiTestsGuiceModule e
     bind(new TypeLiteral<Set<Object>>(){}).annotatedWith(
         Names.named("org.apache.shindig.handlers"))
         .toInstance(ImmutableSet.<Object>of(ActivityHandler.class, AppDataHandler.class,
-            PersonHandler.class, MessageHandler.class));
+            PersonHandler.class, MessageHandler.class, ActivityStreamHandler.class));
 
     bindConstant().annotatedWith(Names.named("shindig.containers.default"))
         .to("res://containers/default/container.js");

Added: 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=1060032&view=auto
==============================================================================
--- shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulAtomActivityEntryTest.java (added)
+++ shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulAtomActivityEntryTest.java Mon Jan 17 18:05:04 2011
@@ -0,0 +1,127 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.apache.shindig.social.dataservice.integration;
+
+import java.io.StringReader;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
+
+import org.apache.shindig.social.opensocial.model.ActivityEntry;
+import org.junit.Before;
+import org.junit.Test;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
+public class RestfulAtomActivityEntryTest extends AbstractLargeRestfulTests {
+  
+  private static XPath xpath = XPathFactory.newInstance().newXPath();
+  
+  private ActivityEntry johnsEntry1;
+  private ActivityEntry johnsEntry2;
+
+
+  @Before
+  public void restfulXmlActivityEntryTestBefore() throws Exception {
+    johnsEntry1 = RestfulXmlActivityEntryTest.generateEntry1();
+    johnsEntry2 = RestfulXmlActivityEntryTest.generateEntry2();
+  }
+
+  /**
+   * Tests GET for a single ActivityEntry.
+   * 
+   * @throws Exception if test encounters an error
+   */
+  @Test
+  public void testGetActivityEntryAtom() throws Exception {
+    String resp = getResponse("/activitystreams/john.doe/@self/@app/object1", "GET", "atom", "application/atom+xml");
+    
+    // TODO: Uncomment this if ActivityEntry added to opensocial.xsd
+    //XSDValidator.validateOpenSocial(resp);
+    
+    // Build XML Document
+    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+    DocumentBuilder db = dbf.newDocumentBuilder();
+    Document doc = db.parse(new InputSource(new StringReader(resp)));
+    
+    // Test ActivityEntry
+    Node entryNode = (Node)xpath.evaluate("/feed/entry", doc, XPathConstants.NODE);
+    assertNotNull("ActivityEntry should not be null", entryNode);
+    assertActivityEntriesAtomEqual(johnsEntry1, entryNode);
+  }
+
+  /**
+   * Tests GET for a list of ActivityEntries.
+   *
+   * @throws Exception if test encounters an error
+   */
+  @Test
+  public void testGetActivityEntriesAtom() throws Exception {
+    String resp = getResponse("/activitystreams/john.doe/@self", "GET", "atom", "application/atom+xml");
+    
+    // TODO: Uncomment this if ActivityEntry added to opensocial.xsd
+    //XSDValidator.validateOpenSocial(resp);
+    
+    // Build XML Document
+    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+    DocumentBuilder db = dbf.newDocumentBuilder();
+    Document doc = db.parse(new InputSource(new StringReader(resp)));
+    
+    // Test ActivityEntries
+    NodeList entries = (NodeList)xpath.evaluate("/feed/entry", doc, XPathConstants.NODESET);
+    assertEquals(2, entries.getLength());
+    if (johnsEntry1.getObject().getId().equals(xpath.evaluate("content/activityEntry/object/id", entries.item(0)))) {
+      assertActivityEntriesAtomEqual(johnsEntry1, entries.item(0));
+      assertActivityEntriesAtomEqual(johnsEntry2, entries.item(1));
+    } else {
+      assertActivityEntriesAtomEqual(johnsEntry2, entries.item(0));
+      assertActivityEntriesAtomEqual(johnsEntry1, entries.item(1));
+    }
+  }
+  
+  @Test
+  public void testCreateActivityAtom() throws Exception {
+    // TODO: REST POST with format = XML or ATOM doens't work; mapping with List or Map doesn't work
+  }
+  
+  /**
+   * Asserts that an ActivityEntry is equivalent to its ATOM counterpart.
+   * 
+   * @param entry is the ActivityEntry to compare to an ATOM node
+   * @param atomNode is the ATOM node to compare to the ActivityEntry
+   * @throws XPathExpressionException 
+   */
+  private static void assertActivityEntriesAtomEqual(ActivityEntry entry, Node atomNode) throws XPathExpressionException {
+    // Test single level fields
+    RestfulXmlActivityEntryTest.assertEqualsOrNull(entry.getObject().getId(), xpath.evaluate("id", atomNode));
+    RestfulXmlActivityEntryTest.assertEqualsOrNull(entry.getTitle(), xpath.evaluate("title", atomNode));
+    RestfulXmlActivityEntryTest.assertEqualsOrNull(entry.getBody(), xpath.evaluate("summary", atomNode));
+    RestfulXmlActivityEntryTest.assertEqualsOrNull(entry.getActor().getId(), xpath.evaluate("author/uri", atomNode));
+    RestfulXmlActivityEntryTest.assertEqualsOrNull(entry.getActor().getDisplayName(), xpath.evaluate("author/name", atomNode));
+
+    // Test the ATOM's ActivityEntry within content
+    Node entryNode = (Node)xpath.evaluate("content/activityEntry", atomNode, XPathConstants.NODE);
+    RestfulXmlActivityEntryTest.assertActivityEntriesEqual(entry, entryNode);
+  }
+}

Copied: shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulJsonActivityEntryTest.java (from r1059997, shindig/trunk/extras/src/test/java/org/apache/shindig/extras/as/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?p2=shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulJsonActivityEntryTest.java&p1=shindig/trunk/extras/src/test/java/org/apache/shindig/extras/as/dataservice/integration/RestfulJsonActivityEntryTest.java&r1=1059997&r2=1060032&rev=1060032&view=diff
==============================================================================
--- shindig/trunk/extras/src/test/java/org/apache/shindig/extras/as/dataservice/integration/RestfulJsonActivityEntryTest.java (original)
+++ shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/RestfulJsonActivityEntryTest.java Mon Jan 17 18:05:04 2011
@@ -1,17 +1,34 @@
-package org.apache.shindig.extras.as.dataservice.integration;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package org.apache.shindig.social.dataservice.integration;
 
-import org.apache.shindig.extras.as.core.model.ActivityEntryImpl;
-import org.apache.shindig.extras.as.core.model.ActivityObjectImpl;
-import org.apache.shindig.extras.as.opensocial.model.ActivityEntry;
-import org.apache.shindig.extras.as.opensocial.model.ActivityObject;
 import org.apache.shindig.protocol.ContentTypes;
+import org.apache.shindig.social.core.model.ActivityEntryImpl;
+import org.apache.shindig.social.core.model.ActivityObjectImpl;
+import org.apache.shindig.social.opensocial.model.ActivityEntry;
+import org.apache.shindig.social.opensocial.model.ActivityObject;
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
 import org.junit.Before;
 import org.junit.Test;
 
-public class RestfulJsonActivityEntryTest extends AbstractActivityStreamsRestfulTests {
+public class RestfulJsonActivityEntryTest extends AbstractLargeRestfulTests {
   ActivityEntry johnsEntry;
 
   @Before
@@ -21,12 +38,12 @@ public class RestfulJsonActivityEntryTes
     actor.setDisplayName("John Doe");
     
     ActivityObject object = new ActivityObjectImpl();
-    object.setId("myObjectId123");
-    object.setDisplayName("My Object");
+    object.setId("object1");
+    object.setDisplayName("Frozen Eric");
     
     johnsEntry = new ActivityEntryImpl();
-    johnsEntry.setTitle("This is my ActivityEntry!");
-    johnsEntry.setBody("ActivityStreams are so much fun!");
+    johnsEntry.setTitle("John posted a photo");
+    johnsEntry.setBody("John Doe posted a photo to the album Germany 2009");
     johnsEntry.setActor(actor);
     johnsEntry.setObject(object);
   }
@@ -34,15 +51,15 @@ public class RestfulJsonActivityEntryTes
   /**
    * Expected response for an activity in json:
    * { 'entry' : {
-   *     'title' : 'This is my ActivityEntry!',
-   *     'body' : 'ActivityStreams are so much fun!',
+   *     'title' : 'John posted a photo',
+   *     'body' : 'John Doe posted a photo to the album German 2009',
    *     'actor' : {
    *       'id' : 'john.doe',
    *       'displayName' : 'John Doe'
    *     },
    *     'object' : {
-   *       'id' : 'myObjectId123',
-   *       'displayName' : 'My Object'
+   *       'id' : 'object1',
+   *       'displayName' : 'Frozen Eric'
    *     }
    *   }
    * }
@@ -51,7 +68,7 @@ public class RestfulJsonActivityEntryTes
    */
   @Test
   public void testGetActivityEntryJson() throws Exception {
-    String resp = getResponse("/activitystreams/john.doe/@self/@app/myObjectId123", "GET", null,
+    String resp = getResponse("/activitystreams/john.doe/@self/@app/object1", "GET", null,
         ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
     JSONObject result = getJson(resp);
     assertActivityEntriesEqual(johnsEntry, result.getJSONObject("entry"));
@@ -61,7 +78,7 @@ public class RestfulJsonActivityEntryTes
    * Expected response for a list of activities in json:
    *
    * {
-   *  "totalResults" : 1,
+   *  "totalResults" : 2,
    *  "startIndex" : 0
    *  "itemsPerPage" : 10 // Note: the js doesn't support paging. Should rest?
    *  "entry" : [
@@ -77,7 +94,7 @@ public class RestfulJsonActivityEntryTes
         ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
     JSONObject result = getJson(resp);
 
-    assertEquals(1, result.getInt("totalResults"));
+    assertEquals(2, result.getInt("totalResults"));
     assertEquals(0, result.getInt("startIndex"));
     assertActivityEntriesEqual(johnsEntry, result.getJSONArray("entry").getJSONObject(0));
   }
@@ -86,7 +103,7 @@ public class RestfulJsonActivityEntryTes
    * Expected response for a list of activities in json:
    *
    * {
-   *  "totalResults" : 3,
+   *  "totalResults" : 2,
    *  "startIndex" : 0
    *  "itemsPerPage" : 10 // Note: the js doesn't support paging. Should rest?
    *  "entry" : [
@@ -102,7 +119,7 @@ public class RestfulJsonActivityEntryTes
         ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
     JSONObject result = getJson(resp);
 
-    assertEquals(1, result.getInt("totalResults"));
+    assertEquals(2, result.getInt("totalResults"));
     assertEquals(0, result.getInt("startIndex"));
   }
 
@@ -128,15 +145,17 @@ public class RestfulJsonActivityEntryTes
         ContentTypes.OUTPUT_JSON_CONTENT_TYPE);
     JSONObject result = getJson(resp);
 
-    assertEquals(2, result.getInt("totalResults"));
+    assertEquals(3, result.getInt("totalResults"));
     assertEquals(0, result.getInt("startIndex"));
 
     JSONArray entries = result.getJSONArray("entry");
     int newEntryIndex = 0;
-    if (entries.getJSONObject(0).getJSONObject("object").getString("id")
-        .equals("myObjectId123")) {
+    if (entries.getJSONObject(1).getJSONObject("object").getString("id").equals("1")) {
       newEntryIndex = 1;
     }
+    if (entries.getJSONObject(2).getJSONObject("object").getString("id").equals("1")) {
+      newEntryIndex = 2;
+    }
 
     JSONObject jsonEntry = entries.getJSONObject(newEntryIndex);
     assertEquals("hi mom!", jsonEntry.getString("title"));