You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by et...@apache.org on 2009/04/10 22:56:30 UTC
svn commit: r764050 - in /incubator/shindig/trunk/java:
common/src/test/java/org/apache/shindig/common/
gadgets/src/main/java/org/apache/shindig/gadgets/
gadgets/src/main/java/org/apache/shindig/gadgets/preload/
gadgets/src/main/java/org/apache/shindig...
Author: etnu
Date: Fri Apr 10 20:56:29 2009
New Revision: 764050
URL: http://svn.apache.org/viewvc?rev=764050&view=rev
Log:
Migrating more code to JsonSerializer
Modified:
incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/JsonAssert.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/FetchResponseUtils.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/preload/HttpPreloader.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/FetchResponseUtilsTest.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/HttpPreloaderTest.java
Modified: incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/JsonAssert.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/JsonAssert.java?rev=764050&r1=764049&r2=764050&view=diff
==============================================================================
--- incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/JsonAssert.java (original)
+++ incubator/shindig/trunk/java/common/src/test/java/org/apache/shindig/common/JsonAssert.java Fri Apr 10 20:56:29 2009
@@ -91,4 +91,16 @@
break;
}
}
+
+ public static void assertObjectEquals(Object left, Object right) throws Exception {
+ if (!(left instanceof String)) {
+ left = JsonSerializer.serialize(left);
+ }
+
+ if (!(right instanceof String)){
+ right = JsonSerializer.serialize(right);
+ }
+
+ assertJsonEquals((String) left, (String) right);
+ }
}
Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/FetchResponseUtils.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/FetchResponseUtils.java?rev=764050&r1=764049&r2=764050&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/FetchResponseUtils.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/FetchResponseUtils.java Fri Apr 10 20:56:29 2009
@@ -19,12 +19,11 @@
package org.apache.shindig.gadgets;
import org.apache.shindig.gadgets.http.HttpResponse;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-import java.util.Map;
+import com.google.common.collect.Maps;
+
import java.util.Collection;
+import java.util.Map;
/**
* Handles converting HttpResponse objects to the format expected by the makeRequest javascript.
@@ -33,43 +32,47 @@
/**
* Convert a response to a JSON object.
- *
+ *
* The returned JSON object contains the following values:
* id: the id of the response
* rc: integer response code
* body: string response body
* headers: object, keys are header names, values are lists of header values
- *
+ *
+ * The returned object is guaranteed to be mutable.
+ *
* @param response the response body
* @param id the response id, or null if not needed
* @param body string to use as the body of the response.
* @return a JSONObject representation of the response body.
*/
- public static JSONObject getResponseAsJson(HttpResponse response, String id, String body)
- throws JSONException {
- JSONObject resp = new JSONObject();
+ public static Map<String, Object> getResponseAsJson(HttpResponse response, String id,
+ String body) {
+ Map<String, Object> resp = Maps.newHashMap();
if (id != null) {
resp.put("id", id);
}
resp.put("rc", response.getHttpStatusCode());
resp.put("body", body);
- JSONObject headers = new JSONObject();
+ Map<String, Collection<String>> headers = Maps.newHashMap();
addHeaders(headers, response, "set-cookie");
addHeaders(headers, response, "location");
- resp.put("headers", headers);
+ if (headers.size() > 0) {
+ resp.put("headers", headers);
+ }
// Merge in additional response data
for (Map.Entry<String, String> entry : response.getMetadata().entrySet()) {
resp.put(entry.getKey(), entry.getValue());
}
return resp;
}
-
- private static void addHeaders(JSONObject headers, HttpResponse response, String headerName)
- throws JSONException {
- Collection<String> values = response.getHeaders(headerName);
+
+ private static void addHeaders(Map<String, Collection<String>> headers, HttpResponse response,
+ String name) {
+ Collection<String> values = response.getHeaders(name);
if (!values.isEmpty()) {
- headers.put(headerName.toLowerCase(), new JSONArray(values));
+ headers.put(name.toLowerCase(), values);
}
}
-
+
}
Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/preload/HttpPreloader.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/preload/HttpPreloader.java?rev=764050&r1=764049&r2=764050&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/preload/HttpPreloader.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/preload/HttpPreloader.java Fri Apr 10 20:56:29 2009
@@ -33,11 +33,9 @@
import com.google.common.collect.Lists;
import com.google.inject.Inject;
-import org.json.JSONException;
-import org.json.JSONObject;
-
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.concurrent.Callable;
@@ -103,16 +101,11 @@
* Implements PreloadData by returning a Map that matches the output format used by makeRequest.
*/
private static class HttpPreloadData implements PreloadedData {
- private final JSONObject data;
+ private final Map<String, Object> data;
public HttpPreloadData(HttpResponse response, String key) {
- JSONObject data = null;
- try {
- data = FetchResponseUtils.getResponseAsJson(response, key, response.getResponseAsString());
- } catch (JSONException e) {
- data = new JSONObject();
- }
- this.data = data;
+ this.data
+ = FetchResponseUtils.getResponseAsJson(response, key, response.getResponseAsString());
}
public Collection<Object> toJson() {
Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java?rev=764050&r1=764049&r2=764050&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java Fri Apr 10 20:56:29 2009
@@ -20,6 +20,7 @@
import org.apache.shindig.auth.AuthInfo;
import org.apache.shindig.auth.SecurityToken;
+import org.apache.shindig.common.JsonSerializer;
import org.apache.shindig.common.uri.Uri;
import org.apache.shindig.common.util.Utf8UrlCoder;
import org.apache.shindig.gadgets.AuthType;
@@ -35,10 +36,9 @@
import com.google.inject.Inject;
import com.google.inject.Singleton;
-import org.json.JSONException;
-import org.json.JSONObject;
-
import java.io.IOException;
+import java.util.Collections;
+import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -171,29 +171,26 @@
*/
private String convertResponseToJson(SecurityToken authToken, HttpServletRequest request,
HttpResponse results) throws GadgetException {
- try {
- String originalUrl = request.getParameter(ProxyBase.URL_PARAM);
- String body = "";
- if (results.getHttpStatusCode() == 200) {
- body = results.getResponseAsString();
+ String originalUrl = request.getParameter(ProxyBase.URL_PARAM);
+ String body = "";
+ if (results.getHttpStatusCode() == 200) {
+ body = results.getResponseAsString();
- if ("FEED".equals(request.getParameter(CONTENT_TYPE_PARAM))) {
- body = processFeed(originalUrl, request, body);
- }
+ if ("FEED".equals(request.getParameter(CONTENT_TYPE_PARAM))) {
+ body = processFeed(originalUrl, request, body);
}
- JSONObject resp = FetchResponseUtils.getResponseAsJson(results, null, body);
+ }
+ Map<String, Object> resp = FetchResponseUtils.getResponseAsJson(results, null, body);
- if (authToken != null) {
- String updatedAuthToken = authToken.getUpdatedToken();
- if (updatedAuthToken != null) {
- resp.put("st", updatedAuthToken);
- }
+ if (authToken != null) {
+ String updatedAuthToken = authToken.getUpdatedToken();
+ if (updatedAuthToken != null) {
+ resp.put("st", updatedAuthToken);
}
- // Use raw param as key as URL may have to be decoded
- return new JSONObject().put(originalUrl, resp).toString();
- } catch (JSONException e) {
- return "";
}
+
+ // Use raw param as key as URL may have to be decoded
+ return JsonSerializer.serialize(Collections.singletonMap(originalUrl, resp));
}
/**
Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/FetchResponseUtilsTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/FetchResponseUtilsTest.java?rev=764050&r1=764049&r2=764050&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/FetchResponseUtilsTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/FetchResponseUtilsTest.java Fri Apr 10 20:56:29 2009
@@ -18,14 +18,14 @@
*/
package org.apache.shindig.gadgets;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
+import org.apache.shindig.common.JsonAssert;
import org.apache.shindig.gadgets.http.HttpResponse;
import org.apache.shindig.gadgets.http.HttpResponseBuilder;
-import org.json.JSONObject;
+
import org.junit.Test;
+import java.util.Map;
+
/**
* Test of FetchResponseUtils
*/
@@ -36,13 +36,11 @@
HttpResponse response = new HttpResponseBuilder()
.setHttpStatusCode(999)
.create();
- JSONObject obj = FetchResponseUtils.getResponseAsJson(response, "key", "body");
- assertEquals(999, obj.getInt("rc"));
- assertEquals("key", obj.getString("id"));
- assertEquals("body", obj.getString("body"));
- assertEquals(0, obj.getJSONObject("headers").length());
+ Map<String, Object> obj = FetchResponseUtils.getResponseAsJson(response, "key", "body");
+
+ JsonAssert.assertObjectEquals("{'rc':999,'id':'key',body:'body'}", obj);
}
-
+
@Test
public void testMetadata() throws Exception {
HttpResponse response = new HttpResponseBuilder()
@@ -50,31 +48,24 @@
.setMetadata("metaname", "metavalue")
.setMetadata("more meta", "more value")
.create();
- JSONObject obj = FetchResponseUtils.getResponseAsJson(response, null, "body");
- assertEquals(999, obj.getInt("rc"));
- assertFalse(obj.has("id"));
- assertEquals("body", obj.getString("body"));
- assertEquals("metavalue", obj.getString("metaname"));
- assertEquals("more value", obj.getString("more meta"));
+ Map<String, Object> obj = FetchResponseUtils.getResponseAsJson(response, null, "body");
+
+ JsonAssert.assertObjectEquals(
+ "{rc:999,body:'body',metaname:'metavalue','more meta':'more value'}", obj);
}
-
+
@Test
public void testHeaders() throws Exception {
HttpResponse response = new HttpResponseBuilder()
.setHttpStatusCode(999)
.setHeader("Set-Cookie", "cookie")
- .setHeader("location", "somewhere")
+ .setHeader("location", "here")
.create();
- JSONObject obj = FetchResponseUtils.getResponseAsJson(response, "key", "body");
- assertEquals(999, obj.getInt("rc"));
- assertEquals("key", obj.getString("id"));
- assertEquals("body", obj.getString("body"));
- assertEquals(1, obj.getJSONObject("headers").getJSONArray("set-cookie").length());
- assertEquals("cookie", obj.getJSONObject("headers").getJSONArray("set-cookie").get(0));
- assertEquals(1, obj.getJSONObject("headers").getJSONArray("location").length());
- assertEquals("somewhere", obj.getJSONObject("headers").getJSONArray("location").get(0));
+ Map<String, Object> obj = FetchResponseUtils.getResponseAsJson(response, "key", "body");
+ JsonAssert.assertObjectEquals(
+ "{rc:999,id:'key',body:'body',headers:{set-cookie:['cookie'],location:['here']}}", obj);
}
-
+
@Test
public void testMultiValuedHeaders() throws Exception {
HttpResponse response = new HttpResponseBuilder()
@@ -83,13 +74,8 @@
.addHeader("Set-Cookie", "cookie2")
.addHeader("Set-Cookie", "cookie3")
.create();
- JSONObject obj = FetchResponseUtils.getResponseAsJson(response, "key", "body");
- assertEquals(999, obj.getInt("rc"));
- assertEquals("key", obj.getString("id"));
- assertEquals("body", obj.getString("body"));
- assertEquals(3, obj.getJSONObject("headers").getJSONArray("set-cookie").length());
- assertEquals("cookie", obj.getJSONObject("headers").getJSONArray("set-cookie").get(0));
- assertEquals("cookie2", obj.getJSONObject("headers").getJSONArray("set-cookie").get(1));
- assertEquals("cookie3", obj.getJSONObject("headers").getJSONArray("set-cookie").get(2));
+ Map<String, Object> obj = FetchResponseUtils.getResponseAsJson(response, "key", "body");
+ JsonAssert.assertObjectEquals(
+ "{rc:999,id:'key',body:'body',headers:{set-cookie:['cookie','cookie2','cookie3']}}", obj);
}
}
Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/HttpPreloaderTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/HttpPreloaderTest.java?rev=764050&r1=764049&r2=764050&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/HttpPreloaderTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/preload/HttpPreloaderTest.java Fri Apr 10 20:56:29 2009
@@ -22,9 +22,9 @@
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import org.apache.shindig.common.JsonAssert;
import org.apache.shindig.gadgets.AuthType;
import org.apache.shindig.gadgets.Gadget;
-import org.apache.shindig.gadgets.GadgetException;
import org.apache.shindig.gadgets.http.HttpFetcher;
import org.apache.shindig.gadgets.http.HttpRequest;
import org.apache.shindig.gadgets.http.HttpResponse;
@@ -34,15 +34,15 @@
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
-import org.json.JSONException;
-import org.json.JSONObject;
import org.junit.Test;
+import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
import java.util.concurrent.Callable;
/**
@@ -64,7 +64,7 @@
return oauthFetcher.fetch(request);
}
- public void normalizeProtocol(HttpRequest request) throws GadgetException {}
+ public void normalizeProtocol(HttpRequest request) {}
};
private void checkRequest(HttpRequest request) {
@@ -73,15 +73,19 @@
assertEquals(context.getToken().getAppId(), request.getSecurityToken().getAppId());
}
- private static void checkResults(JSONObject results) throws JSONException {
- assertEquals(PRELOAD_CONTENT, results.get("body"));
- assertEquals(HttpResponse.SC_OK, results.getInt("rc"));
- assertEquals("yo=momma", results.getJSONObject("headers").getJSONArray("set-cookie").get(0));
-
- for (Entry<String, String> entry : PRELOAD_METADATA.entrySet()) {
- assertEquals("Metadata values not copied to output.",
- entry.getValue(), results.get(entry.getKey()));
- }
+ private static void checkResults(Object results, String url) throws Exception {
+ Map<String, Object> expected = Maps.newHashMap();
+ expected.put("body", PRELOAD_CONTENT);
+ expected.put("rc", HttpResponse.SC_OK);
+ expected.put("id", url);
+ expected.put("headers", Collections.singletonMap("set-cookie", Arrays.asList("yo=momma")));
+ expected.putAll(PRELOAD_METADATA);
+
+ JsonAssert.assertObjectEquals(expected, results);
+ }
+
+ private static void checkResults(Object results) throws Exception {
+ checkResults(results, PRELOAD_HREF);
}
@Test
@@ -104,7 +108,7 @@
PreloadedData data = preloaded.iterator().next().call();
checkRequest(plainFetcher.requests.get(0));
- checkResults((JSONObject) data.toJson().iterator().next());
+ checkResults(data.toJson().iterator().next());
}
@Test
@@ -130,7 +134,7 @@
checkRequest(request);
assertTrue(request.getOAuthArguments().getSignOwner());
assertFalse(request.getOAuthArguments().getSignViewer());
- checkResults((JSONObject) data.toJson().iterator().next());
+ checkResults(data.toJson().iterator().next());
}
@Test
@@ -155,7 +159,7 @@
HttpRequest request = oauthFetcher.requests.get(0);
checkRequest(request);
- checkResults((JSONObject) data.toJson().iterator().next());
+ checkResults(data.toJson().iterator().next());
}
@Test
@@ -180,14 +184,13 @@
assertEquals(2, list.size());
checkRequest(plainFetcher.requests.get(0));
- checkResults((JSONObject) list.get(0));
+ checkResults(list.get(0));
checkRequest(plainFetcher.requests.get(1));
- checkResults((JSONObject) list.get(1));
+ checkResults(list.get(1), PRELOAD_HREF2);
}
- private List<Object> getAll(
- Collection<Callable<PreloadedData>> preloaded) throws Exception {
+ private List<Object> getAll(Collection<Callable<PreloadedData>> preloaded) throws Exception {
List<Object> list = Lists.newArrayList();
for (Callable<PreloadedData> preloadCallable : preloaded) {
list.addAll(preloadCallable.call().toJson());
@@ -218,7 +221,7 @@
List<Object> list = getAll(preloaded);
assertEquals(1, list.size());
checkRequest(plainFetcher.requests.get(0));
- checkResults((JSONObject) list.get(0));
+ checkResults(list.get(0));
}
private static class RecordingHttpFetcher implements HttpFetcher {