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("\" ");

Reply via email to