You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2015/08/15 15:40:22 UTC

wicket git commit: WICKET-5960 remove PartialHtmlHeaderContainer from page after writing to the response

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 <sv...@apache.org>
Authored: Sat Aug 15 15:39:52 2015 +0200
Committer: Sven Meier <sv...@apache.org>
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();
 		}
 	}