You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by ev...@apache.org on 2008/09/26 05:36:23 UTC
svn commit: r699164 - in /incubator/shindig/trunk/java/social-api/src:
main/java/org/apache/shindig/social/opensocial/service/
test/java/org/apache/shindig/social/opensocial/service/
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);
+ }
}