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"));