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