You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by li...@apache.org on 2010/05/18 18:57:25 UTC
svn commit: r945747 - in /shindig/trunk/java/gadgets/src:
main/java/org/apache/shindig/gadgets/servlet/
test/java/org/apache/shindig/gadgets/servlet/
Author: lindner
Date: Tue May 18 16:57:24 2010
New Revision: 945747
URL: http://svn.apache.org/viewvc?rev=945747&view=rev
Log:
metadata servlet with security tokens
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcGadgetContext.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcHandler.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/RpcServlet.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/JsonRpcHandlerTest.java
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcGadgetContext.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcGadgetContext.java?rev=945747&r1=945746&r2=945747&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcGadgetContext.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcGadgetContext.java Tue May 18 16:57:24 2010
@@ -18,6 +18,7 @@
*/
package org.apache.shindig.gadgets.servlet;
+import org.apache.shindig.auth.SecurityToken;
import org.apache.shindig.common.uri.Uri;
import org.apache.shindig.gadgets.GadgetContext;
import org.apache.shindig.gadgets.RenderingContext;
@@ -48,13 +49,14 @@ public class JsonRpcGadgetContext extend
private final Uri url;
private final UserPrefs userPrefs;
private final String view;
+ private final SecurityToken token;
/**
* @param context Request global parameters.
* @param gadget Values for the gadget being rendered.
* @throws JSONException If parameters can't be extracted or aren't correctly formed.
*/
- public JsonRpcGadgetContext(JSONObject context, JSONObject gadget) throws JSONException {
+ public JsonRpcGadgetContext(JSONObject context, JSONObject gadget, SecurityToken token) throws JSONException {
this.context = context;
this.gadget = gadget;
@@ -67,6 +69,7 @@ public class JsonRpcGadgetContext extend
container = context.optString("container");
debug = context.optBoolean("debug");
renderingContext = RenderingContext.METADATA;
+ this.token = token;
}
@Override
@@ -145,6 +148,13 @@ public class JsonRpcGadgetContext extend
return view;
}
+ @Override
+ public SecurityToken getToken() {
+ if (token == null)
+ return super.getToken();
+ return token;
+ }
+
/**
* @param obj
* @return The locale, if appropriate parameters are set, or null.
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcHandler.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcHandler.java?rev=945747&r1=945746&r2=945747&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcHandler.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcHandler.java Tue May 18 16:57:24 2010
@@ -18,6 +18,8 @@
*/
package org.apache.shindig.gadgets.servlet;
+import org.apache.shindig.auth.SecurityToken;
+import org.apache.shindig.config.ContainerConfig;
import org.apache.shindig.gadgets.Gadget;
import org.apache.shindig.gadgets.GadgetContext;
import org.apache.shindig.gadgets.UrlGenerator;
@@ -35,6 +37,7 @@ import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
+import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -52,33 +55,40 @@ public class JsonRpcHandler {
protected final ExecutorService executor;
protected final Processor processor;
protected final UrlGenerator urlGenerator;
+ protected final ContainerConfig containerConfig;
@Inject
- public JsonRpcHandler(ExecutorService executor, Processor processor, UrlGenerator urlGenerator) {
+ public JsonRpcHandler(ExecutorService executor, Processor processor, UrlGenerator urlGenerator, ContainerConfig containerConfig) {
this.executor = executor;
this.processor = processor;
this.urlGenerator = urlGenerator;
+ this.containerConfig = containerConfig;
}
+
/**
* Processes a JSON request.
*
* @param request Original JSON request
* @return The JSON response.
*/
- public JSONObject process(JSONObject request) throws RpcException, JSONException {
+ public JSONObject process(HttpServletRequest servletRequest, JSONObject request) throws RpcException, JSONException {
List<GadgetContext> gadgets;
JSONObject requestContext = request.getJSONObject("context");
JSONArray requestedGadgets = request.getJSONArray("gadgets");
+ // TODO null checks..
+
// Process all JSON first so that we don't wind up with hanging threads if
// a JSONException is thrown.
gadgets = Lists.newArrayListWithCapacity(requestedGadgets.length());
for (int i = 0, j = requestedGadgets.length(); i < j; ++i) {
- GadgetContext context = new JsonRpcGadgetContext(
- requestContext, requestedGadgets.getJSONObject(i));
+ // Calculate security token
+ SecurityToken token = generateSecurityToken(servletRequest, requestedGadgets.getJSONObject(i));
+ GadgetContext context = new JsonRpcGadgetContext(requestContext, requestedGadgets.getJSONObject(i), token);
+
gadgets.add(context);
}
@@ -125,6 +135,17 @@ public class JsonRpcHandler {
return response;
}
+ /**
+ * Return a security token for this gadget
+ * @param req
+ * @return
+ */
+ protected SecurityToken generateSecurityToken(HttpServletRequest req, JSONObject j) {
+ // No security token by default..
+ return null;
+ }
+
+
protected Job createNewJob(GadgetContext context) {
return new Job(context);
}
@@ -226,9 +247,12 @@ public class JsonRpcHandler {
.put("singleton", prefs.getSingleton())
.put("scaling", prefs.getScaling())
.put("scrolling", prefs.getScrolling());
- return gadgetJson;
+
+ gadgetJson.put("st", gadget.getContext().getToken().toString());
+ return gadgetJson;
}
+
private List<JSONObject> getOrderedEnums(UserPref pref) throws JSONException {
List<UserPref.EnumValuePair> orderedEnums = pref.getOrderedEnumValues();
List<JSONObject> jsonEnums = Lists.newArrayListWithCapacity(orderedEnums.size());
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/RpcServlet.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/RpcServlet.java?rev=945747&r1=945746&r2=945747&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/RpcServlet.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/RpcServlet.java Tue May 18 16:57:24 2010
@@ -21,6 +21,7 @@ package org.apache.shindig.gadgets.servl
import org.apache.commons.io.IOUtils;
import org.apache.shindig.common.servlet.HttpUtil;
import org.apache.shindig.common.servlet.InjectedServlet;
+import org.apache.shindig.gadgets.http.HttpRequest;
import org.json.JSONException;
import org.json.JSONObject;
@@ -101,8 +102,8 @@ public class RpcServlet extends Injected
private Result process(HttpServletRequest request, HttpServletResponse response, String body) {
try {
- JSONObject req = new JSONObject(body);
- JSONObject resp = jsonHandler.process(req);
+ JSONObject jsonreq = new JSONObject(body);
+ JSONObject resp = jsonHandler.process(request, jsonreq);
response.setStatus(HttpServletResponse.SC_OK);
response.setContentType("application/json; charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=rpc.txt");
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/JsonRpcHandlerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/JsonRpcHandlerTest.java?rev=945747&r1=945746&r2=945747&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/JsonRpcHandlerTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/JsonRpcHandlerTest.java Tue May 18 16:57:24 2010
@@ -82,7 +82,7 @@ public class JsonRpcHandlerTest {
private final FakeProcessor processor = new FakeProcessor();
private final FakeUrlGenerator urlGenerator = new FakeUrlGenerator();
private final JsonRpcHandler jsonRpcHandler
- = new JsonRpcHandler(new TestExecutorService(), processor, urlGenerator);
+ = new JsonRpcHandler(new TestExecutorService(), processor, urlGenerator, null);
private JSONObject createContext(String lang, String country)
throws JSONException {