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