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 {