You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by da...@apache.org on 2009/02/20 23:38:21 UTC
svn commit: r746396 - in /wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src:
main/java/org/apache/wicket/markup/
test/java/org/apache/wicket/markup/parser/
Author: dashorst
Date: Fri Feb 20 22:38:20 2009
New Revision: 746396
URL: http://svn.apache.org/viewvc?rev=746396&view=rev
Log:
WICKET-2105: backported fix from Juergen. It took a while to get the test to fail, but on JDK 1.6 it did, and after the patch, the test succeeded.
Added:
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Page.html
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Page.java
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Panel.html
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Panel.java
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Test.java
Modified:
wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/MarkupParser.java
Modified: wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/MarkupParser.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/MarkupParser.java?rev=746396&r1=746395&r2=746396&view=diff
==============================================================================
--- wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/MarkupParser.java (original)
+++ wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/MarkupParser.java Fri Feb 20 22:38:20 2009
@@ -68,7 +68,7 @@
private static final Logger log = LoggerFactory.getLogger(MarkupParser.class);
/** Conditional comment section, which is NOT treated as a comment section */
- private static final Pattern CONDITIONAL_COMMENT = Pattern.compile("\\[if .+\\]>(.|\n|\r)*<!\\[endif\\]");
+ private static final Pattern CONDITIONAL_COMMENT = Pattern.compile("\\[if .+\\]>((?s).*)<!\\[endif\\]");
/** The XML parser to use */
private final IXmlPullParser xmlParser;
@@ -195,6 +195,7 @@
* @see #appendMarkupFilter(IMarkupFilter)
* @deprecated since 1.3
*/
+ @Deprecated
protected void initFilterChain()
{
throw new WicketRuntimeException("This method is no longer suppoert: since 1.3");
@@ -476,15 +477,17 @@
}
/**
- * Remove all comment sections (<!-- .. -->) from the raw markup. For reasons I don't
- * understand, the following regex <code>"<!--(.|\n|\r)*?-->"<code>
- * causes a stack overflow in some circumstances (jdk 1.5)
- *
+ * Remove all comment sections (<!-- .. -->) from the raw markup.
+ *
* @param rawMarkup
* @return raw markup
*/
private String removeComment(String rawMarkup)
{
+ // For reasons I don't understand, the following regex <code>"<!--(.|\n|\r)*?-->"<code>
+ // causes a stack overflow in some circumstances (jdk 1.5)
+ // See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5050507
+ // See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6337993
int pos1 = rawMarkup.indexOf("<!--");
while (pos1 != -1)
{
@@ -493,6 +496,11 @@
final AppendingStringBuffer buf = new AppendingStringBuffer(rawMarkup.length());
if (pos2 != -1)
{
+
+ // See wicket-2105 for an example where this rather simple regex throws an exception
+ // CONDITIONAL_COMMENT = Pattern.compile("\\[if .+\\]>(.|\n|\r)*<!\\[endif\\]");
+ // See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5050507
+ // See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6337993
final String comment = rawMarkup.substring(pos1 + 4, pos2);
if (CONDITIONAL_COMMENT.matcher(comment).matches() == false)
{
Added: wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Page.html
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Page.html?rev=746396&view=auto
==============================================================================
--- wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Page.html (added)
+++ wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Page.html Fri Feb 20 22:38:20 2009
@@ -0,0 +1,33 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns:wicket>
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+ <link rel="shortcut icon" href="assets/img/icons/favicon.ico">
+ <title wicket:id="pageTitle">EduArte</title>
+
+ <link href="assets/css/base.css" rel="stylesheet" type="text/css"/>
+ <!--[if IE]>
+ <link href="assets/css/ie_only.css" rel="stylesheet" type="text/css"/>
+ <link href="assets/js/ie_only.js" rel="stylesheet" type="text/css"/>
+ <![endif]-->
+ <!--[if lt IE 7]>
+ <link href="assets/css/ie6_only.css" rel="stylesheet" type="text/css"/>
+ <![endif]-->
+ <script type="text/javascript" src="assets/js/yahoo-dom-event.js"></script>
+ <script type="text/javascript" src="assets/js/animation/animation.js"></script>
+ <script type="text/javascript" src="assets/js/widgets.js"></script>
+</head>
+<body class="loginPage" onload="doFocus();">
+
+<div id="loginBox">
+ <div class="loginTitle">
+ <div class="loginError" wicket:id="feedback">Uw gebruikersnaam of wachtwoord is onjuist.</div>
+ </div>
+ <div class="loginFormBox" wicket:id="signInPanel">
+ Login panel comes here
+ </div>
+ <div class="loginFooter">Versie <span wicket:id="version">0.1</span> - Powered by Topicus</div>
+</div>
+
+</body>
+</html>
\ No newline at end of file
Added: wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Page.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Page.java?rev=746396&view=auto
==============================================================================
--- wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Page.java (added)
+++ wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Page.java Fri Feb 20 22:38:20 2009
@@ -0,0 +1,35 @@
+/*
+ * 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;
+
+import org.apache.wicket.PageParameters;
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.panel.FeedbackPanel;
+
+public class Wicket2105Page extends WebPage
+{
+ private static final long serialVersionUID = 1L;
+
+ public Wicket2105Page(final PageParameters parameters)
+ {
+ add(new Label("pageTitle", "PageTitle"));
+ add(new FeedbackPanel("feedback"));
+ add(new Wicket2105Panel("signInPanel"));
+ add(new Label("version", "1.0"));
+ }
+}
Added: wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Panel.html
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Panel.html?rev=746396&view=auto
==============================================================================
--- wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Panel.html (added)
+++ wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Panel.html Fri Feb 20 22:38:20 2009
@@ -0,0 +1,121 @@
+<html xmlns:wicket>
+<head>
+<wicket:head>
+ <script type="text/javascript">
+ function doFocus()
+ {
+ if(document.getElementById('username').value == "")
+ document.getElementById('username').focus();
+ else
+ {
+ var arr=document.getElementById('loginForm').elements;
+ var i=0;
+ for(i;i<arr.length;i++)
+ {
+ if(arr[i] && arr[i].type && arr[i].type=="password")
+ {
+ arr[i].focus();
+ break;
+ }
+ }
+ }
+ }
+ function getkey(e)
+ {
+ if (window.event)
+ return window.event.keyCode;
+ else if (e)
+ return e.which;
+ else
+ return null;
+ }
+ </script>
+ <!--[if lt IE 7]>
+ <script type="text/javascript">
+ jQuery.noConflict();
+
+ jQuery(document).ready(function(){
+ jQuery("#loginForm").hide();
+ jQuery("#continueLink").click(function(){
+ jQuery("#ie6warn").hide();
+ jQuery("#loginForm").show();
+ });
+ });
+ </script>
+ <![endif]-->
+</wicket:head>
+</head>
+<body>
+<wicket:panel>
+ <form id="loginForm" method="post" wicket:id="signInForm">
+ <fieldset>
+ <table>
+ <tbody>
+ <tr>
+ <td>Gebruikersnaam</td>
+ <td><input type="text" id="username" wicket:id="username" /></td>
+ </tr>
+ <tr>
+ <td>Wachtwoord</td>
+ <td><input type="password" name="password" wicket:id="password" /></td>
+ </tr>
+ <tr>
+ <td>Domein</td>
+ <td><select name="instelling" wicket:id="domain" onkeypress="if (getkey(event)==13) getElementById('loginForm').submit();">
+ <option>School 01</option>
+ <option>School 02</option>
+ <option>School 03</option>
+ </select></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td><input type="checkbox" class="checkbox" name="rememberme"
+ id="rememberme" wicket:id="rememberMe" /> <label for="rememberme">Bewaar mijn gegevens</label></td>
+ </tr>
+ <tr wicket:id="loginZonderTokenContainer">
+ <td></td>
+ <td>
+ <input type="checkbox" class="checkbox" name="loginZonderToken"
+ id="loginZonderToken" wicket:id="loginZonderToken" />
+ <label for="loginZonderToken">Inloggen zonder token</label>
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>
+ <div class="widget-button">
+ <a href="#" wicket:id="aanmelden" title="Aanmelden bij DBS">
+ <span>Aanmelden</span>
+ </a>
+ </div>
+ <input type="submit" style="width:0px; height:0px; position:absolute; top:-300px;" tabIndex="-1"/>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </fieldset>
+ </form>
+ <!--[if lt IE 7]>
+ <div id="ie6warn">
+ <div class="highlight">U gebruikt Internet Explorer 6 of ouder. Deze applicatie vereist functionaliteit die niet door deze browser ondersteund wordt.</div>
+ Het is aan te raden een van de volgende browsers te gebruiken:
+ <table>
+ <tr>
+ <td class="unit_80"><a href="http://www.firefox.com" id="firefoxlink" class="logolink"></a></td>
+ <td class="unit_130"><a href="http://www.microsoft.com/ie" id="ielink" class="logolink"></a></td>
+ <td class="unit_80"><a href="http://www.opera.com" id="operalink" class="logolink"></a></td>
+ <td class="unit_130"><a href="http://www.apple.com/safari" id="safarilink" class="logolink"></a></td>
+ </tr>
+ <tr class="browsernames">
+ <td>Firefox 3</td>
+ <td>Internet Explorer 7</td>
+ <td>Opera 9.5</td>
+ <td>Safari 3</td>
+ </tr>
+ </table>
+ <div class="right">Klik <a href="#" id="continueLink">hier</a> om toch uw eigen browser te gebruiken.</div>
+ </div>
+ <![endif]-->
+</wicket:panel>
+</body>
+</html>
Added: wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Panel.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Panel.java?rev=746396&view=auto
==============================================================================
--- wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Panel.java (added)
+++ wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Panel.java Fri Feb 20 22:38:20 2009
@@ -0,0 +1,54 @@
+/*
+ * 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;
+
+import java.util.Arrays;
+
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.PasswordTextField;
+import org.apache.wicket.markup.html.form.SubmitLink;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.util.value.ValueMap;
+
+/**
+ * @author dashorst
+ */
+public class Wicket2105Panel extends Panel
+{
+ private static final long serialVersionUID = 1L;
+
+ public Wicket2105Panel(String id)
+ {
+ super(id);
+ Form form = new Form("signInForm", new CompoundPropertyModel(new ValueMap()));
+ form.add(new TextField("username"));
+ form.add(new PasswordTextField("password"));
+ form.add(new DropDownChoice("domain", Arrays.asList(new Object[] { "Wicket", "Tapestry",
+ "JSF", ".Net" })));
+ form.add(new CheckBox("rememberMe"));
+ form.add(new WebMarkupContainer("loginZonderTokenContainer").add(new CheckBox(
+ "loginZonderToken")));
+ form.add(new SubmitLink("aanmelden"));
+ add(form);
+ }
+
+}
Added: wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Test.java
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Test.java?rev=746396&view=auto
==============================================================================
--- wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Test.java (added)
+++ wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/parser/Wicket2105Test.java Fri Feb 20 22:38:20 2009
@@ -0,0 +1,65 @@
+/*
+ * 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;
+
+import junit.framework.TestCase;
+
+import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.util.tester.WicketTester;
+
+/**
+ * Simple test using the WicketTester
+ */
+public class Wicket2105Test extends TestCase
+{
+ private WicketTester tester;
+
+ @Override
+ public void setUp()
+ {
+ tester = new WicketTester(new WicketApplication());
+ }
+
+ public void testRenderMyPage()
+ {
+ // start and render the test page
+ tester.startPage(Wicket2105Page.class);
+
+ // assert rendered page class
+ tester.assertRenderedPage(Wicket2105Page.class);
+
+ // assert rendered label component
+ tester.assertLabel("version", "1.0");
+ }
+
+ private class WicketApplication extends WebApplication
+ {
+ @Override
+ protected void init()
+ {
+ super.init();
+
+ getMarkupSettings().setStripComments(true);
+ }
+
+ @Override
+ public Class getHomePage()
+ {
+ return Wicket2105Page.class;
+ }
+ }
+}