Updated Branches: refs/heads/wicket-6.x 3d6fc1e56 -> b155b2f5d
WICKET-5269 restore the response where it was altered Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/b155b2f5 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/b155b2f5 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/b155b2f5 Branch: refs/heads/wicket-6.x Commit: b155b2f5d97bd7dbd8ca562450f4ed797e425c7b Parents: 3d6fc1e Author: svenmeier <[email protected]> Authored: Tue Jul 9 16:05:57 2013 +0200 Committer: svenmeier <[email protected]> Committed: Tue Jul 9 16:05:57 2013 +0200 ---------------------------------------------------------------------- .../apache/wicket/ajax/AjaxRequestHandler.java | 16 ++--- .../org/apache/wicket/ajax/XmlAjaxResponse.java | 67 ++++++++++---------- 2 files changed, 39 insertions(+), 44 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/b155b2f5/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestHandler.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestHandler.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestHandler.java index 0cad83b..2056a0e 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestHandler.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestHandler.java @@ -357,18 +357,10 @@ public class AjaxRequestHandler implements AjaxRequestTarget // Make sure it is not cached by a client response.disableCaching(); - try - { - final StringResponse bodyResponse = new StringResponse(); - responseObject.writeTo(bodyResponse, encoding); - CharSequence filteredResponse = invokeResponseFilters(bodyResponse); - response.write(filteredResponse); - } - finally - { - // restore the original response - rc.setResponse(response); - } + final StringResponse bodyResponse = new StringResponse(); + responseObject.writeTo(bodyResponse, encoding); + CharSequence filteredResponse = invokeResponseFilters(bodyResponse); + response.write(filteredResponse); } /** http://git-wip-us.apache.org/repos/asf/wicket/blob/b155b2f5/wicket-core/src/main/java/org/apache/wicket/ajax/XmlAjaxResponse.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/XmlAjaxResponse.java b/wicket-core/src/main/java/org/apache/wicket/ajax/XmlAjaxResponse.java index 9442cb3..80c056e 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/XmlAjaxResponse.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/XmlAjaxResponse.java @@ -81,11 +81,6 @@ public abstract class XmlAjaxResponse extends AbstractAjaxResponse component.setOutputMarkupId(true); - // substitute our encoding response for the real one so we can capture - // component's markup in a manner safe for transport inside CDATA block - encodingBodyResponse.reset(); - RequestCycle.get().setResponse(encodingBodyResponse); - // Initialize temporary variables final Page page = component.findParent(Page.class); if (page == null) @@ -97,47 +92,55 @@ public abstract class XmlAjaxResponse extends AbstractAjaxResponse return; } - page.startComponentRender(component); + // substitute our encoding response for the old one so we can capture + // component's markup in a manner safe for transport inside CDATA block + Response oldResponse = RequestCycle.get().setResponse(encodingBodyResponse); try { - component.prepareForRender(); + encodingBodyResponse.reset(); + + page.startComponentRender(component); - // render any associated headers of the component - writeHeaderContribution(response, component); - } - catch (RuntimeException e) - { try { - component.afterRender(); + component.prepareForRender(); + + // render any associated headers of the component + writeHeaderContribution(response, component); } - catch (RuntimeException e2) + catch (RuntimeException e) { - // ignore this one could be a result off. + try + { + component.afterRender(); + } + catch (RuntimeException e2) + { + // ignore this one could be a result off. + } + encodingBodyResponse.reset(); + throw e; } - // Restore original response - RequestCycle.get().setResponse(response); - encodingBodyResponse.reset(); - throw e; - } - try - { - component.render(); + try + { + component.render(); + } + catch (RuntimeException e) + { + encodingBodyResponse.reset(); + throw e; + } + + page.endComponentRender(component); } - catch (RuntimeException e) + finally { - RequestCycle.get().setResponse(response); - encodingBodyResponse.reset(); - throw e; + // Restore original response + RequestCycle.get().setResponse(oldResponse); } - page.endComponentRender(component); - - // Restore original response - RequestCycle.get().setResponse(response); - response.write("<component id=\""); response.write(markupId); response.write("\" ");
