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 2010/11/17 20:35:43 UTC
svn commit: r1036173 - in /shindig/trunk:
content/samplecontainer/examples/ActivityStreams/
java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/
java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/
Author: lindner
Date: Wed Nov 17 19:35:43 2010
New Revision: 1036173
URL: http://svn.apache.org/viewvc?rev=1036173&view=rev
Log:
SHINDIG-1470 | Patch from Eric Woods
Added:
shindig/trunk/content/samplecontainer/examples/ActivityStreams/ActivityStreamTemplate.xml
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/PipelinedData.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/PipelinedDataTest.java
Added: shindig/trunk/content/samplecontainer/examples/ActivityStreams/ActivityStreamTemplate.xml
URL: http://svn.apache.org/viewvc/shindig/trunk/content/samplecontainer/examples/ActivityStreams/ActivityStreamTemplate.xml?rev=1036173&view=auto
==============================================================================
--- shindig/trunk/content/samplecontainer/examples/ActivityStreams/ActivityStreamTemplate.xml (added)
+++ shindig/trunk/content/samplecontainer/examples/ActivityStreams/ActivityStreamTemplate.xml Wed Nov 17 19:35:43 2010
@@ -0,0 +1,49 @@
+<!--
+ * 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.
+-->
+<Module>
+ <ModulePrefs title="ActivityStream Template">
+ <Require feature="opensocial-data"/>
+ <Require feature="opensocial-templates"/>
+ <Require feature="dynamic-height"/>
+ </ModulePrefs>
+ <Content type="html">
+ <![CDATA[
+ <script xmlns:os="http://ns.opensocial.org/2008/markup" type="text/os-data">
+ <os:PeopleRequest key="viewer" userId="@viewer" groupId="@self"/>
+ <os:ActivityStreamsRequest key="entries" userId="john.doe" groupId="@self"/>
+ </script>
+
+ <script type="text/os-template">
+ ${viewer.name.formatted}'s ActivityEntries:
+ <ul>
+ <li repeat="${entries}">
+ <span id="id${Context.Index}">${Cur.title}</span>
+ </li>
+ </ul>
+ </script>
+
+ <script type="text/javascript">
+ function init() {
+ gadgets.window.adjustHeight();
+ }
+ gadgets.util.registerOnLoadHandler(init);
+ </script>
+ ]]>
+ </Content>
+</Module>
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/PipelinedData.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/PipelinedData.java?rev=1036173&r1=1036172&r2=1036173&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/PipelinedData.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/spec/PipelinedData.java Wed Nov 17 19:35:43 2010
@@ -94,6 +94,8 @@ public class PipelinedData {
allPreloads.put(key, createPersonAppDataRequest(child));
} else if ("ActivitiesRequest".equals(elementName)) {
allPreloads.put(key, createActivityRequest(child));
+ } else if ("ActivityStreamsRequest".equals(elementName)) {
+ allPreloads.put(key, createActivityStreamRequest(child));
} else if ("DataRequest".equals(elementName)) {
allPreloads.put(key, createDataRequest(child));
} else if ("HttpRequest".equals(elementName)) {
@@ -321,6 +323,23 @@ public class PipelinedData {
return expression;
}
+
+ /** Handle the os:ActivityStreamsRequest element */
+ private SocialData createActivityStreamRequest(Element child) throws ELException {
+ SocialData expression = new SocialData(child.getAttribute("key"), "activitystreams.get");
+
+ copyAttribute("groupId", child, expression, String.class);
+ copyAttribute("userId", child, expression, JSONArray.class);
+ updateUserArrayState("userId", child);
+ copyAttribute("appId", child, expression, String.class);
+ copyAttribute("activityEntryId", child, expression, JSONArray.class);
+ copyAttribute("fields", child, expression, JSONArray.class);
+ copyAttribute("startIndex", child, expression, Integer.class);
+ copyAttribute("count", child, expression, Integer.class);
+
+ // TODO: add activity paging support
+ return expression;
+ }
/** Handle the os:DataRequest element */
private SocialData createDataRequest(Element child) throws ELException, SpecParserException {
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/PipelinedDataTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/PipelinedDataTest.java?rev=1036173&r1=1036172&r2=1036173&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/PipelinedDataTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/spec/PipelinedDataTest.java Wed Nov 17 19:35:43 2010
@@ -255,6 +255,35 @@ public class PipelinedDataTest {
assertEquals(PipelinedData.BatchType.SOCIAL, batchItem.getType());
JsonAssert.assertObjectEquals(expected, batchItem.getData());
}
+
+ @Test
+ public void testActivityStreamsRequest() throws Exception {
+ String xml = "<Content><ActivityStreamsRequest xmlns=\"" + PipelinedData.OPENSOCIAL_NAMESPACE + "\" "
+ + " key=\"key\""
+ + " userId=\"@owner,@viewer\""
+ + " startIndex=\"10\""
+ + " count=\"20\""
+ + " fields=\"foo,bar\""
+ + "/></Content>";
+
+
+ PipelinedData socialData = new PipelinedData(XmlUtil.parse(xml), null);
+ assertTrue(socialData.needsOwner());
+ assertTrue(socialData.needsViewer());
+
+ JSONObject expected = new JSONObject("{method: 'activitystreams.get', id: 'key', params:"
+ + "{userId: ['@owner','@viewer'],"
+ + "startIndex: 10,"
+ + "count: 20,"
+ + "fields: ['foo','bar']"
+ + "}}");
+
+ PipelinedData.Batch batch = socialData.getBatch(expressions, elResolver);
+ assertEquals(1, batch.getPreloads().size());
+ PipelinedData.BatchItem batchItem = batch.getPreloads().get("key");
+ assertEquals(PipelinedData.BatchType.SOCIAL, batchItem.getType());
+ JsonAssert.assertObjectEquals(expected, batchItem.getData());
+ }
@Test
public void testIgnoreNoNamespace() throws Exception {