You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by jo...@apache.org on 2010/02/02 00:22:19 UTC

svn commit: r905452 - in /incubator/shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/process/ main/java/org/apache/shindig/gadgets/render/ test/java/org/apache/shindig/gadgets/oauth/ test/java/org/apache/shindig/gadgets/process/ tes...

Author: johnh
Date: Mon Feb  1 23:22:18 2010
New Revision: 905452

URL: http://svn.apache.org/viewvc?rev=905452&view=rev
Log:
Add Http response codes to ProcessingException for better status tracking.

thanks to Ziv Horesh for the patch.


Modified:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/process/ProcessingException.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/process/Processor.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/Renderer.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/GadgetOAuthCallbackGeneratorTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/process/ProcessorTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RendererTest.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/JsonRpcHandlerTest.java

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/process/ProcessingException.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/process/ProcessingException.java?rev=905452&r1=905451&r2=905452&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/process/ProcessingException.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/process/ProcessingException.java Mon Feb  1 23:22:18 2010
@@ -22,15 +22,23 @@
  * Exceptions thrown during gadget processing.
  */
 public class ProcessingException extends Exception {
-  public ProcessingException(Throwable t) {
+  private int statusCode;
+
+  public ProcessingException(Throwable t, int httpStatusCode) {
     super(t);
+    statusCode = httpStatusCode;
   }
-
-  public ProcessingException(String message) {
+  public ProcessingException(String message, int httpStatusCode) {
     super(message);
+    statusCode = httpStatusCode;
   }
 
-  public ProcessingException(String message, Throwable t) {
+  public ProcessingException(String message, Throwable t, int httpStatusCode) {
     super(message, t);
+    statusCode = httpStatusCode;
+  }
+  
+  public int getHttpStatusCode() {
+    return statusCode;
   }
 }

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/process/Processor.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/process/Processor.java?rev=905452&r1=905451&r2=905452&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/process/Processor.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/process/Processor.java Mon Feb  1 23:22:18 2010
@@ -34,6 +34,8 @@
 
 import java.util.logging.Logger;
 
+import javax.servlet.http.HttpServletResponse;
+
 /**
  * Converts an input Context into an output Gadget.
  */
@@ -69,16 +71,19 @@
     Uri url = context.getUrl();
 
     if (url == null) {
-      throw new ProcessingException("Missing or malformed url parameter");
+      throw new ProcessingException("Missing or malformed url parameter",
+          HttpServletResponse.SC_BAD_REQUEST);
     }
 
     if (!"http".equalsIgnoreCase(url.getScheme()) && !"https".equalsIgnoreCase(url.getScheme())) {
-      throw new ProcessingException("Unsupported scheme (must be http or https).");
+      throw new ProcessingException("Unsupported scheme (must be http or https).",
+          HttpServletResponse.SC_FORBIDDEN);
     }
 
     if (blacklist.isBlacklisted(context.getUrl())) {
       LOG.info("Attempted to render blacklisted gadget: " + context.getUrl());
-      throw new ProcessingException("The requested gadget is unavailable");
+      throw new ProcessingException("The requested gadget is unavailable",
+          HttpServletResponse.SC_FORBIDDEN);
     }
 
     try {
@@ -91,7 +96,8 @@
           .setSpec(spec)
           .setCurrentView(getView(context, spec));
     } catch (GadgetException e) {
-      throw new ProcessingException(e.getMessage(), e);
+      throw new ProcessingException(e.getMessage(), e, 
+          HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
     }
   }
 

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/Renderer.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/Renderer.java?rev=905452&r1=905451&r2=905452&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/Renderer.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/render/Renderer.java Mon Feb  1 23:22:18 2010
@@ -90,7 +90,7 @@
     } catch (RenderingException e) {
       return logError(context.getUrl(), e.getHttpStatusCode(), e);
     } catch (ProcessingException e) {
-      return logError(context.getUrl(), HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e);
+      return logError(context.getUrl(), e.getHttpStatusCode(), e);
     } catch (RuntimeException e) {
       if (e.getCause() instanceof GadgetException) {
         return logError(context.getUrl(), HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getCause());

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/GadgetOAuthCallbackGeneratorTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/GadgetOAuthCallbackGeneratorTest.java?rev=905452&r1=905451&r2=905452&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/GadgetOAuthCallbackGeneratorTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/oauth/GadgetOAuthCallbackGeneratorTest.java Mon Feb  1 23:22:18 2010
@@ -42,6 +42,8 @@
 import org.junit.Before;
 import org.junit.Test;
 
+import javax.servlet.http.HttpServletResponse;
+
 public class GadgetOAuthCallbackGeneratorTest {
 
   private static final String MAKE_REQUEST_URL = "http://renderinghost/gadgets/makeRequest";
@@ -111,7 +113,7 @@
     request.setSecurityToken(securityToken);
     request.setOAuthArguments(new OAuthArguments());
     expect(processor.process(eqContext(securityToken, request.getOAuthArguments())))
-        .andThrow(new ProcessingException("doh"));
+        .andThrow(new ProcessingException("doh", HttpServletResponse.SC_BAD_REQUEST));
     
     control.replay();
     

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/process/ProcessorTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/process/ProcessorTest.java?rev=905452&r1=905451&r2=905452&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/process/ProcessorTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/process/ProcessorTest.java Mon Feb  1 23:22:18 2010
@@ -20,6 +20,7 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import org.apache.shindig.common.uri.Uri;
 import org.apache.shindig.config.ContainerConfig;
@@ -37,6 +38,8 @@
 import org.junit.Before;
 import org.junit.Test;
 
+import javax.servlet.http.HttpServletResponse;
+
 public class ProcessorTest {
   private static final Uri SPEC_URL = Uri.parse("http://example.org/gadget.xml");
   private static final Uri TYPE_URL_HREF = Uri.parse("http://example.org/gadget.php");
@@ -130,20 +133,36 @@
     assertTrue("Blacklist not checked", blacklist.wasChecked);
   }
 
-  @Test(expected = ProcessingException.class)
+  @Test
   public void blacklistedGadgetThrows() throws Exception {
     blacklist.isBlacklisted = true;
-    processor.process(makeContext("html"));
+    try {
+      processor.process(makeContext("html"));
+      fail("expected ProcessingException");
+    } catch (ProcessingException e) {
+      assertEquals(HttpServletResponse.SC_FORBIDDEN, e.getHttpStatusCode());
+    }
+    
   }
 
-  @Test(expected = ProcessingException.class)
-  public void nullUrlThrows() throws ProcessingException {
-    processor.process(makeContext("html", null));
+  @Test
+  public void nullUrlThrows() throws Exception {
+    try {
+      processor.process(makeContext("html", null));
+      fail("expected ProcessingException");
+    } catch (ProcessingException e) {
+      assertEquals(HttpServletResponse.SC_BAD_REQUEST, e.getHttpStatusCode());
+    }
   }
 
-  @Test(expected = ProcessingException.class)
-  public void nonHttpOrHttpsThrows() throws ProcessingException {
-    processor.process(makeContext("html", Uri.parse("file://foo")));
+  @Test
+  public void nonHttpOrHttpsThrows() throws Exception {
+    try {
+      processor.process(makeContext("html", Uri.parse("file://foo")));
+      fail("expected ProcessingException");
+    } catch (ProcessingException e) {
+      assertEquals(HttpServletResponse.SC_FORBIDDEN, e.getHttpStatusCode());
+    }
   }
 
   private static class FakeBlacklist implements GadgetBlacklist {

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RendererTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RendererTest.java?rev=905452&r1=905451&r2=905452&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RendererTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/RendererTest.java Mon Feb  1 23:22:18 2010
@@ -101,10 +101,11 @@
 
   @Test
   public void handlesProcessingExceptionGracefully() {
-    processor.exception = new ProcessingException("foo");
+    processor.exception = new ProcessingException("foo", HttpServletResponse.SC_FORBIDDEN);
     RenderingResults results = renderer.render(makeContext("html"));
     assertEquals(RenderingResults.Status.ERROR, results.getStatus());
     assertEquals("foo", results.getErrorMessage());
+    assertEquals(HttpServletResponse.SC_FORBIDDEN, results.getHttpStatusCode());    
   }
 
   @Test

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/JsonRpcHandlerTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/JsonRpcHandlerTest.java?rev=905452&r1=905451&r2=905452&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/JsonRpcHandlerTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/JsonRpcHandlerTest.java Mon Feb  1 23:22:18 2010
@@ -46,6 +46,8 @@
 import java.util.Collections;
 import java.util.Map;
 
+import javax.servlet.http.HttpServletResponse;
+
 public class JsonRpcHandlerTest {
   private static final Uri SPEC_URL = Uri.parse("http://example.org/g.xml");
   private static final Uri SPEC_URL2 = Uri.parse("http://example.org/g2.xml");
@@ -203,7 +205,8 @@
         .put("context", createContext("en", "US"))
         .put("gadgets", gadgets);
 
-    processor.exceptions.put(SPEC_URL2, new ProcessingException("broken"));
+    processor.exceptions.put(SPEC_URL2, 
+        new ProcessingException("broken", HttpServletResponse.SC_BAD_REQUEST));
 
     JSONObject response = jsonRpcHandler.process(input);