Repository: wicket
Updated Branches:
  refs/heads/master 02d586477 -> a9056384f


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/a9056384
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/a9056384
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/a9056384

Branch: refs/heads/master
Commit: a9056384f018e10e6d7cfc0af674057f6660d906
Parents: 02d5864
Author: Sven Meier <[email protected]>
Authored: Sat Aug 15 15:39:52 2015 +0200
Committer: Sven Meier <[email protected]>
Committed: Sat Aug 15 15:39:52 2015 +0200

----------------------------------------------------------------------
 .../html/internal/HtmlHeaderContainer.java      |  8 ---
 .../apache/wicket/page/PartialPageUpdate.java   | 65 +++++++++-----------
 2 files changed, 28 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/a9056384/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java
index 73aa021..e906560 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java
@@ -321,14 +321,6 @@ public class HtmlHeaderContainer extends 
TransparentWebMarkupContainer
                headerResponse = null;
        }
 
-       @Override
-       protected void onDetach() {
-               super.onDetach();
-
-               renderedComponentsPerScope = null;
-               headerResponse = null;
-       }
-
        /**
         * Factory method for creating header response
         * 

http://git-wip-us.apache.org/repos/asf/wicket/blob/a9056384/wicket-core/src/main/java/org/apache/wicket/page/PartialPageUpdate.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/page/PartialPageUpdate.java 
b/wicket-core/src/main/java/org/apache/wicket/page/PartialPageUpdate.java
index 1817f9d..744473e 100644
--- a/wicket-core/src/main/java/org/apache/wicket/page/PartialPageUpdate.java
+++ b/wicket-core/src/main/java/org/apache/wicket/page/PartialPageUpdate.java
@@ -149,27 +149,35 @@ public abstract class PartialPageUpdate
         */
        public void writeTo(final Response response, final String encoding)
        {
-               writeHeader(response, encoding);
+               try {
+                       writeHeader(response, encoding);
 
-               onBeforeRespond(response);
+                       onBeforeRespond(response);
 
-               // process added components
-               writeComponents(response, encoding);
+                       // process added components
+                       writeComponents(response, encoding);
 
-               onAfterRespond(response);
+                       onAfterRespond(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<>();
-               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<>();
+                       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;
+                       }
+               }
        }
 
        /**
@@ -470,9 +478,8 @@ public abstract class PartialPageUpdate
                // create the htmlheadercontainer if needed
                if (header == null)
                {
-                       header = new PartialHtmlHeaderContainer(this);
-                       final Page parentPage = component.getPage();
-                       parentPage.addOrReplace(header);
+                       header = new PartialHtmlHeaderContainer();
+                       page.addOrReplace(header);
                }
 
                RequestCycle requestCycle = component.getRequestCycle();
@@ -492,7 +499,6 @@ public abstract class PartialPageUpdate
                }
 
                writeHeaderContribution(response);
-
                headerRendering = false;
        }
 
@@ -511,22 +517,19 @@ public abstract class PartialPageUpdate
         *
         * @author Matej Knopp
         */
-       private static class PartialHtmlHeaderContainer extends 
HtmlHeaderContainer
+       private class PartialHtmlHeaderContainer extends HtmlHeaderContainer
        {
                private static final long serialVersionUID = 1L;
 
-               private transient PartialPageUpdate update;
-
                /**
                 * Constructor.
                 *
                 * @param update
                 *      the partial page update
                 */
-               public PartialHtmlHeaderContainer(final PartialPageUpdate 
update)
+               public PartialHtmlHeaderContainer()
                {
                        super(HtmlHeaderSectionHandler.HEADER_ID);
-                       this.update = update;
                }
 
                /**
@@ -536,19 +539,7 @@ public abstract class PartialPageUpdate
                @Override
                protected IHeaderResponse newHeaderResponse()
                {
-                   if (update != null)
-            {
-                       return update.getHeaderResponse();
-            }
-                   
-                   return super.newHeaderResponse();
-               }
-               
-               @Override
-               protected void onDetach()
-               {
-                   super.onDetach();
-                   update = null;
+               return PartialPageUpdate.this.getHeaderResponse();
                }
        }
 

Reply via email to