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 {