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());
}
}