You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2014/03/12 11:05:46 UTC

[3/7] git commit: WICKET-5531 Create new placeholder tag to indicate where header contributions should appear

WICKET-5531 Create new placeholder tag to indicate where header contributions should appear


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

Branch: refs/heads/5531-wicket-header-items
Commit: a3aec20d2e4c489b26dbd796d9a8efbfe3354b05
Parents: 5da0113
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Mar 12 11:44:55 2014 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Mar 12 11:44:55 2014 +0200

----------------------------------------------------------------------
 .../parser/filter/HtmlHeaderSectionHandler.java |  11 ++
 .../internal/HtmlHeaderItemsContainerTest.java  | 140 -----------------
 .../HtmlHeaderItemsContainerTest.java           | 157 +++++++++++++++++++
 .../PageWithHeaderItemsOutOfHead.html           |  21 +++
 .../PageWithHeaderItemsOutOfHead.java           |  27 ++++
 .../headeritems/PageWithTwoHeaderItems.html     |  22 +++
 .../headeritems/PageWithTwoHeaderItems.java     |  27 ++++
 7 files changed, 265 insertions(+), 140 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/a3aec20d/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/HtmlHeaderSectionHandler.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/HtmlHeaderSectionHandler.java b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/HtmlHeaderSectionHandler.java
index 7042da2..0536d95 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/HtmlHeaderSectionHandler.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/HtmlHeaderSectionHandler.java
@@ -125,6 +125,17 @@ public final class HtmlHeaderSectionHandler extends AbstractMarkupFilter
 		else if (HtmlHeaderResolver.HEADER_ITEMS.equalsIgnoreCase(tag.getName()) &&
 				tag.getNamespace().equalsIgnoreCase(getWicketNamespace()))
 		{
+			if (foundHeaderItemsTag)
+			{
+				throw new MarkupException(new MarkupStream(markup),
+						"More than one <wicket:header-items/> detected in the <head> element. Only one is allowed.");
+			}
+			else if (foundClosingHead)
+			{
+				throw new MarkupException(new MarkupStream(markup),
+						"Detected <wicket:header-items/> after the closing </head> element.");
+			}
+
 			foundHeaderItemsTag = true;
 			tag.setId(HEADER_ID);
 			tag.setAutoComponentTag(true);

http://git-wip-us.apache.org/repos/asf/wicket/blob/a3aec20d/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/HtmlHeaderItemsContainerTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/HtmlHeaderItemsContainerTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/HtmlHeaderItemsContainerTest.java
deleted file mode 100644
index 37ae40c..0000000
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/HtmlHeaderItemsContainerTest.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.wicket.markup.html.internal;
-
-import static org.hamcrest.number.OrderingComparison.lessThan;
-
-import org.apache.wicket.WicketTestCase;
-import org.apache.wicket.markup.html.internal.headeritems.PageWithHeaderItems;
-import org.apache.wicket.markup.html.internal.headeritems.PageWithoutHeaderItems;
-import org.apache.wicket.markup.html.internal.headeritems.SubPageWithHeaderItemsAndWicketHead;
-import org.apache.wicket.markup.html.internal.headeritems.SubPageWithoutHeaderItemsAndWicketHead;
-import org.junit.Test;
-
-/**
- * Tests for <wicket:header-items/> element
- */
-public class HtmlHeaderItemsContainerTest extends WicketTestCase
-{
-	@Test
-	public void withHeaderItems()
-	{
-		tester.startPage(PageWithHeaderItems.class);
-		String responseAsString = tester.getLastResponseAsString();
-//		System.err.println("RES:\n" + responseAsString);
-		int idxMetaCharset = responseAsString.indexOf("<meta charset=\"utf-8\"");
-		int idxMetaPanelWicketHead = responseAsString.indexOf("meta name=\"panel-wicket-head\"");
-		int idxWicketAjaxJs = responseAsString.indexOf("wicket-ajax-jquery.js");
-		int idxTitleElement = responseAsString.indexOf("<title>Apache Wicket Quickstart</title>");
-		int idxMetaFromBasePage = responseAsString.indexOf("<meta name='fromBasePage' content='1'");
-
-		assertThat("<meta charset> should be rendered before <meta name=\"panel-wicket-head\"",
-				idxMetaCharset, lessThan(idxMetaPanelWicketHead));
-
-		assertThat("<meta  name=\"panel-wicket-head\"> should be rendered before <script src=wicket-ajax-jquery.js>",
-				idxMetaPanelWicketHead, lessThan(idxWicketAjaxJs));
-
-		assertThat("<script src=wicket-ajax-jquery.js> should be rendered before the <title> element",
-				idxWicketAjaxJs, lessThan(idxTitleElement));
-
-		assertThat("<meta name='fromBasePage'> should be rendered before the <title> element",
-				idxMetaFromBasePage, lessThan(idxTitleElement));
-	}
-
-	@Test
-	public void withoutHeaderItems()
-	{
-		tester.startPage(PageWithoutHeaderItems.class);
-		String responseAsString = tester.getLastResponseAsString();
-//		System.err.println("RES:\n" + responseAsString);
-		int idxMetaCharset = responseAsString.indexOf("<meta charset=\"utf-8\"");
-		int idxMetaPanelWicketHead = responseAsString.indexOf("meta name=\"panel-wicket-head\"");
-		int idxWicketAjaxJs = responseAsString.indexOf("wicket-ajax-jquery.js");
-		int idxTitleElement = responseAsString.indexOf("<title>Apache Wicket Quickstart</title>");
-		int idxMetaFromBasePage = responseAsString.indexOf("<meta name='fromBasePage' content='1'");
-
-		assertThat("<meta name=\"panel-wicket-head\"> should be rendered before <script src=wicket-ajax-jquery.js>",
-				idxMetaPanelWicketHead, lessThan(idxWicketAjaxJs));
-
-		assertThat("<script src=wicket-ajax-jquery.js> should be rendered before <meta charset>",
-				idxWicketAjaxJs, lessThan(idxMetaCharset));
-
-		assertThat("<meta charset> should be rendered before the <title> element",
-				idxMetaCharset, lessThan(idxTitleElement));
-
-		assertThat("<title> should be rendered before the <meta name='fromBasePage'> element",
-				idxTitleElement, lessThan(idxMetaFromBasePage));
-	}
-
-	@Test
-	public void withoutHeaderItemsWithWicketHead()
-	{
-		tester.startPage(SubPageWithoutHeaderItemsAndWicketHead.class);
-		String responseAsString = tester.getLastResponseAsString();
-//		System.err.println("RES:\n" + responseAsString);
-		int idxMetaCharset = responseAsString.indexOf("<meta charset=\"utf-8\"");
-		int idxMetaPanelWicketHead = responseAsString.indexOf("meta name=\"panel-wicket-head\"");
-		int idxWicketAjaxJs = responseAsString.indexOf("wicket-ajax-jquery.js");
-		int idxTitleElement = responseAsString.indexOf("<title>Apache Wicket Quickstart</title>");
-		int idxMetaFromBasePage = responseAsString.indexOf("<meta name='fromBasePage' content='1'");
-		int idxMetaFromSubPage = responseAsString.indexOf("<meta name=\"SubPageWithoutHeaderItemsAndWicketHead\"");
-
-		assertThat("<meta name=\"panel-wicket-head\"> should be rendered before <script src=wicket-ajax-jquery.js>",
-				idxMetaPanelWicketHead, lessThan(idxWicketAjaxJs));
-
-		assertThat("<script src=wicket-ajax-jquery.js> should be rendered before <meta charset>",
-				idxWicketAjaxJs, lessThan(idxMetaCharset));
-
-		assertThat("<meta charset> should be rendered before the <title> element",
-				idxMetaCharset, lessThan(idxTitleElement));
-
-		assertThat("<title> should be rendered before the <meta name=\"SubPageWithoutHeaderItemsAndWicketHead\" element",
-				idxTitleElement, lessThan(idxMetaFromSubPage));
-
-		assertThat("<meta name='fromBasePage'> should be rendered before the <meta name=\"SubPageWithoutHeaderItemsAndWicketHead\" element",
-				idxMetaFromSubPage, lessThan(idxMetaFromBasePage));
-	}
-
-	@Test
-	public void withHeaderItemsWithWicketHead()
-	{
-		tester.startPage(SubPageWithHeaderItemsAndWicketHead.class);
-		String responseAsString = tester.getLastResponseAsString();
-//		System.err.println("RES:\n" + responseAsString);
-		int idxMetaCharset = responseAsString.indexOf("<meta charset=\"utf-8\"");
-		int idxMetaPanelWicketHead = responseAsString.indexOf("meta name=\"panel-wicket-head\"");
-		int idxWicketAjaxJs = responseAsString.indexOf("wicket-ajax-jquery.js");
-		int idxTitleElement = responseAsString.indexOf("<title>Apache Wicket Quickstart</title>");
-		int idxMetaFromBasePage = responseAsString.indexOf("<meta name='fromBasePage' content='1'");
-		int idxMetaFromSubPage = responseAsString.indexOf("<meta name=\"SubPageWithHeaderItemsAndWicketHead\"");
-
-		assertThat("<meta charset> should be rendered before <meta name=\"panel-wicket-head\"",
-				idxMetaCharset, lessThan(idxMetaPanelWicketHead));
-
-		assertThat("<meta  name=\"panel-wicket-head\"> should be rendered before <script src=wicket-ajax-jquery.js>",
-				idxMetaPanelWicketHead, lessThan(idxWicketAjaxJs));
-
-		assertThat("<script src=wicket-ajax-jquery.js> should be rendered before the <title> element",
-				idxWicketAjaxJs, lessThan(idxTitleElement));
-
-		assertThat("<meta name=\"SubPageWithoutHeaderItemsAndWicketHead\"> should be rendered before the <meta name='fromBasePage'> element",
-				idxMetaFromSubPage, lessThan(idxMetaFromBasePage));
-
-		assertThat("<meta name='fromBasePage'> should be rendered before the <title> element",
-				idxMetaFromBasePage, lessThan(idxTitleElement));
-	}
-}

http://git-wip-us.apache.org/repos/asf/wicket/blob/a3aec20d/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/HtmlHeaderItemsContainerTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/HtmlHeaderItemsContainerTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/HtmlHeaderItemsContainerTest.java
new file mode 100644
index 0000000..f1602cc
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/HtmlHeaderItemsContainerTest.java
@@ -0,0 +1,157 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.markup.html.internal.headeritems;
+
+import static org.hamcrest.number.OrderingComparison.lessThan;
+
+import org.apache.wicket.WicketTestCase;
+import org.apache.wicket.markup.MarkupException;
+import org.junit.Test;
+
+/**
+ * Tests for <wicket:header-items/> element
+ */
+public class HtmlHeaderItemsContainerTest extends WicketTestCase
+{
+	@Test
+	public void withHeaderItems()
+	{
+		tester.startPage(PageWithHeaderItems.class);
+		String responseAsString = tester.getLastResponseAsString();
+//		System.err.println("RES:\n" + responseAsString);
+		int idxMetaCharset = responseAsString.indexOf("<meta charset=\"utf-8\"");
+		int idxMetaPanelWicketHead = responseAsString.indexOf("meta name=\"panel-wicket-head\"");
+		int idxWicketAjaxJs = responseAsString.indexOf("wicket-ajax-jquery.js");
+		int idxTitleElement = responseAsString.indexOf("<title>Apache Wicket Quickstart</title>");
+		int idxMetaFromBasePage = responseAsString.indexOf("<meta name='fromBasePage' content='1'");
+
+		assertThat("<meta charset> should be rendered before <meta name=\"panel-wicket-head\"",
+				idxMetaCharset, lessThan(idxMetaPanelWicketHead));
+
+		assertThat("<meta  name=\"panel-wicket-head\"> should be rendered before <script src=wicket-ajax-jquery.js>",
+				idxMetaPanelWicketHead, lessThan(idxWicketAjaxJs));
+
+		assertThat("<script src=wicket-ajax-jquery.js> should be rendered before the <title> element",
+				idxWicketAjaxJs, lessThan(idxTitleElement));
+
+		assertThat("<meta name='fromBasePage'> should be rendered before the <title> element",
+				idxMetaFromBasePage, lessThan(idxTitleElement));
+	}
+
+	@Test
+	public void withoutHeaderItems()
+	{
+		tester.startPage(PageWithoutHeaderItems.class);
+		String responseAsString = tester.getLastResponseAsString();
+//		System.err.println("RES:\n" + responseAsString);
+		int idxMetaCharset = responseAsString.indexOf("<meta charset=\"utf-8\"");
+		int idxMetaPanelWicketHead = responseAsString.indexOf("meta name=\"panel-wicket-head\"");
+		int idxWicketAjaxJs = responseAsString.indexOf("wicket-ajax-jquery.js");
+		int idxTitleElement = responseAsString.indexOf("<title>Apache Wicket Quickstart</title>");
+		int idxMetaFromBasePage = responseAsString.indexOf("<meta name='fromBasePage' content='1'");
+
+		assertThat("<meta name=\"panel-wicket-head\"> should be rendered before <script src=wicket-ajax-jquery.js>",
+				idxMetaPanelWicketHead, lessThan(idxWicketAjaxJs));
+
+		assertThat("<script src=wicket-ajax-jquery.js> should be rendered before <meta charset>",
+				idxWicketAjaxJs, lessThan(idxMetaCharset));
+
+		assertThat("<meta charset> should be rendered before the <title> element",
+				idxMetaCharset, lessThan(idxTitleElement));
+
+		assertThat("<title> should be rendered before the <meta name='fromBasePage'> element",
+				idxTitleElement, lessThan(idxMetaFromBasePage));
+	}
+
+	@Test
+	public void withoutHeaderItemsWithWicketHead()
+	{
+		tester.startPage(SubPageWithoutHeaderItemsAndWicketHead.class);
+		String responseAsString = tester.getLastResponseAsString();
+//		System.err.println("RES:\n" + responseAsString);
+		int idxMetaCharset = responseAsString.indexOf("<meta charset=\"utf-8\"");
+		int idxMetaPanelWicketHead = responseAsString.indexOf("meta name=\"panel-wicket-head\"");
+		int idxWicketAjaxJs = responseAsString.indexOf("wicket-ajax-jquery.js");
+		int idxTitleElement = responseAsString.indexOf("<title>Apache Wicket Quickstart</title>");
+		int idxMetaFromBasePage = responseAsString.indexOf("<meta name='fromBasePage' content='1'");
+		int idxMetaFromSubPage = responseAsString.indexOf("<meta name=\"SubPageWithoutHeaderItemsAndWicketHead\"");
+
+		assertThat("<meta name=\"panel-wicket-head\"> should be rendered before <script src=wicket-ajax-jquery.js>",
+				idxMetaPanelWicketHead, lessThan(idxWicketAjaxJs));
+
+		assertThat("<script src=wicket-ajax-jquery.js> should be rendered before <meta charset>",
+				idxWicketAjaxJs, lessThan(idxMetaCharset));
+
+		assertThat("<meta charset> should be rendered before the <title> element",
+				idxMetaCharset, lessThan(idxTitleElement));
+
+		assertThat("<title> should be rendered before the <meta name=\"SubPageWithoutHeaderItemsAndWicketHead\" element",
+				idxTitleElement, lessThan(idxMetaFromSubPage));
+
+		assertThat("<meta name='fromBasePage'> should be rendered before the <meta name=\"SubPageWithoutHeaderItemsAndWicketHead\" element",
+				idxMetaFromSubPage, lessThan(idxMetaFromBasePage));
+	}
+
+	@Test
+	public void withHeaderItemsWithWicketHead()
+	{
+		tester.startPage(SubPageWithHeaderItemsAndWicketHead.class);
+		String responseAsString = tester.getLastResponseAsString();
+//		System.err.println("RES:\n" + responseAsString);
+		int idxMetaCharset = responseAsString.indexOf("<meta charset=\"utf-8\"");
+		int idxMetaPanelWicketHead = responseAsString.indexOf("meta name=\"panel-wicket-head\"");
+		int idxWicketAjaxJs = responseAsString.indexOf("wicket-ajax-jquery.js");
+		int idxTitleElement = responseAsString.indexOf("<title>Apache Wicket Quickstart</title>");
+		int idxMetaFromBasePage = responseAsString.indexOf("<meta name='fromBasePage' content='1'");
+		int idxMetaFromSubPage = responseAsString.indexOf("<meta name=\"SubPageWithHeaderItemsAndWicketHead\"");
+
+		assertThat("<meta charset> should be rendered before <meta name=\"panel-wicket-head\"",
+				idxMetaCharset, lessThan(idxMetaPanelWicketHead));
+
+		assertThat("<meta  name=\"panel-wicket-head\"> should be rendered before <script src=wicket-ajax-jquery.js>",
+				idxMetaPanelWicketHead, lessThan(idxWicketAjaxJs));
+
+		assertThat("<script src=wicket-ajax-jquery.js> should be rendered before the <title> element",
+				idxWicketAjaxJs, lessThan(idxTitleElement));
+
+		assertThat("<meta name=\"SubPageWithoutHeaderItemsAndWicketHead\"> should be rendered before the <meta name='fromBasePage'> element",
+				idxMetaFromSubPage, lessThan(idxMetaFromBasePage));
+
+		assertThat("<meta name='fromBasePage'> should be rendered before the <title> element",
+				idxMetaFromBasePage, lessThan(idxTitleElement));
+	}
+
+	/**
+	 * Only one <wicket:header-items/> is allowed only in <head>
+	 * @see org.apache.wicket.markup.parser.filter.HtmlHeaderSectionHandler
+	 */
+	@Test(expected = MarkupException.class)
+	public void pageWithTwoHeaderItems()
+	{
+		tester.startPage(PageWithTwoHeaderItems.class);
+	}
+
+	/**
+	 * <wicket:header-items/> is allowed only in <head>
+	 * @see org.apache.wicket.markup.parser.filter.HtmlHeaderSectionHandler
+	 */
+	@Test(expected = MarkupException.class)
+	public void pageWithHeaderItemsOutOfHead()
+	{
+		tester.startPage(PageWithHeaderItemsOutOfHead.class);
+	}
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/a3aec20d/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/PageWithHeaderItemsOutOfHead.html
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/PageWithHeaderItemsOutOfHead.html b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/PageWithHeaderItemsOutOfHead.html
new file mode 100644
index 0000000..99b0834
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/PageWithHeaderItemsOutOfHead.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html xmlns:wicket="http://wicket.apache.org">
+	<head>
+		<meta charset="utf-8" />
+		<title>Apache Wicket Quickstart</title>
+	</head>
+    <wicket:header-items/>
+	<body>
+        <div id="hd">
+			<div id="logo">
+				<h1>Apache Wicket</h1>
+			</div>
+		</div>
+		<div id="bd">
+            <div wicket:id="panel"></div>
+            <wicket:child/>
+		</div>
+		<div id="ft">
+		</div>
+	</body>
+</html>

http://git-wip-us.apache.org/repos/asf/wicket/blob/a3aec20d/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/PageWithHeaderItemsOutOfHead.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/PageWithHeaderItemsOutOfHead.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/PageWithHeaderItemsOutOfHead.java
new file mode 100644
index 0000000..29249de
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/PageWithHeaderItemsOutOfHead.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.markup.html.internal.headeritems;
+
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+public class PageWithHeaderItemsOutOfHead extends BasePage {
+	private static final long serialVersionUID = 1L;
+
+	public PageWithHeaderItemsOutOfHead(final PageParameters parameters) {
+		super(parameters);
+	}
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/a3aec20d/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/PageWithTwoHeaderItems.html
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/PageWithTwoHeaderItems.html b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/PageWithTwoHeaderItems.html
new file mode 100644
index 0000000..82cbe0b
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/PageWithTwoHeaderItems.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html xmlns:wicket="http://wicket.apache.org">
+	<head>
+		<meta charset="utf-8" />
+        <wicket:header-items/>
+		<title>Apache Wicket Quickstart</title>
+        <wicket:header-items/>
+	</head>
+	<body>
+		<div id="hd">
+			<div id="logo">
+				<h1>Apache Wicket</h1>
+			</div>
+		</div>
+		<div id="bd">
+            <div wicket:id="panel"></div>
+            <wicket:child/>
+		</div>
+		<div id="ft">
+		</div>
+	</body>
+</html>

http://git-wip-us.apache.org/repos/asf/wicket/blob/a3aec20d/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/PageWithTwoHeaderItems.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/PageWithTwoHeaderItems.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/PageWithTwoHeaderItems.java
new file mode 100644
index 0000000..a70331a
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/headeritems/PageWithTwoHeaderItems.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.markup.html.internal.headeritems;
+
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+public class PageWithTwoHeaderItems extends BasePage {
+	private static final long serialVersionUID = 1L;
+
+	public PageWithTwoHeaderItems(final PageParameters parameters) {
+		super(parameters);
+	}
+}