Repository: wicket
Updated Branches:
  refs/heads/wicket-6.x 8b5a4aab7 -> 562d43ccd


WICKET-5960 remove PartialHtmlHeaderContainer from page after writing to the 
response


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/562d43cc
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/562d43cc
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/562d43cc

Branch: refs/heads/wicket-6.x
Commit: 562d43ccdd7f305f8ca641817f4b63a07ee8b6a6
Parents: 8b5a4aa
Author: Sven Meier <[email protected]>
Authored: Sat Aug 15 16:36:48 2015 +0200
Committer: Sven Meier <[email protected]>
Committed: Sat Aug 15 16:36:48 2015 +0200

----------------------------------------------------------------------
 .../wicket/ajax/AbstractAjaxResponse.java       | 51 +++++++++++---------
 1 file changed, 28 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/562d43cc/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java 
b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java
index 64d5d23..bbc7f96 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java
@@ -141,28 +141,36 @@ public abstract class AbstractAjaxResponse
         */
        public void writeTo(final Response response, final String encoding)
        {
-               writeHeader(response, encoding);
+               try {
+                       writeHeader(response, encoding);
 
-               // invoke onbeforerespond event on listeners
-               fireOnBeforeRespondListeners();
+                       // invoke onbeforerespond event on listeners
+                       fireOnBeforeRespondListeners();
 
-               // process added components
-               writeComponents(response, encoding);
+                       // process added components
+                       writeComponents(response, encoding);
 
-               fireOnAfterRespondListeners(response);
+                       fireOnAfterRespondListeners(response);
 
-               // queue up prepend javascripts. unlike other steps these are 
executed out of order so that
-               // components can contribute them from inside their 
onbeforerender methods.
-               writePriorityEvaluations(response, prependJavaScripts);
+                       // queue up prepend javascripts. unlike other steps 
these are executed out of order so that
+                       // components can contribute them from inside their 
onbeforerender methods.
+                       writePriorityEvaluations(response, prependJavaScripts);
 
-               // execute the dom ready javascripts as first javascripts
-               // after component replacement
-               List<CharSequence> evaluationScripts = new 
ArrayList<CharSequence>();
-               evaluationScripts.addAll(domReadyJavaScripts);
-               evaluationScripts.addAll(appendJavaScripts);
-               writeNormalEvaluations(response, evaluationScripts);
+                       // execute the dom ready javascripts as first 
javascripts
+                       // after component replacement
+                       List<CharSequence> evaluationScripts = new 
ArrayList<CharSequence>();
+                       evaluationScripts.addAll(domReadyJavaScripts);
+                       evaluationScripts.addAll(appendJavaScripts);
+                       writeNormalEvaluations(response, evaluationScripts);
 
-               writeFooter(response, encoding);
+                       writeFooter(response, encoding);
+               } finally {
+                       if (header != null) {
+                               // restore a normal header
+                               page.replace(new 
HtmlHeaderContainer(HtmlHeaderSectionHandler.HEADER_ID));
+                               header = null;
+                       }
+               }
        }
 
        protected abstract void fireOnAfterRespondListeners(Response response);
@@ -451,7 +459,7 @@ public abstract class AbstractAjaxResponse
                // create the htmlheadercontainer if needed
                if (header == null)
                {
-                       header = new AjaxHtmlHeaderContainer(this);
+                       header = new AjaxHtmlHeaderContainer();
                        final Page parentPage = component.getPage();
                        parentPage.addOrReplace(header);
                }
@@ -493,22 +501,19 @@ public abstract class AbstractAjaxResponse
         *
         * @author Matej Knopp
         */
-       private static class AjaxHtmlHeaderContainer extends HtmlHeaderContainer
+       private class AjaxHtmlHeaderContainer extends HtmlHeaderContainer
        {
                private static final long serialVersionUID = 1L;
 
-               private final transient AbstractAjaxResponse ajaxResponse;
-
                /**
                 * Constructor.
                 *
                 * @param ajaxResponse
                 *      the object that keeps the data for the Ajax response
                 */
-               public AjaxHtmlHeaderContainer(final AbstractAjaxResponse 
ajaxResponse)
+               public AjaxHtmlHeaderContainer()
                {
                        super(HtmlHeaderSectionHandler.HEADER_ID);
-                       this.ajaxResponse = ajaxResponse;
                }
 
                /**
@@ -518,7 +523,7 @@ public abstract class AbstractAjaxResponse
                @Override
                protected IHeaderResponse newHeaderResponse()
                {
-                       return ajaxResponse.getHeaderResponse();
+                       return AbstractAjaxResponse.this.getHeaderResponse();
                }
        }
 

Reply via email to