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());
 
        }
 }


Reply via email to