You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by fr...@apache.org on 2008/06/09 18:33:21 UTC

svn commit: r665751 - in /wicket/trunk/wicket/src: main/java/org/apache/wicket/util/value/ test/java/org/apache/wicket/ test/java/org/apache/wicket/ajax/ test/java/org/apache/wicket/markup/html/basic/ test/java/org/apache/wicket/markup/html/header/inhe...

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 {@link TreeMap} instead of a
+	 * {@link 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());
 
 	}
 }