You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by ad...@apache.org on 2016/05/11 13:32:13 UTC

wicket git commit: WICKET-6162 Reload leads to unexpected RuntimeException 'Unable to find component with id'

Repository: wicket
Updated Branches:
  refs/heads/wicket-7.x 8361b8bee -> 9ff894de0


WICKET-6162 Reload leads to unexpected RuntimeException 'Unable to find
component with id'

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

Branch: refs/heads/wicket-7.x
Commit: 9ff894de08a85495b09fa343489d9eef1f14b001
Parents: 8361b8b
Author: Andrea Del Bene <ad...@apache.org>
Authored: Wed May 11 15:29:49 2016 +0200
Committer: Andrea Del Bene <ad...@apache.org>
Committed: Wed May 11 15:29:49 2016 +0200

----------------------------------------------------------------------
 .../apache/wicket/page/PartialPageUpdate.java   | 11 ++++---
 .../wicket/page/XmlPartialPageUpdateTest.java   | 31 ++++++++++++++++++--
 2 files changed, 36 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/9ff894de/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 9efcafb..2bef5e2 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
@@ -113,6 +113,8 @@ public abstract class PartialPageUpdate
 	protected final ResponseBuffer headerBuffer;
 
 	protected HtmlHeaderContainer header = null;
+	
+	private Component originalHeaderContainer  = null;
 
 	// whether a header contribution is being rendered
 	private boolean headerRendering = false;
@@ -123,7 +125,7 @@ public abstract class PartialPageUpdate
 	 * The page which components are being updated.
 	 */
 	private final Page page;
-
+	
 	/**
 	 * Constructor.
 	 *
@@ -133,7 +135,8 @@ public abstract class PartialPageUpdate
 	public PartialPageUpdate(final Page page)
 	{
 		this.page = page;
-
+		this.originalHeaderContainer = page.get(HtmlHeaderSectionHandler.HEADER_ID);
+		
 		WebResponse response = (WebResponse) page.getResponse();
 		bodyBuffer = new ResponseBuffer(response);
 		headerBuffer = new ResponseBuffer(response);
@@ -172,9 +175,9 @@ public abstract class PartialPageUpdate
 
 			writeFooter(response, encoding);
 		} finally {
-			if (header != null) {
+			if (header != null && originalHeaderContainer!= null) {
 				// restore a normal header
-				page.replace(new HtmlHeaderContainer(HtmlHeaderSectionHandler.HEADER_ID));
+				page.replace(originalHeaderContainer);
 				header = null;
 			}
 		}

http://git-wip-us.apache.org/repos/asf/wicket/blob/9ff894de/wicket-core/src/test/java/org/apache/wicket/page/XmlPartialPageUpdateTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/page/XmlPartialPageUpdateTest.java b/wicket-core/src/test/java/org/apache/wicket/page/XmlPartialPageUpdateTest.java
index 7725f26..3010945 100644
--- a/wicket-core/src/test/java/org/apache/wicket/page/XmlPartialPageUpdateTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/page/XmlPartialPageUpdateTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.page;
 
+import org.apache.wicket.Component;
+import org.apache.wicket.markup.parser.filter.HtmlHeaderSectionHandler;
 import org.apache.wicket.mock.MockWebResponse;
 import org.apache.wicket.util.tester.WicketTestCase;
 import org.junit.Test;
@@ -23,13 +25,15 @@ import org.junit.Test;
 /**
  * Test for {@link XmlPartialPageUpdate}.
  */
-public class XmlPartialPageUpdateTest extends WicketTestCase {
+public class XmlPartialPageUpdateTest extends WicketTestCase 
+{
 
 	/**
 	 * CData start "]]>" has to be encoded in "]]]]><![CDATA[>".
 	 */
 	@Test
-	public void encodeCdataEnd() {
+	public void encodeCdataEnd() 
+	{
 		PageForPartialUpdate page = new PageForPartialUpdate();
 		
 		XmlPartialPageUpdate update = new XmlPartialPageUpdate(page);
@@ -48,4 +52,27 @@ public class XmlPartialPageUpdateTest extends WicketTestCase {
 				"</head>]]></header-contribution></ajax-response>";
 		assertEquals(expected, response.getTextResponse().toString());
 	}
+	/**
+	 * 
+	 * see https://issues.apache.org/jira/browse/WICKET-6162
+	 */
+	@Test
+	public void keepTheSameHeaderContainer() throws Exception
+	{
+		PageForPartialUpdate page = new PageForPartialUpdate();
+		
+		tester.startPage(page);
+		
+		Component originalHeader = page.get(HtmlHeaderSectionHandler.HEADER_ID);
+		
+		XmlPartialPageUpdate update = new XmlPartialPageUpdate(page);		
+		
+		update.add(page.container, page.container.getMarkupId());
+		
+		MockWebResponse response = new MockWebResponse();
+		
+		update.writeTo(response, "UTF-8");
+		
+		assertEquals(originalHeader, page.get(HtmlHeaderSectionHandler.HEADER_ID));
+	}
 }