You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by lr...@apache.org on 2008/02/21 21:43:54 UTC

svn commit: r629982 - in /incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http: ProxyHandler.java ProxyServlet.java

Author: lryan
Date: Thu Feb 21 12:43:53 2008
New Revision: 629982

URL: http://svn.apache.org/viewvc?rev=629982&view=rev
Log:
Output Gadget Errors for proxy requests

Modified:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/ProxyHandler.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/ProxyServlet.java

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/ProxyHandler.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/ProxyHandler.java?rev=629982&r1=629981&r2=629982&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/ProxyHandler.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/ProxyHandler.java Thu Feb 21 12:43:53 2008
@@ -59,7 +59,7 @@
   public void fetchJson(HttpServletRequest request,
                         HttpServletResponse response,
                         GadgetSigner signer)
-      throws ServletException, IOException {
+      throws ServletException, IOException, GadgetException {
     GadgetToken token = extractAndValidateToken(request, signer);
     String url = request.getParameter("url");
     URL originalUrl = validateUrl(url);
@@ -95,7 +95,7 @@
   public void fetch(HttpServletRequest request,
                     HttpServletResponse response,
                     GadgetSigner signer)
-      throws ServletException, IOException {
+      throws ServletException, IOException, GadgetException {
     GadgetToken token = extractAndValidateToken(request, signer);
     URL originalUrl = validateUrl(request.getParameter("url"));
     URL signedUrl = signUrl(originalUrl, token, request);
@@ -251,19 +251,15 @@
 
   /**
    * @return A valid token for the given input.
-   * @throws ServletException
+   * @throws GadgetException
    */
   private GadgetToken extractAndValidateToken(HttpServletRequest request,
-      GadgetSigner signer) throws ServletException {
-    try {
-      if (signer == null) {
-        return null;
-      }
-      String token = getParameter(request, "st", "");
-      return signer.createToken(token);
-    } catch (GadgetException ge) {
-      throw new ServletException(ge);
+      GadgetSigner signer) throws GadgetException {
+    if (signer == null) {
+      return null;
     }
+    String token = getParameter(request, "st", "");
+    return signer.createToken(token);
   }
 
   /**
@@ -283,16 +279,12 @@
    */
   @SuppressWarnings("unchecked")
   private URL signUrl(URL originalUrl, GadgetToken token,
-      HttpServletRequest request) throws ServletException {
-    try {
-      if (token == null || !"signed".equals(request.getParameter("authz"))) {
-        return originalUrl;
-      }
-      String method = getParameter(request, "httpMethod", "GET");
-      return token.signUrl(originalUrl, method, request.getParameterMap());
-    } catch (GadgetException ge) {
-      throw new ServletException(ge);
+      HttpServletRequest request) throws GadgetException {
+    if (token == null || !"signed".equals(request.getParameter("authz"))) {
+      return originalUrl;
     }
+    String method = getParameter(request, "httpMethod", "GET");
+    return token.signUrl(originalUrl, method, request.getParameterMap());
   }
 
   /**

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/ProxyServlet.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/ProxyServlet.java?rev=629982&r1=629981&r2=629982&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/ProxyServlet.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/ProxyServlet.java Thu Feb 21 12:43:53 2008
@@ -19,8 +19,11 @@
 package org.apache.shindig.gadgets.http;
 
 import org.apache.shindig.gadgets.GadgetServerConfigReader;
+import org.apache.shindig.gadgets.GadgetException;
 
 import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
@@ -29,6 +32,10 @@
 import javax.servlet.http.HttpServletResponse;
 
 public class ProxyServlet extends HttpServlet {
+
+  private static final Logger logger
+      = Logger.getLogger("org.apache.shindig.gadgets");
+
   private CrossServletState servletState;
   private ProxyHandler proxyHandler;
 
@@ -44,12 +51,16 @@
   protected void doGet(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
     String output = request.getParameter("output");
-    if ("js".equals(output)) {
-      proxyHandler.fetchJson(
-          request, response, servletState.getGadgetSigner(request));
-    } else {
-      proxyHandler.fetch(
-          request, response, servletState.getGadgetSigner(request));
+    try {
+      if ("js".equals(output)) {
+        proxyHandler.fetchJson(
+            request, response, servletState.getGadgetSigner(request));
+      } else {
+        proxyHandler.fetch(
+            request, response, servletState.getGadgetSigner(request));
+      }
+    } catch (GadgetException ge) {
+      outputError(ge, response);
     }
   }
 
@@ -58,5 +69,17 @@
       throws ServletException, IOException {
     // Currently they are identical
     doGet(request, response);
+  }
+
+  private void outputError(GadgetException excep, HttpServletResponse resp) throws IOException {
+    StringBuilder err = new StringBuilder();
+    err.append(excep.getCode().toString());
+    err.append(' ');
+    err.append(excep.getMessage());
+
+    // Log the errors here for now. We might want different severity levels
+    // for different error codes.
+    logger.log(Level.INFO, "Proxy request failed", err);
+    resp.sendError(HttpServletResponse.SC_BAD_REQUEST, err.toString());
   }
 }