You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by hs...@apache.org on 2010/09/30 19:09:35 UTC
svn commit: r1003169 - in /shindig/trunk/java/gadgets/src:
main/java/org/apache/shindig/gadgets/servlet/HttpRequestHandler.java
test/java/org/apache/shindig/gadgets/servlet/HttpRequestHandlerTest.java
Author: hsaputra
Date: Thu Sep 30 17:09:34 2010
New Revision: 1003169
URL: http://svn.apache.org/viewvc?rev=1003169&view=rev
Log:
SHINDIG-1436 | Shindig does not support returning a JSON array when format 'json' is selected on an osapi.http.get request
Codereview: http://codereview.appspot.com/2323043/
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HttpRequestHandler.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HttpRequestHandlerTest.java
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HttpRequestHandler.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HttpRequestHandler.java?rev=1003169&r1=1003168&r2=1003169&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HttpRequestHandler.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HttpRequestHandler.java Thu Sep 30 17:09:34 2010
@@ -35,6 +35,8 @@ import org.apache.shindig.protocol.BaseR
import org.apache.shindig.protocol.Operation;
import org.apache.shindig.protocol.ProtocolException;
import org.apache.shindig.protocol.Service;
+
+import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@@ -285,7 +287,12 @@ public class HttpRequestHandler {
return processFeed(request, body);
} else if ("json".equalsIgnoreCase(request.format)) {
try {
- return new JSONObject(body);
+ body = body.trim();
+ if(body.charAt(0) == '[') {
+ return new JSONArray(body);
+ } else {
+ return new JSONObject(body);
+ }
} catch (JSONException e) {
// TODO: include data block with invalid JSON
throw new ProtocolException(HttpServletResponse.SC_NOT_ACCEPTABLE, "Response not valid JSON", e);
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HttpRequestHandlerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HttpRequestHandlerTest.java?rev=1003169&r1=1003168&r2=1003169&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HttpRequestHandlerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/HttpRequestHandlerTest.java Thu Sep 30 17:09:34 2010
@@ -287,7 +287,7 @@ public class HttpRequestHandlerTest exte
}
@Test
- public void testJsonGet() throws Exception {
+ public void testJsonObjectGet() throws Exception {
JSONObject request = new JSONObject("{method:http.get, id:req1, params : {"
+ "href:'http://www.example.org/somecontent', format:'json'"
+ "}}");
@@ -308,6 +308,27 @@ public class HttpRequestHandlerTest exte
}
@Test
+ public void testJsonArrayGet() throws Exception {
+ JSONObject request = new JSONObject("{method:http.get, id:req1, params : {"
+ + "href:'http://www.example.org/somecontent', format:'json'"
+ + "}}");
+ HttpRequest httpRequest = new HttpRequest(Uri.parse("http://www.example.org/somecontent"));
+ httpRequest.setMethod("GET");
+ builder.setResponseString("[{key:1},{key:2}]");
+ expect(pipeline.execute(eqRequest(httpRequest))).andReturn(builder.create()).anyTimes();
+
+ replay();
+ RpcHandler operation = registry.getRpcHandler(request);
+
+ HttpRequestHandler.HttpApiResponse httpApiResponse =
+ (HttpRequestHandler.HttpApiResponse)operation.execute(emptyFormItems, token, converter).get();
+ verify();
+
+ JsonAssert.assertJsonEquals("{ headers : {}, status : 200, content : [{key:1},{key:2}]}}",
+ converter.convertToString(httpApiResponse));
+ }
+
+ @Test
public void testSignedGetRequest() throws Exception {
JSONObject request = new JSONObject("{method:http.get, id:req1, params : {"
+ "href:'http://www.example.org/somecontent',"