You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by rb...@apache.org on 2012/08/07 23:53:23 UTC

svn commit: r1370555 - in /shindig/trunk/java: common/src/main/java/org/apache/shindig/protocol/ common/src/main/java/org/apache/shindig/protocol/conversion/ common/src/test/java/org/apache/shindig/protocol/ social-api/src/main/java/org/apache/shindig/...

Author: rbaxter85
Date: Tue Aug  7 21:53:23 2012
New Revision: 1370555

URL: http://svn.apache.org/viewvc?rev=1370555&view=rev
Log:
SHINDIG-1779
Committed For Erik Bi
Make RestfulCollection object to be backed by a map with the put and get methods exposed

Modified:
    shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/RestfulCollection.java
    shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanXStreamConverter.java
    shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/RestfulCollectionTest.java
    shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomFeed.java

Modified: shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/RestfulCollection.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/RestfulCollection.java?rev=1370555&r1=1370554&r2=1370555&view=diff
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/RestfulCollection.java (original)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/RestfulCollection.java Tue Aug  7 21:53:23 2012
@@ -18,12 +18,13 @@
  */
 package org.apache.shindig.protocol;
 
+import java.util.HashMap;
 import java.util.List;
 
 /**
  * Data structure representing a Rest response.
  */
-public class RestfulCollection<T> {
+public class RestfulCollection<T> extends HashMap<String, Object>{
   private List<T> list;
   private int startIndex;
   private int totalResults;
@@ -45,6 +46,9 @@ public class RestfulCollection<T> {
     this.filtered=true;
     this.sorted=true;
     this.updatedSince=true;
+    put("filtered", true);
+    put("sorted", true);
+    put("updatedSince", true);
   }
 
   /**
@@ -62,8 +66,13 @@ public class RestfulCollection<T> {
     this.startIndex = startIndex;
     this.totalResults = totalResults;
     this.itemsPerPage = Math.min(itemsPerPage, totalResults);
+    put("list", list);
+    put("startIndex", startIndex);
+    put("totalResults", totalResults);
+    put("itemsPerPage", this.itemsPerPage);
   }
 
+
   /**
    * Helper constructor for un-paged collection,
    * Use {@link #RestfulCollection(java.util.List, int, int, int)} in paginated context
@@ -78,6 +87,7 @@ public class RestfulCollection<T> {
 
   public void setList(List<T> list) {
     this.list = list;
+    put("list", list);
   }
 
   public int getStartIndex() {
@@ -86,6 +96,7 @@ public class RestfulCollection<T> {
 
   public void setStartIndex(int startIndex) {
     this.startIndex = startIndex;
+    put("startIndex", startIndex);
   }
 
   public int getTotalResults() {
@@ -94,6 +105,7 @@ public class RestfulCollection<T> {
 
   public void setItemsPerPage(int itemsPerPage) {
     this.itemsPerPage = itemsPerPage;
+    put("itemsPerPage", itemsPerPage);
   }
 
   public int getItemsPerPage() {
@@ -102,6 +114,7 @@ public class RestfulCollection<T> {
 
   public void setTotalResults(int totalResults) {
     this.totalResults = totalResults;
+    put("totalResults", totalResults);
   }
 
   public boolean isFiltered() {
@@ -110,6 +123,7 @@ public class RestfulCollection<T> {
 
   public void setFiltered(boolean filtered) {
     this.filtered = filtered;
+    put("filtered", filtered);
   }
 
   public boolean isSorted() {
@@ -118,6 +132,7 @@ public class RestfulCollection<T> {
 
   public void setSorted(boolean sorted) {
     this.sorted = sorted;
+    put("sorted", sorted);
   }
 
   public boolean isUpdatedSince() {
@@ -126,5 +141,6 @@ public class RestfulCollection<T> {
 
   public void setUpdatedSince(boolean updatedSince) {
     this.updatedSince = updatedSince;
+    put("updatedSince", updatedSince);
   }
 }

Modified: shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanXStreamConverter.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanXStreamConverter.java?rev=1370555&r1=1370554&r2=1370555&view=diff
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanXStreamConverter.java (original)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanXStreamConverter.java Tue Aug  7 21:53:23 2012
@@ -100,7 +100,17 @@ public class BeanXStreamConverter implem
   private String convertToXml(Object obj) {
 
     writerStack.reset();
-    if (obj instanceof Map<?, ?>) {
+    if (obj instanceof RestfulCollection) {
+      XStreamConfiguration.ConverterConfig cc = converterMap
+          .get(XStreamConfiguration.ConverterSet.COLLECTION);
+      cc.mapper.setBaseObject(obj); // thread safe method
+      String result = cc.xstream.toXML(obj);
+
+      if (LOG.isLoggable(Level.FINE))
+        LOG.fine("Result is " + result);
+
+      return XML_DECL + result;
+    } else if (obj instanceof Map<?, ?>) {
       Map<?, ?> m = (Map<?, ?>) obj;
       XStreamConfiguration.ConverterConfig cc = converterMap
           .get(XStreamConfiguration.ConverterSet.MAP);
@@ -114,16 +124,6 @@ public class BeanXStreamConverter implem
 
         return XML_DECL + "<response xmlns=\"http://ns.opensocial.org/2008/opensocial\">" + result + "</response>";
       }
-    } else if (obj instanceof RestfulCollection) {
-      XStreamConfiguration.ConverterConfig cc = converterMap
-          .get(XStreamConfiguration.ConverterSet.COLLECTION);
-      cc.mapper.setBaseObject(obj); // thread safe method
-      String result = cc.xstream.toXML(obj);
-
-      if (LOG.isLoggable(Level.FINE))
-        LOG.fine("Result is " + result);
-
-      return XML_DECL + result;
     } else if (obj instanceof DataCollection) {
       XStreamConfiguration.ConverterConfig cc = converterMap
           .get(XStreamConfiguration.ConverterSet.MAP);

Modified: shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/RestfulCollectionTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/RestfulCollectionTest.java?rev=1370555&r1=1370554&r2=1370555&view=diff
==============================================================================
--- shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/RestfulCollectionTest.java (original)
+++ shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/RestfulCollectionTest.java Tue Aug  7 21:53:23 2012
@@ -64,4 +64,34 @@ public class RestfulCollectionTest exten
     assertEquals(totalResults, collection.getTotalResults());
     assertEquals(resultsPerPage, collection.getItemsPerPage());
   }
+
+  @Test
+  public void testMapMethods() throws Exception {
+    RestfulCollection<String> collection
+        = new RestfulCollection<String>(Lists.<String>newArrayList());
+
+    List<String> entryList = Lists.newArrayList("banana");
+    int startIndex = 5;
+    int totalResults = 8675309;
+    String anyItem = "anyvalue";
+
+    collection.put("list", entryList);
+    collection.put("startIndex", startIndex);
+    collection.put("totalResults", totalResults);
+    collection.put("anyItem",anyItem);
+
+    assertEquals(entryList, collection.get("list"));
+    assertEquals(startIndex, collection.get("startIndex"));
+    assertEquals(totalResults, collection.get("totalResults"));
+    assertEquals(anyItem, collection.get("anyItem"));
+
+    int resultsPerPage = 1;
+    List<String> entry = Lists.newArrayList("banana", "who");
+    collection = new RestfulCollection<String>(entry, startIndex, totalResults, resultsPerPage);
+
+    assertEquals(entry, collection.get("list"));
+    assertEquals(startIndex, collection.get("startIndex"));
+    assertEquals(totalResults, collection.get("totalResults"));
+    assertEquals(resultsPerPage, collection.get("itemsPerPage"));
+  }
 }

Modified: shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomFeed.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomFeed.java?rev=1370555&r1=1370554&r2=1370555&view=diff
==============================================================================
--- shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomFeed.java (original)
+++ shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/core/util/atom/AtomFeed.java Tue Aug  7 21:53:23 2012
@@ -54,16 +54,7 @@ public class AtomFeed {
   @SuppressWarnings("unchecked")
   public AtomFeed(Object obj) {
     Preconditions.checkNotNull(obj);
-    if (obj instanceof Map) {
-      Map<?, ?> m = (Map<?, ?>) obj;
-      entry = Lists.newArrayList();
-      for ( Entry<?, ?> o : m.entrySet()) {
-        entry.add(new AtomEntry(o));
-      }
-      startIndex = 0;
-      totalResults = entry.size();
-      itemsPerPage = entry.size();
-    } else if (obj instanceof RestfulCollection<?>) {
+    if (obj instanceof RestfulCollection<?>) {
       RestfulCollection<?> r = (RestfulCollection<?>) obj;
       entry = Lists.newArrayList();
       List<?> entryList = r.getList();
@@ -75,6 +66,15 @@ public class AtomFeed {
       itemsPerPage = r.getItemsPerPage();
       author = "?";
       link = new AtomLink("rel", "???");
+    } else if (obj instanceof Map) {
+      Map<?, ?> m = (Map<?, ?>) obj;
+      entry = Lists.newArrayList();
+      for ( Entry<?, ?> o : m.entrySet()) {
+        entry.add(new AtomEntry(o));
+      }
+      startIndex = 0;
+      totalResults = entry.size();
+      itemsPerPage = entry.size();
     } else if ( obj instanceof DataCollection ) {
       DataCollection dc = (DataCollection) obj;
       entry = Lists.newArrayList();