Reviewers: dev-remailer_shindig.apache.org, dev_shindig.apache.org,

Message:
Update the REST collection converter (RestfullCollectionConverter) still
following 0.9 specs.
It currently uses isFiltered, isSorted, isUpdatedSince instead of
filtered, sorted, and updatedSince.

- Henry

Description:
Currently, the REST collection converter (RestfullCollectionConverter)
still following 0.9 specs. It uses isFiltered, isSorted, isUpdatedSince
instead of filtered, sorted, and updatedSince.

Please review this at http://codereview.appspot.com/4190048/

Affected files:
java/common/src/main/java/org/apache/shindig/protocol/conversion/xstream/RestfullCollectionConverter.java java/social-api/src/test/resources/org/apache/shindig/social/opensocial/util/opensocial.xsd


Index: java/social-api/src/test/resources/org/apache/shindig/social/opensocial/util/opensocial.xsd
===================================================================
--- java/social-api/src/test/resources/org/apache/shindig/social/opensocial/util/opensocial.xsd (revision 1071510) +++ java/social-api/src/test/resources/org/apache/shindig/social/opensocial/util/opensocial.xsd (working copy)
@@ -21,34 +21,49 @@
   elementFormDefault="qualified"
   targetNamespace="http://ns.opensocial.org/2008/opensocial";
   xmlns:xs="http://www.w3.org/2001/XMLSchema";>
-
-  <!--  this is a proposal for the OpenSocial 0.9 XSD. -->
+
   <xs:element name="person" type="tns:Person" />
   <xs:element name="group" type="tns:Group" />
   <xs:element name="activity" type="tns:Activity" />
   <xs:element name="appdata" type="tns:Appdata" />

   <xs:element name="response" type="tns:Response" />
-
-
+
   <xs:complexType name="Response">
     <xs:choice minOccurs="0" maxOccurs="unbounded" >
-      <xs:element minOccurs="0" name="itemsPerPage" type="xs:int" />
-      <xs:element minOccurs="0" name="startIndex" type="xs:long" />
-      <xs:element minOccurs="0" name="totalResults" type="xs:long" />
-      <xs:element minOccurs="0" name="isFiltered" type="xs:boolean" />
-      <xs:element minOccurs="0" name="isSorted" type="xs:boolean" />
-      <xs:element minOccurs="0" name="isUpdatedSince" type="xs:boolean" />
       <xs:element minOccurs="0" name="group" type="tns:Group" />
       <xs:element minOccurs="0" name="activity" type="tns:Activity" />
       <xs:element minOccurs="0" name="person" type="tns:Person" />
- <xs:element minOccurs="0" maxOccurs="unbounded" name="entry" type="tns:Entry" />
+
+      <xs:group ref="tns:collection" />
+ <xs:element minOccurs="0" name="invalidationKeys" type="tns:InvalidationKeys" />
+
       <!--  this is to allow responses to create to validate -->
       <xs:element minOccurs="0" name="map" type="xs:anyType" />
       <xs:element minOccurs="0" name="list.container" type="xs:anyType" />
     </xs:choice>
   </xs:complexType>
-
+
+  <!-- update for OpenSocial 1.1 XSD -->
+ <!-- (see http://opensocial-resources.googlecode.com/svn/spec/1.1/Core-API-Server.xml#XML_format_XSD) -->
+  <xs:group name="collection">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="itemsPerPage" type="xs:int"/>
+      <xs:element minOccurs="0" name="startIndex" type="xs:long"/>
+      <xs:element minOccurs="0" name="totalResults" type="xs:long"/>
+      <xs:element minOccurs="0" name="filtered" type="xs:boolean"/>
+      <xs:element minOccurs="0" name="sorted" type="xs:boolean"/>
+      <xs:element minOccurs="0" name="updatedSince" type="xs:boolean"/>
+ <xs:element name="entry" type="tns:Entry" minOccurs="0" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:group>
+
+  <xs:complexType name="InvalidationKeys">
+    <xs:sequence>
+ <xs:element name="invalidationKey" type="xs:string" maxOccurs="unbounded"/>
+    </xs:sequence>
+  </xs:complexType>
+
   <xs:complexType name="Entry" >
     <xs:choice>
       <xs:element minOccurs="0" name="activity" type="tns:Activity" />
@@ -56,7 +71,7 @@
       <xs:element minOccurs="0" name="group" type="tns:Group" />
     </xs:choice>
   </xs:complexType>
-
+

   <xs:complexType name="Activity">
     <xs:choice minOccurs="0" maxOccurs="unbounded">
@@ -253,6 +268,20 @@
       <xs:element minOccurs="0" name="type" type="xs:string" />
     </xs:all>
   </xs:complexType>
+
+  <xs:complexType name="Album">
+    <xs:all>
+      <xs:element minOccurs="0" name="id" type="xs:string" />
+      <xs:element minOccurs="0" name="thumbnailUrl" type="xs:string" />
+      <xs:element minOccurs="0" name="title" type="xs:string" />
+      <xs:element minOccurs="0" name="description" type="xs:string" />
+      <xs:element minOccurs="0" name="location" type="tns:Address" />
+      <xs:element minOccurs="0" name="ownerId" type="xs:string" />
+ <xs:element minOccurs="0" name="mediaType" type="tns:MediaItemType" />
+      <xs:element minOccurs="0" name="mediaMimeType" type="xs:string" />
+      <xs:element minOccurs="0" name="mediaItemCount" type="xs:integer" />
+    </xs:all>
+  </xs:complexType>

   <xs:complexType name="MediaItem">
     <xs:all>
Index: java/common/src/main/java/org/apache/shindig/protocol/conversion/xstream/RestfullCollectionConverter.java
===================================================================
--- java/common/src/main/java/org/apache/shindig/protocol/conversion/xstream/RestfullCollectionConverter.java (revision 1071510) +++ java/common/src/main/java/org/apache/shindig/protocol/conversion/xstream/RestfullCollectionConverter.java (working copy)
@@ -58,28 +58,24 @@
    */
   @Override
public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
-
     RestfulCollection<?> collection = (RestfulCollection<?>) source;

-    // Required per spec
+    writer.startNode("itemsPerPage");
+    writer.setValue(String.valueOf(collection.getItemsPerPage()));
+    writer.endNode();
     writer.startNode("startIndex");
     writer.setValue(String.valueOf(collection.getStartIndex()));
     writer.endNode();
     writer.startNode("totalResults");
     writer.setValue(String.valueOf(collection.getTotalResults()));
     writer.endNode();
-    writer.startNode("itemsPerPage");
-    writer.setValue(String.valueOf(collection.getItemsPerPage()));
-    writer.endNode();
-
-    // Optional
-    writer.startNode("isFiltered");
+    writer.startNode("filtered");
     writer.setValue(String.valueOf(collection.isFiltered()));
     writer.endNode();
-    writer.startNode("isSorted");
+    writer.startNode("sorted");
     writer.setValue(String.valueOf(collection.isSorted()));
     writer.endNode();
-    writer.startNode("isUpdatedSince");
+    writer.startNode("updatedSince");
     writer.setValue(String.valueOf(collection.isUpdatedSince()));
     writer.endNode();

@@ -102,5 +98,4 @@
     // TODO Auto-generated method stub
     return null;
   }
-
 }


Reply via email to