You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jb...@apache.org on 2007/03/05 19:02:05 UTC
svn commit: r514752 - in /incubator/wicket/branches/wicket-1.x/wicket/src:
main/java/wicket/ajax/AjaxRequestTarget.java
test/java/wicket/protocol/http/WebResponseTest.java
Author: jbq
Date: Mon Mar 5 10:02:04 2007
New Revision: 514752
URL: http://svn.apache.org/viewvc?view=rev&rev=514752
Log:
WICKET-313 Use standard exception handling in AjaxRequestTarget
Modified:
incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/ajax/AjaxRequestTarget.java
incubator/wicket/branches/wicket-1.x/wicket/src/test/java/wicket/protocol/http/WebResponseTest.java
Modified: incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/ajax/AjaxRequestTarget.java
URL: http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/ajax/AjaxRequestTarget.java?view=diff&rev=514752&r1=514751&r2=514752
==============================================================================
--- incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/ajax/AjaxRequestTarget.java (original)
+++ incubator/wicket/branches/wicket-1.x/wicket/src/main/java/wicket/ajax/AjaxRequestTarget.java Mon Mar 5 10:02:04 2007
@@ -142,7 +142,7 @@
*
* @author Igor Vaynberg (ivaynberg)
*/
- private final class EncodingResponse extends Response
+ private final class EncodingResponse extends WebResponse
{
private final AppendingStringBuffer buffer = new AppendingStringBuffer(256);
@@ -157,7 +157,9 @@
*/
public EncodingResponse(Response originalResponse)
{
+ super(((WebResponse)originalResponse).getHttpServletResponse());
this.originalResponse = originalResponse;
+ setAjax(true);
}
/**
@@ -439,8 +441,6 @@
*/
public final void respond(final RequestCycle requestCycle)
{
- try
- {
final Application app = Application.get();
// Determine encoding
@@ -461,6 +461,7 @@
response.write("\"?>");
response.write("<ajax-response>");
+ // invoke onbeforerespond event on listeners
fireOnBeforeRespondListeners();
// normal behavior
@@ -483,17 +484,7 @@
respondInvocation(response, js);
}
-
response.write("</ajax-response>");
- }
- catch (RuntimeException ex)
- {
- // log the error but output nothing in the response, parse
- // failure
- // of response will cause any javascript failureHandler to be
- // invoked
- LOG.error("Error while responding to an AJAX request: " + toString(), ex);
- }
}
private void fireOnBeforeRespondListeners()
@@ -633,7 +624,6 @@
return str.replaceAll("]", "]^");
}
-
/**
* @return name of encoding used to possibly encode the contents of the
* CDATA blocks
@@ -700,6 +690,7 @@
page.startComponentRender(component);
component.renderComponent();
+ // render any associated headers of the component
respondHeaderContribution(response, component);
page.endComponentRender(component);
@@ -977,4 +968,4 @@
encodingBodyResponse.reset();
}
-}
\ No newline at end of file
+}
Modified: incubator/wicket/branches/wicket-1.x/wicket/src/test/java/wicket/protocol/http/WebResponseTest.java
URL: http://svn.apache.org/viewvc/incubator/wicket/branches/wicket-1.x/wicket/src/test/java/wicket/protocol/http/WebResponseTest.java?view=diff&rev=514752&r1=514751&r2=514752
==============================================================================
--- incubator/wicket/branches/wicket-1.x/wicket/src/test/java/wicket/protocol/http/WebResponseTest.java (original)
+++ incubator/wicket/branches/wicket-1.x/wicket/src/test/java/wicket/protocol/http/WebResponseTest.java Mon Mar 5 10:02:04 2007
@@ -18,6 +18,13 @@
import junit.framework.TestCase;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import wicket.ajax.AjaxEventBehavior;
+import wicket.ajax.markup.html.AjaxLink;
+import wicket.util.tester.WicketTester;
+
/**
*
*
@@ -25,6 +32,8 @@
*/
public class WebResponseTest extends TestCase
{
+ private static final Log log = LogFactory.getLog(WebResponseTest.class);
+
/**
* Test that redirect works correctly when not using ajax
*/
@@ -54,5 +63,37 @@
assertNull(mockResponse.getRedirectLocation());
assertTrue(mockResponse.containsHeader("Ajax-Location"));
+ }
+
+ public void testErrorPage()
+ {
+ WicketTester tester = new WicketTester();
+ tester.startPage(TestPage.class);
+ AjaxLink link = (AjaxLink)tester.getComponentFromLastRenderedPage("link");
+
+ // Cannot use executeAjaxEvent or onClick because WicketTester creates an AjaxRequestTarget from scratch
+ //tester.executeAjaxEvent(link, "onclick");
+ //tester.clickLink("link");
+
+ // FIXME should not be needed
+ tester.createRequestCycle();
+
+ // Invoke the call back URL of the ajax event behavior
+ String callbackUrl = ((AjaxEventBehavior)link.getBehaviors().get(0)).getCallbackUrl().toString();
+ tester.setupRequestAndResponse();
+ // Fake an Ajax request
+ ((MockHttpServletRequest)tester.getServletRequest()).addHeader("Wicket-Ajax", "Yes");
+ tester.getServletRequest().setURL(callbackUrl);
+
+ // Do not call tester.processRequestCycle() because it throws an exception when getting an error page
+ WebRequestCycle cycle = tester.createRequestCycle();
+ cycle.request();
+
+ assertNull(((MockHttpServletResponse)tester.getWicketResponse().getHttpServletResponse()).getRedirectLocation());
+ String ajaxLocation = ((MockHttpServletResponse)tester.getWicketResponse().getHttpServletResponse()).getHeader("Ajax-Location");
+ log.debug(ajaxLocation);
+ assertNotNull(ajaxLocation);
+
+ tester.destroy();
}
}