Author: evan
Date: Thu Sep 25 20:36:22 2008
New Revision: 699164

URL: http://svn.apache.org/viewvc?rev=699164&view=rev
Log:
Added unit tests for getTypedParameter
Added new call to getTypedParameters(), which convers the entire set of 
parameters to the passed in class.

Modified:
    
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RequestItem.java
    
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RestfulRequestItem.java
    
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RpcRequestItem.java
    
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RestfulRequestItemTest.java
    
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RpcRequestItemTest.java

Modified: 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RequestItem.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RequestItem.java?rev=699164&r1=699163&r2=699164&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RequestItem.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RequestItem.java
 Thu Sep 25 20:36:22 2008
@@ -193,7 +193,9 @@
     return token;
   }
 
-  public abstract <T> T getTypedParameter(String parameterName, Class<T> 
postDataClass);
+  public abstract <T> T getTypedParameter(String parameterName, Class<T> 
dataTypeClass);
+
+  public abstract <T> T getTypedParameters(Class<T> dataTypeClass);
 
   public abstract void applyUrlTemplate(String urlTemplate);
 

Modified: 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RestfulRequestItem.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RestfulRequestItem.java?rev=699164&r1=699163&r2=699164&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RestfulRequestItem.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RestfulRequestItem.java
 Thu Sep 25 20:36:22 2008
@@ -98,7 +98,7 @@
   private static Map<String, List<String>> 
createParameterMap(HttpServletRequest servletRequest) {
     Map<String, List<String>> parameters = Maps.newHashMap();
 
-    Enumeration names = servletRequest.getParameterNames();
+    Enumeration<?> names = servletRequest.getParameterNames();
     while (names.hasMoreElements()) {
       String name = (String) names.nextElement();
       String[] paramValues = servletRequest.getParameterValues(name);
@@ -177,10 +177,15 @@
 
 
   @Override
-  public <T> T getTypedParameter(String parameterName, Class<T> postDataClass) 
{
+  public <T> T getTypedParameter(String parameterName, Class<T> dataTypeClass) 
{
     // We assume the the only typed parameter in a restful request is the 
post-content
     // and so we simply ignore the parameter name
-    return converter.convertToObject(postData, postDataClass);
+    return getTypedParameters(dataTypeClass);
+  }
+  
+  @Override
+  public <T> T getTypedParameters(Class<T> dataTypeClass) {
+    return converter.convertToObject(postData, dataTypeClass);
   }
 
 

Modified: 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RpcRequestItem.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RpcRequestItem.java?rev=699164&r1=699163&r2=699164&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RpcRequestItem.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RpcRequestItem.java
 Thu Sep 25 20:36:22 2008
@@ -115,7 +115,11 @@
       throw new SocialSpiException(ResponseError.BAD_REQUEST, je.getMessage(), 
je);
     }
   }
-
+  
+  @Override
+  public<T> T getTypedParameters(Class<T> dataTypeClass) {
+    return converter.convertToObject(data.toString(), dataTypeClass);
+  }
 
   @Override
   public void applyUrlTemplate(String urlTemplate) {
@@ -132,6 +136,15 @@
   }
 
   /** Method used only by tests */
+  void setJsonParameter(String paramName, JSONObject param) {
+    try {
+      data.put(paramName, param);
+    } catch (JSONException je) {
+      throw new IllegalArgumentException(je);
+    }
+  }
+
+  /** Method used only by tests */
   void setListParameter(String paramName, List<String> params) {
     try {
       JSONArray arr = new JSONArray(params);

Modified: 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RestfulRequestItemTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RestfulRequestItemTest.java?rev=699164&r1=699163&r2=699164&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RestfulRequestItemTest.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RestfulRequestItemTest.java
 Thu Sep 25 20:36:22 2008
@@ -18,12 +18,14 @@
 package org.apache.shindig.social.opensocial.service;
 
 import org.apache.shindig.common.testing.FakeGadgetToken;
+import org.apache.shindig.social.core.util.BeanJsonConverter;
 import org.apache.shindig.social.opensocial.spi.GroupId;
 import org.apache.shindig.social.opensocial.spi.PersonService;
 import org.apache.shindig.social.opensocial.spi.UserId;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
+import com.google.inject.Guice;
 
 import org.easymock.classextension.EasyMock;
 
@@ -45,7 +47,7 @@
     super.setUp();
     request = new RestfulRequestItem(
         DEFAULT_PATH + "?fields=huey,dewey,louie", "GET",
-        null, FAKE_TOKEN, null);
+        "{name: 'Bob', id: '1234'}", FAKE_TOKEN, new 
BeanJsonConverter(Guice.createInjector()));
   }
 
   public void testParseUrl() throws Exception {
@@ -124,4 +126,29 @@
     assertEquals("path", RestfulRequestItem.getServiceFromPath("/path/fun"));
     assertEquals("path", 
RestfulRequestItem.getServiceFromPath("/path/fun/yes"));
   }
+  
+  public static class InputData {
+    String name;
+    int id;
+    
+    public void setName(String name) {
+      this.name = name;
+    }
+    
+    public void setId(int id) {
+      this.id = id;
+    }
+  }
+  
+  public void testGetTypedParameter() throws Exception {
+    InputData input = request.getTypedParameter("anykey", InputData.class);
+    assertEquals("Bob", input.name);
+    assertEquals(1234, input.id);
+  }
+  
+  public void testGetTypedParameters() throws Exception {
+    InputData input = request.getTypedParameters(InputData.class);
+    assertEquals("Bob", input.name);
+    assertEquals(1234, input.id);
+  }
 }

Modified: 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RpcRequestItemTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RpcRequestItemTest.java?rev=699164&r1=699163&r2=699164&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RpcRequestItemTest.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/RpcRequestItemTest.java
 Thu Sep 25 20:36:22 2008
@@ -18,12 +18,14 @@
 package org.apache.shindig.social.opensocial.service;
 
 import org.apache.shindig.common.testing.FakeGadgetToken;
+import org.apache.shindig.social.core.util.BeanJsonConverter;
 import org.apache.shindig.social.opensocial.spi.GroupId;
 import org.apache.shindig.social.opensocial.spi.PersonService;
 import org.apache.shindig.social.opensocial.spi.UserId;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
+import com.google.inject.Guice;
 
 import org.json.JSONObject;
 
@@ -35,11 +37,11 @@
 
   private static final FakeGadgetToken FAKE_TOKEN = new FakeGadgetToken();
 
-
   private RpcRequestItem request;
 
   private JSONObject baseRpc;
 
+  @Override
   protected void setUp() throws Exception {
     super.setUp();
     baseRpc = new JSONObject(
@@ -48,7 +50,7 @@
             + "groupId:@self,"
             + "fields:[huey,dewey,louie]"
             + "}}");
-    request = new RpcRequestItem(baseRpc, FAKE_TOKEN, null);
+    request = new RpcRequestItem(baseRpc, FAKE_TOKEN, new 
BeanJsonConverter(Guice.createInjector()));
   }
 
   public void testParseMethod() throws Exception {
@@ -145,4 +147,38 @@
     request.setListParameter("fields", Lists.newArrayList("happy", "sad", 
"grumpy"));
     assertEquals(Sets.newHashSet("happy", "sad", "grumpy"), 
request.getFields());
   }
+  
+  public static class InputData {
+    String name;
+    int id;
+    
+    public void setName(String name) {
+      this.name = name;
+    }
+    
+    public void setId(int id) {
+      this.id = id;
+    }
+  }
+  
+  public void testGetTypedParameter() throws Exception {
+    JSONObject obj = new JSONObject();
+    obj.put("name", "Bob");
+    obj.put("id", "1234");
+    
+    request.setJsonParameter("tp", obj);
+    
+    InputData input = request.getTypedParameter("tp", InputData.class);
+    assertEquals("Bob", input.name);
+    assertEquals(1234, input.id);
+  }
+  
+  public void testGetTypedParameters() throws Exception {
+    request.setParameter("name", "Bob");
+    request.setParameter("id", "1234");
+    
+    InputData input = request.getTypedParameters(InputData.class);
+    assertEquals("Bob", input.name);
+    assertEquals(1234, input.id);
+  }
 }


Reply via email to