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;
}
-
}