You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by kn...@apache.org on 2007/11/04 00:50:28 UTC
svn commit: r591712 - in /wicket/trunk/jdk-1.4/wicket/src:
main/java/org/apache/wicket/markup/
main/java/org/apache/wicket/markup/parser/filter/
test/java/org/apache/wicket/markup/
test/java/org/apache/wicket/markup/html/border/
Author: knopp
Date: Sat Nov 3 16:50:26 2007
New Revision: 591712
URL: http://svn.apache.org/viewvc?rev=591712&view=rev
Log:
WICKET-1087
Added:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpander.java (with props)
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/MarkupParser.java
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupParserTest.java
wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/border/BoxBorderTestPage_10.html
Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/MarkupParser.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/MarkupParser.java?rev=591712&r1=591711&r2=591712&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/MarkupParser.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/MarkupParser.java Sat Nov 3 16:50:26 2007
@@ -31,6 +31,7 @@
import org.apache.wicket.markup.parser.filter.HeadForceTagIdHandler;
import org.apache.wicket.markup.parser.filter.HtmlHandler;
import org.apache.wicket.markup.parser.filter.HtmlHeaderSectionHandler;
+import org.apache.wicket.markup.parser.filter.OpenCloseTagExpander;
import org.apache.wicket.markup.parser.filter.RelativePathPrefixHandler;
import org.apache.wicket.markup.parser.filter.TagTypeHandler;
import org.apache.wicket.markup.parser.filter.WicketLinkTagHandler;
@@ -63,7 +64,7 @@
{
/** Conditional comment section, which is NOT treated as a comment section */
private static final Pattern CONDITIONAL_COMMENT = Pattern
- .compile("\\[if .+\\]>(.|\n|\r)*<!\\[endif\\]");
+ .compile("\\[if .+\\]>(.|\n|\r)*<!\\[endif\\]");
/** The XML parser to use */
private final IXmlPullParser xmlParser;
@@ -179,6 +180,7 @@
}
}
+ appendMarkupFilter(new OpenCloseTagExpander());
appendMarkupFilter(new RelativePathPrefixHandler());
appendMarkupFilter(new EnclosureHandler());
}
@@ -257,7 +259,7 @@
// Initialize the xml parser
xmlParser.parse(markupResourceData.getResource().getInputStream(), markupSettings
- .getDefaultMarkupEncoding());
+ .getDefaultMarkupEncoding());
// parse the xml markup and tokenize it into wicket relevant markup
// elements
@@ -421,7 +423,7 @@
{
boolean matched = m.find();
String nonPre = matched ? rawMarkup.substring(lastend, m.start()) : rawMarkup
- .substring(lastend);
+ .substring(lastend);
nonPre = nonPre.replaceAll("[ \\t]+", " ");
nonPre = nonPre.replaceAll("( ?[\\r\\n] ?)+", "\n");
Added: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpander.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpander.java?rev=591712&view=auto
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpander.java (added)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpander.java Sat Nov 3 16:50:26 2007
@@ -0,0 +1,71 @@
+/*
+ * 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.parser.filter;
+
+import java.text.ParseException;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.MarkupElement;
+import org.apache.wicket.markup.parser.AbstractMarkupFilter;
+import org.apache.wicket.markup.parser.XmlTag;
+
+/**
+ * MarkupFilter that expands certain open-close tag as separate open and close tags. Firefox, unless
+ * it gets text/xml mime type, treats these open-close tags as open tags which results in corrupted
+ * DOM. This happens even with xhtml doctype.
+ *
+ * @author Matej Knopp
+ */
+public class OpenCloseTagExpander extends AbstractMarkupFilter
+{
+ ComponentTag next = null;
+ private static final List replaceForTags = Arrays.asList(new String[] { "div", "span", "p",
+ "strong", "b", "e" });
+
+ public MarkupElement nextTag() throws ParseException
+ {
+ if (next != null)
+ {
+ MarkupElement tmp = next;
+ next = null;
+ return tmp;
+ }
+ else
+ {
+ ComponentTag tag = nextComponentTag();
+
+ if (tag != null && tag.isOpenClose() &&
+ replaceForTags.contains(tag.getName().toLowerCase()))
+ {
+ tag.setType(XmlTag.OPEN);
+
+ if (tag.getId() == null)
+ {
+ tag.setId(WicketMessageTagHandler.WICKET_MESSAGE_CONTAINER_ID);
+ tag.setAutoComponentTag(true);
+ }
+
+ next = new ComponentTag(tag.getName(), XmlTag.CLOSE);
+ next.setNamespace(tag.getNamespace());
+ next.setOpenTag(tag);
+ }
+ return tag;
+ }
+ }
+}
Propchange: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/parser/filter/OpenCloseTagExpander.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupParserTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupParserTest.java?rev=591712&r1=591711&r2=591712&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupParserTest.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/MarkupParserTest.java Sat Nov 3 16:50:26 2007
@@ -62,8 +62,8 @@
public final void testTagParsing() throws Exception
{
final MarkupParser parser = new MarkupParser(
- "This is a test <a componentName:id=\"a\" href=\"foo.html\"> <b componentName:id=\"b\">Bold!</b> "
- + "<img componentName:id=\"img\" width=9 height=10 src=\"foo\"> <marker componentName:id=\"marker\"/> </a>");
+ "This is a test <a componentName:id=\"a\" href=\"foo.html\"> <b componentName:id=\"b\">Bold!</b> "
+ + "<img componentName:id=\"img\" width=9 height=10 src=\"foo\"> <marker componentName:id=\"marker\"/> </a>");
parser.setWicketNamespace("componentName");
final Markup markup = parser.parse();
@@ -125,7 +125,7 @@
public final void test() throws Exception
{
final MarkupParser parser = new MarkupParser(
- "This is a test <a componentName:id=9> <b>bold</b> <b componentName:id=10/></a> of the emergency broadcasting system");
+ "This is a test <a componentName:id=9> <b>bold</b> <b componentName:id=10></b></a> of the emergency broadcasting system");
parser.setWicketNamespace("componentName");
final Markup tokens = parser.parse();
@@ -147,10 +147,10 @@
Assert.assertEquals(10, b.getAttributes().getInt("componentName:id"));
- final ComponentTag closeA = (ComponentTag)tokens.get(4);
+ final ComponentTag closeA = (ComponentTag)tokens.get(5);
Assert.assertEquals("a", closeA.getName());
- Assert.assertTrue(tokens.get(5).equals(" of the emergency broadcasting system"));
+ Assert.assertTrue(tokens.get(6).equals(" of the emergency broadcasting system"));
}
/**
@@ -160,10 +160,10 @@
public final void testXhtmlDocument() throws Exception
{
final String docText = ""
- + "<?xml version='1.0' encoding='iso-8859-1' ?>"
- + "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">"
- + "<html>" + "<head><title>Some Page</title></head>"
- + "<body><h1>XHTML Test</h1></body>" + "</html>";
+ + "<?xml version='1.0' encoding='iso-8859-1' ?>"
+ + "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">"
+ + "<html>" + "<head><title>Some Page</title></head>"
+ + "<body><h1>XHTML Test</h1></body>" + "</html>";
final MarkupParser parser = new MarkupParser(docText);
parser.setWicketNamespace("componentName");
final Markup tokens = parser.parse();
@@ -178,10 +178,10 @@
}
private MarkupResourceStream newMarkupResourceStream(final IResourceStreamLocator locator,
- final Class c, final String style, final Locale locale, final String extension)
+ final Class c, final String style, final Locale locale, final String extension)
{
IResourceStream resource = locator.locate(c, c.getName().replace('.', '/'), style, locale,
- extension);
+ extension);
MarkupResourceStream res = new MarkupResourceStream(resource, null, null);
return res;
}
@@ -193,11 +193,11 @@
* @throws IOException
*/
public final void testFileDocument() throws ParseException, ResourceStreamNotFoundException,
- IOException
+ IOException
{
IResourceStreamLocator locator = new ResourceStreamLocator();
- MarkupResourceStream resource = newMarkupResourceStream(locator, this.getClass(), "1",
- null, "html");
+ MarkupResourceStream resource = newMarkupResourceStream(locator, getClass(), "1", null,
+ "html");
MarkupParser parser = new MarkupParser(resource);
parser.setWicketNamespace("wcn");
@@ -206,21 +206,21 @@
log.info("tok(0)=" + tokens.get(0));
// Assert.assertEquals(docText, tokens.get(0).toString());
- resource = newMarkupResourceStream(locator, this.getClass(), "2", null, "html");
+ resource = newMarkupResourceStream(locator, getClass(), "2", null, "html");
parser = new MarkupParser(resource);
parser.setWicketNamespace("wcn");
tokens = parser.parse();
log.info("tok(0)=" + tokens.get(0));
// Assert.assertEquals(docText, tokens.get(0).toString());
- resource = newMarkupResourceStream(locator, this.getClass(), "3", null, "html");
+ resource = newMarkupResourceStream(locator, getClass(), "3", null, "html");
parser = new MarkupParser(resource);
parser.setWicketNamespace("wcn");
tokens = parser.parse();
log.info("tok(0)=" + tokens.get(0));
// Assert.assertEquals(docText, tokens.get(0).toString());
- resource = newMarkupResourceStream(locator, this.getClass(), "4", null, "html");
+ resource = newMarkupResourceStream(locator, getClass(), "4", null, "html");
parser = new MarkupParser(resource);
parser.setWicketNamespace("wcn");
tokens = parser.parse();
@@ -235,35 +235,35 @@
log.info("tok(0)=" + tokens.get(0));
// Assert.assertEquals(docText, tokens.get(0).toString());
- resource = newMarkupResourceStream(locator, this.getClass(), "5", null, "html");
+ resource = newMarkupResourceStream(locator, getClass(), "5", null, "html");
parser = new MarkupParser(resource);
parser.setWicketNamespace("wcn");
tokens = parser.parse();
log.info("tok(0)=" + tokens.get(0));
// Assert.assertEquals(docText, tokens.get(0).toString());
- resource = newMarkupResourceStream(locator, this.getClass(), "6", null, "html");
+ resource = newMarkupResourceStream(locator, getClass(), "6", null, "html");
parser = new MarkupParser(resource);
parser.setWicketNamespace("wcn");
tokens = parser.parse();
log.info("tok(0)=" + tokens.get(0));
// Assert.assertEquals(docText, tokens.get(0).toString());
- resource = newMarkupResourceStream(locator, this.getClass(), "7", null, "html");
+ resource = newMarkupResourceStream(locator, getClass(), "7", null, "html");
parser = new MarkupParser(resource);
parser.setWicketNamespace("wcn");
tokens = parser.parse();
log.info("tok(0)=" + tokens.get(0));
// Assert.assertEquals(docText, tokens.get(0).toString());
- resource = newMarkupResourceStream(locator, this.getClass(), "8", null, "html");
+ resource = newMarkupResourceStream(locator, getClass(), "8", null, "html");
parser = new MarkupParser(resource);
parser.setWicketNamespace("wcn");
tokens = parser.parse();
log.info("tok(0)=" + tokens.get(0));
// Assert.assertEquals(docText, tokens.get(0).toString());
- resource = newMarkupResourceStream(locator, this.getClass(), "9", null, "html");
+ resource = newMarkupResourceStream(locator, getClass(), "9", null, "html");
parser = new MarkupParser(resource);
parser.setWicketNamespace("wcn");
tokens = parser.parse();
@@ -279,7 +279,7 @@
* @throws IOException
*/
public final void testWicketTag() throws ParseException, ResourceStreamNotFoundException,
- IOException
+ IOException
{
WicketTagIdentifier.registerWellKnownTagName("body");
WicketTagIdentifier.registerWellKnownTagName("border");
@@ -312,7 +312,7 @@
assertEquals(0, markup.size());
markup = new MarkupParser("<div><wicket:remove> <span id=\"test\"/> </wicket:remove></div>")
- .parse();
+ .parse();
assertEquals(2, markup.size());
assertEquals("<div>", ((RawMarkup)markup.get(0)).toString());
assertEquals("</div>", ((RawMarkup)markup.get(1)).toString());
@@ -320,10 +320,10 @@
try
{
new MarkupParser("<wicket:remove> <wicket:remove> </wicket:remove> </wicket:remove>")
- .parse();
+ .parse();
assertTrue(
- "Should have thrown an exception: remove regions must not contain wicket-components",
- false);
+ "Should have thrown an exception: remove regions must not contain wicket-components",
+ false);
}
catch (MarkupException ex)
{
@@ -331,17 +331,17 @@
}
new MarkupParser(
- "<wicket:component name = \"componentName\" class = \"classname\" param1 = \"value1\"/>")
- .parse();
+ "<wicket:component name = \"componentName\" class = \"classname\" param1 = \"value1\"/>")
+ .parse();
new MarkupParser(
- "<wicket:component name = \"componentName\" class = \"classname\" param1 = \"value1\"> </wicket:component>")
- .parse();
+ "<wicket:component name = \"componentName\" class = \"classname\" param1 = \"value1\"> </wicket:component>")
+ .parse();
new MarkupParser(
- "<wicket:component name = \"componentName\" class = \"classname\" param1 = \"value1\"> <span wicket:id=\"msg\">hello world!</span></wicket:component>")
- .parse();
+ "<wicket:component name = \"componentName\" class = \"classname\" param1 = \"value1\"> <span wicket:id=\"msg\">hello world!</span></wicket:component>")
+ .parse();
new MarkupParser(
- "<wicket:panel><div id=\"definitionsContentBox\"><span wicket:id=\"contentPanel\"/></div></wicket:panel>")
- .parse();
+ "<wicket:panel><div id=\"definitionsContentBox\"><span wicket:id=\"contentPanel\"/></div></wicket:panel>")
+ .parse();
}
/**
@@ -352,15 +352,15 @@
* @throws IOException
*/
public final void testDefaultWicketTag() throws ParseException,
- ResourceStreamNotFoundException, IOException
+ ResourceStreamNotFoundException, IOException
{
- MarkupParser parser = new MarkupParser("<span wcn:id=\"test\"/>");
+ MarkupParser parser = new MarkupParser("<image wcn:id=\"test\"/>");
parser.setWicketNamespace("wcn");
Markup markup = parser.parse();
assertEquals(1, markup.size());
- markup = new MarkupParser("<span wicket:id=\"test\"/>").parse();
+ markup = new MarkupParser("<image wicket:id=\"test\"/>").parse();
assertEquals(1, markup.size());
WicketTagIdentifier.registerWellKnownTagName("xxx");
@@ -378,10 +378,10 @@
* @throws IOException
*/
public final void testScript() throws ParseException, ResourceStreamNotFoundException,
- IOException
+ IOException
{
final MarkupParser parser = new MarkupParser(
- "<html wicket:id=\"test\"><script language=\"JavaScript\">... <x a> ...</script></html>");
+ "<html wicket:id=\"test\"><script language=\"JavaScript\">... <x a> ...</script></html>");
Markup markup = parser.parse();
assertEquals(3, markup.size());
@@ -389,7 +389,7 @@
assertEquals("html", ((ComponentTag)markup.get(2)).getName());
assertEquals(true, markup.get(1) instanceof RawMarkup);
assertEquals("<script language=\"JavaScript\">... <x a> ...</script>", ((RawMarkup)markup
- .get(1)).toString());
+ .get(1)).toString());
}
/**
@@ -400,7 +400,7 @@
public final void testBalancing() throws IOException, ResourceStreamNotFoundException
{
final MarkupParser parser = new MarkupParser(
- "<span wicket:id=\"span\"><img wicket:id=\"img\"><span wicket:id=\"span2\"></span></span>");
+ "<span wicket:id=\"span\"><img wicket:id=\"img\"><span wicket:id=\"span2\"></span></span>");
// Note: <img> is one of these none-balanced HTML tags
Markup markup = parser.parse();
Modified: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/border/BoxBorderTestPage_10.html
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/border/BoxBorderTestPage_10.html?rev=591712&r1=591711&r2=591712&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/border/BoxBorderTestPage_10.html (original)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/border/BoxBorderTestPage_10.html Sat Nov 3 16:50:26 2007
@@ -1,5 +1,5 @@
<html>
<body>
-<span wicket:id="border1" />
+<image wicket:id="border1" />
</body>
</html>