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 2013/06/19 11:26:29 UTC

git commit: WICKET-5237 Wicket generates invalid HTML by expanding col tags

Updated Branches:
  refs/heads/master 61a2c3b79 -> b61fe92cb


WICKET-5237 Wicket generates invalid HTML by expanding col tags


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

Branch: refs/heads/master
Commit: b61fe92cbc0b8a508b1d558d940b23d29e8fc878
Parents: 61a2c3b
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Jun 19 11:26:11 2013 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed Jun 19 11:26:11 2013 +0200

----------------------------------------------------------------------
 .../parser/filter/OpenCloseTagExpander.java     |  9 +--
 .../parser/filter/OpenCloseTagExpanderTest.java | 62 ++++++++++++++++++++
 2 files changed, 67 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/b61fe92c/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpander.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpander.java b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpander.java
index f737c74..9e3abf8 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpander.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpander.java
@@ -37,6 +37,10 @@ import org.apache.wicket.markup.parser.XmlTag.TagType;
  */
 public class OpenCloseTagExpander extends AbstractMarkupFilter
 {
+	// A list of elements which should not be expanded from TagType.OPEN_CLOSE to TagType.OPEN + TagType.CLOSE
+	// http://www.w3.org/TR/html-markup/syntax.html#void-element
+	// area, base, br, col, command, embed, hr, img, input, keygen, link, meta, param, source, track, wbr
+
 	private static final List<String> replaceForTags = Arrays.asList("a", "q", "sub", "sup",
 		"abbr", "acronym", "cite", "code", "del", "dfn", "em", "ins", "kbd", "samp", "var",
 		"label", "textarea", "tr", "td", "th", "caption", "thead", "tbody", "tfoot", "dl", "dt",
@@ -52,12 +56,9 @@ public class OpenCloseTagExpander extends AbstractMarkupFilter
 		"b",
 		"e",
 		"select",
-		"col",
 
-		// New HTML5 elements (excluding: open-close tags:
-		// wbr, source, time, embed, keygen
 		// @TODO by now an exclude list is probably shorter
-		"article", "aside", "command", "details", "summary", "figure", "figcaption", "footer",
+		"article", "aside", "details", "summary", "figure", "figcaption", "footer",
 		"header", "hgroup", "mark", "meter", "nav", "progress", "ruby", "rt", "rp", "section",
 		"audio", "video", "canvas", "datalist", "output");
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/b61fe92c/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpanderTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpanderTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpanderTest.java
index 0f4c478..fe8d9a0 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpanderTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpanderTest.java
@@ -16,7 +16,15 @@
  */
 package org.apache.wicket.markup.parser.filter;
 
+import java.text.ParseException;
+
 import org.apache.wicket.WicketTestCase;
+import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.MarkupElement;
+import org.apache.wicket.markup.WicketTag;
+import org.apache.wicket.markup.parser.AbstractMarkupFilter;
+import org.apache.wicket.markup.parser.IMarkupFilter;
+import org.apache.wicket.markup.parser.XmlTag;
 import org.junit.Test;
 
 /**
@@ -33,4 +41,58 @@ public class OpenCloseTagExpanderTest extends WicketTestCase
 		executeTest(OpenCloseTagExpanderPage_1.class,
 			"OpenCloseTagExpanderPageExpectedResult_1.html");
 	}
+
+	/**
+	 * https://issues.apache.org/jira/browse/WICKET-5237
+	 * @throws ParseException
+	 */
+	@Test
+	public void expand() throws ParseException
+	{
+		String[] htmlVoidElements = new String[] {
+			"area", "base", "br", "col", "command", "embed", "hr", "img", "input",
+			"keygen", "link", "meta", "param", "source", "track", "wbr"
+		};
+
+		for (String htmlVoidElement : htmlVoidElements)
+		{
+
+			OpenCloseTagExpander expander = new OpenCloseTagExpander() {
+				@Override
+				public IMarkupFilter getNextFilter()
+				{
+					return new AbstractMarkupFilter()
+					{
+						@Override
+						protected MarkupElement onComponentTag(ComponentTag tag) throws ParseException
+						{
+							return null;
+						}
+
+						@Override
+						public MarkupElement nextElement() throws ParseException
+						{
+							return new TestMarkupElement();
+						}
+					};
+				}
+			};
+
+			ComponentTag tag = new ComponentTag(htmlVoidElement, XmlTag.TagType.OPEN_CLOSE);
+			expander.onComponentTag(tag);
+
+			MarkupElement markupElement = expander.nextElement();
+
+			// assert the next element is returned by the parent
+			assertTrue(markupElement instanceof TestMarkupElement);
+		}
+	}
+
+	private static class TestMarkupElement extends WicketTag
+	{
+		public TestMarkupElement()
+		{
+			super(new XmlTag());
+		}
+	}
 }