Author: frankbille
Date: Mon Jun 9 09:33:20 2008
New Revision: 665751
URL: http://svn.apache.org/viewvc?rev=665751&view=rev
Log:
WICKET-1389: ValueMap now extends TreeMap instead of HashMap. This is because
the order of the attributes were random causing tests to fail if they were run
with java1.6 (f.ex.) Now the keys are sorted causing the output to always be
the same.
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/value/ValueMap.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/ParentResourceEscapePathTest.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_ajax_expected.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/MockComponent1-expected.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/basic/SimplePageTest.java
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/header/inheritance/ExpectedResult2.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/header/testing/TestPage_ExpectedResult.html
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebRequestTest.java
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/value/ValueMap.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/value/ValueMap.java?rev=665751&r1=665750&r2=665751&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/value/ValueMap.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/util/value/ValueMap.java
Mon Jun 9 09:33:20 2008
@@ -20,9 +20,11 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
+import java.util.TreeMap;
import org.apache.wicket.util.parse.metapattern.MetaPattern;
import
org.apache.wicket.util.parse.metapattern.parsers.VariableAssignmentParser;
@@ -58,11 +60,44 @@
* @author Doug Donohoe
* @since 1.2.6
*/
-public class ValueMap extends HashMap<String, Object> implements IValueMap
+public class ValueMap extends TreeMap<String, Object> implements IValueMap
{
/** an empty <code>ValueMap</code>. */
public static final ValueMap EMPTY_MAP;
+ /**
+ * Comparator to allow null keys. This is because we use a [EMAIL
PROTECTED] TreeMap} instead of a
+ * [EMAIL PROTECTED] HashMap}, so we must provide a null safe
comparator to avoid null pointer exceptions
+ * with null keys.
+ */
+ private static class NullSafeKeyComparator implements Comparator<String>
+ {
+ public int compare(String o1, String o2)
+ {
+ int compare = 0;
+
+ if (o1 != null && o2 != null)
+ {
+ compare = o1.compareTo(o2);
+ }
+ else if (o1 != null)
+ {
+ compare = -1;
+ }
+ else if (o2 != null)
+ {
+ compare = 1;
+ }
+
+ return compare;
+ }
+ }
+
+ /**
+ * We only need one comparator.
+ */
+ private static final NullSafeKeyComparator COMPARATOR = new
NullSafeKeyComparator();
+
/** create EMPTY_MAP, make immutable * */
static
{
@@ -82,6 +117,7 @@
*/
public ValueMap()
{
+ super(COMPARATOR);
}
/**
@@ -92,6 +128,8 @@
*/
public ValueMap(final Map map)
{
+ super(COMPARATOR);
+
super.putAll(map);
}
@@ -123,6 +161,8 @@
*/
public ValueMap(final String keyValuePairs, final String delimiter)
{
+ super(COMPARATOR);
+
int start = 0;
int equalsIndex = keyValuePairs.indexOf('=');
int delimiterIndex = keyValuePairs.indexOf(delimiter,
equalsIndex);
@@ -181,6 +221,8 @@
public ValueMap(final String keyValuePairs, final String delimiter,
final MetaPattern valuePattern)
{
+ super(COMPARATOR);
+
// Get list of strings separated by the delimiter
final StringList pairs = StringList.tokenize(keyValuePairs,
delimiter);
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/ParentResourceEscapePathTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ParentResourceEscapePathTest.java?rev=665751&r1=665750&r2=665751&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/ParentResourceEscapePathTest.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/ParentResourceEscapePathTest.java
Mon Jun 9 09:33:20 2008
@@ -38,9 +38,9 @@
tester.assertNoErrorMessage();
final StringBuilder expectedHtml = new StringBuilder();
- expectedHtml.append("<html><head><wicket:link><script
type=\"text/javascript\" src=\"");
+ expectedHtml.append("<html><head><wicket:link><script src=\"");
expectedHtml.append(expectedResourceUrl());
- expectedHtml.append("\"></script></wicket:link></head></html>");
+ expectedHtml.append("\"
type=\"text/javascript\"></script></wicket:link></head></html>");
assertEquals(expectedHtml.toString(),
tester.getServletResponse().getDocument());
}
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html?rev=665751&r1=665750&r2=665751&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/TestDetachPageAjaxResult.html
Mon Jun 9 09:33:20 2008
@@ -5,4 +5,4 @@
wicketAjaxDebugEnable=true;
/*-->]^]^>*/</script>
-</head>]]></header-contribution><component id="comp1" ><![CDATA[<span
onclick="var
wcall=wicketAjaxGet('?wicket:interface=:0:comp::IBehaviorListener:0:-1',null,null,
function() {return Wicket.$('comp1') != null;}.bind(this));"
id="comp1">body</span>]]></component></ajax-response>
\ No newline at end of file
+</head>]]></header-contribution><component id="comp1" ><![CDATA[<span
id="comp1" onclick="var
wcall=wicketAjaxGet('?wicket:interface=:0:comp::IBehaviorListener:0:-1',null,null,
function() {return Wicket.$('comp1') !=
null;}.bind(this));">body</span>]]></component></ajax-response>
\ No newline at end of file
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_ajax_expected.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_ajax_expected.html?rev=665751&r1=665750&r2=665751&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_ajax_expected.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/DomReadyOrderPage_ajax_expected.html
Mon Jun 9 09:33:20 2008
@@ -5,4 +5,4 @@
wicketAjaxDebugEnable=true;
/*-->]^]^>*/</script>
-</head>]]></header-contribution><component id="test1" ><![CDATA[<a
href="?wicket:interface=:0:test::ILinkListener::" onclick="var
wcall=wicketAjaxGet('?wicket:interface=:0:test::IBehaviorListener:0:-1',null,null,
function() {return Wicket.$('test1') != null;}.bind(this));return !wcall;"
id="test1">Test</a>]]></component><evaluate><![CDATA[test1();]]></evaluate><evaluate><![CDATA[test2();]]></evaluate></ajax-response>
\ No newline at end of file
+</head>]]></header-contribution><component id="test1" ><![CDATA[<a
href="?wicket:interface=:0:test::ILinkListener::" id="test1" onclick="var
wcall=wicketAjaxGet('?wicket:interface=:0:test::IBehaviorListener:0:-1',null,null,
function() {return Wicket.$('test1') != null;}.bind(this));return
!wcall;">Test</a>]]></component><evaluate><![CDATA[test1();]]></evaluate><evaluate><![CDATA[test2();]]></evaluate></ajax-response>
\ No newline at end of file
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/MockComponent1-expected.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/MockComponent1-expected.html?rev=665751&r1=665750&r2=665751&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/MockComponent1-expected.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/MockComponent1-expected.html
Mon Jun 9 09:33:20 2008
@@ -1,5 +1,5 @@
<![CDATA[<head xmlns:wicket="http://wicket.apache.org">
-<style type="text/css" id="org-apache-wicket-ajax-MockComponent1-0">
+<style id="org-apache-wicket-ajax-MockComponent1-0" type="text/css">
.onTheFlyClass {
background-color: red;
color: white;
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/basic/SimplePageTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/basic/SimplePageTest.java?rev=665751&r1=665750&r2=665751&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/basic/SimplePageTest.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/basic/SimplePageTest.java
Mon Jun 9 09:33:20 2008
@@ -105,7 +105,7 @@
assertNotNull(document);
assertFalse("".equals(document));
assertEquals(
- "<span wicket:id=\"myBorder2\"
testAttr=\"myValue\"><wicket:border>before body -
<wicket:body>border</wicket:body> - after body</wicket:border></span>",
+ "<span testAttr=\"myValue\"
wicket:id=\"myBorder2\"><wicket:border>before body -
<wicket:body>border</wicket:body> - after body</wicket:border></span>",
document);
// do the same test twice. Igor reported a problem with that,
so we have to test it.
@@ -116,7 +116,7 @@
assertNotNull(document);
assertFalse("".equals(document));
assertEquals(
- "<span wicket:id=\"myBorder2\"
testAttr=\"myValue\"><wicket:border>before body -
<wicket:body>border</wicket:body> - after body</wicket:border></span>",
+ "<span testAttr=\"myValue\"
wicket:id=\"myBorder2\"><wicket:border>before body -
<wicket:body>border</wicket:body> - after body</wicket:border></span>",
document);
WebMarkupContainer container =
(WebMarkupContainer)tester.getLastRenderedPage().get("test");
@@ -185,7 +185,7 @@
assertNotNull(document);
assertFalse("".equals(document));
assertEquals(
- "<span wicket:id=\"myBorder2\"
testAttr=\"myValue\"><wicket:border>before body -
<wicket:body>border</wicket:body> - after body</wicket:border></span>",
+ "<span testAttr=\"myValue\"
wicket:id=\"myBorder2\"><wicket:border>before body -
<wicket:body>border</wicket:body> - after body</wicket:border></span>",
document);
// do the same test twice. Igor reported a problem with that,
so we have to test it.
@@ -196,7 +196,7 @@
assertNotNull(document);
assertFalse("".equals(document));
assertEquals(
- "<span wicket:id=\"myBorder2\"
testAttr=\"myValue\"><wicket:border>before body -
<wicket:body>border</wicket:body> - after body</wicket:border></span>",
+ "<span testAttr=\"myValue\"
wicket:id=\"myBorder2\"><wicket:border>before body -
<wicket:body>border</wicket:body> - after body</wicket:border></span>",
document);
WebMarkupContainer container =
(WebMarkupContainer)page.get("test");
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/header/inheritance/ExpectedResult2.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/header/inheritance/ExpectedResult2.html?rev=665751&r1=665750&r2=665751&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/header/inheritance/ExpectedResult2.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/header/inheritance/ExpectedResult2.html
Mon Jun 9 09:33:20 2008
@@ -2,7 +2,7 @@
<head>
<title>AbstractPage.html</title>
- <script type="text/javascript"
id="org-apache-wicket-markup-html-header-inheritance-MyPanel2-0">
+ <script id="org-apache-wicket-markup-html-header-inheritance-MyPanel2-0"
type="text/javascript">
function foo() {
alert("Hello, World!");
}
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/header/testing/TestPage_ExpectedResult.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/header/testing/TestPage_ExpectedResult.html?rev=665751&r1=665750&r2=665751&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/header/testing/TestPage_ExpectedResult.html
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/html/header/testing/TestPage_ExpectedResult.html
Mon Jun 9 09:33:20 2008
@@ -3,7 +3,7 @@
<head>
<title>test page</title>
- <script languange="javascript"
id="org-apache-wicket-markup-html-header-testing-TestExtendedPanel-0">
+ <script
id="org-apache-wicket-markup-html-header-testing-TestExtendedPanel-0"
languange="javascript">
alert('wicket head works in extended panel !');
</script>
</head>
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebRequestTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebRequestTest.java?rev=665751&r1=665750&r2=665751&view=diff
==============================================================================
---
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebRequestTest.java
(original)
+++
wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/WebRequestTest.java
Mon Jun 9 09:33:20 2008
@@ -130,7 +130,7 @@
mockRequest.setRequestToRedirectString("?=m"); // key is
encoded as empty string
assertEquals("=m", mockRequest.getQueryString());
mockRequest.setParameter(null, "m2"); // force null string
- assertEquals("=m2&=m", mockRequest.getQueryString());
+ assertEquals("=m&=m2", mockRequest.getQueryString());
}
}