You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2014/11/12 18:25:39 UTC
svn commit: r1638875 - in /sling/trunk:
bundles/engine/src/main/java/org/apache/sling/engine/impl/
launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/resolver/errorhandler/
Author: bdelacretaz
Date: Wed Nov 12 17:25:38 2014
New Revision: 1638875
URL: http://svn.apache.org/r1638875
Log:
SLING-4143 - preserve original HTTP status and message if error handling script fails
Modified:
sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/DefaultErrorHandler.java
sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/resolver/errorhandler/ErrorHandlingTest.java
Modified: sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/DefaultErrorHandler.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/DefaultErrorHandler.java?rev=1638875&r1=1638874&r2=1638875&view=diff
==============================================================================
--- sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/DefaultErrorHandler.java (original)
+++ sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/DefaultErrorHandler.java Wed Nov 12 17:25:38 2014
@@ -64,11 +64,11 @@ public class DefaultErrorHandler impleme
return delegate;
}
- private void delegateFailed(Throwable t, HttpServletRequest request, HttpServletResponse response) throws IOException {
- final String m = t.getClass().getSimpleName() + " in ErrorHandler";
+ private void delegateFailed(int originalStatus, String originalMessage, Throwable t, HttpServletRequest request, HttpServletResponse response) throws IOException {
// don't include Throwable in the response, gives too much information
+ final String m = "Error handler failed:" + t.getClass().getName();
log.error(m, t);
- sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, m, null, request, response);
+ sendError(originalStatus, originalMessage, null, request, response);
}
// ---------- ErrorHandler interface (default implementation) --------------
@@ -95,9 +95,9 @@ public class DefaultErrorHandler impleme
try {
delegate.handleError(status, message, request, response);
} catch(Exception e) {
- delegateFailed(e, request, response);
+ delegateFailed(status, message, e, request, response);
} catch(Error r) {
- delegateFailed(r, request, response);
+ delegateFailed(status, message, r, request, response);
}
return;
}
@@ -126,19 +126,20 @@ public class DefaultErrorHandler impleme
final SlingHttpServletRequest request,
final SlingHttpServletResponse response)
throws IOException {
+ final int status = HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
// If we have a delegate let it handle the error
if(delegate != null) {
try {
delegate.handleError(throwable, request, response);
} catch(Exception e) {
- delegateFailed(e, request, response);
+ delegateFailed(status, throwable.toString(), e, request, response);
} catch(Error r) {
- delegateFailed(r, request, response);
+ delegateFailed(status, throwable.toString(), r, request, response);
}
return;
}
- sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
+ sendError(status,
throwable.getMessage(), throwable, request, response);
}
Modified: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/resolver/errorhandler/ErrorHandlingTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/resolver/errorhandler/ErrorHandlingTest.java?rev=1638875&r1=1638874&r2=1638875&view=diff
==============================================================================
--- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/resolver/errorhandler/ErrorHandlingTest.java (original)
+++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/resolver/errorhandler/ErrorHandlingTest.java Wed Nov 12 17:25:38 2014
@@ -136,15 +136,15 @@ public class ErrorHandlingTest extends R
}
public void test_421_exception() throws Throwable{
- final String expected = "IOException in ErrorHandler";
+ final String expected = "421 from rendering script";
final String url = testNodePath + SELECTOR_421 + ".errorScriptException.html";
- assertWithRetries(url, 500, expected);
+ assertWithRetries(url, 421, expected);
}
public void test_421_error() throws Throwable{
- final String expected = "IOException in ErrorHandler";
+ final String expected = "421 from rendering script";
final String url = testNodePath + SELECTOR_421 + ".errorScriptError.html";
- assertWithRetries(url, 500, expected);
+ assertWithRetries(url, 421, expected);
}
public void test_throwable_errorhandling() throws Throwable{