You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2011/01/14 10:24:23 UTC

svn commit: r1058909 - in /wicket/trunk: wicket-core/src/main/java/org/apache/wicket/ wicket-core/src/test/java/org/apache/wicket/redirect/encodingtest/ wicket-examples/src/main/java/org/apache/wicket/examples/encodings/ wicket-examples/src/test/java/o...

Author: mgrigorov
Date: Fri Jan 14 09:24:22 2011
New Revision: 1058909

URL: http://svn.apache.org/viewvc?rev=1058909&view=rev
Log:
WICKET-3330 TextField shows HTML entities instead of UTF-8 characters
WICKET-2264 Ajax xml response is not validated correct

UNICODE escape the response characteris only if they are non-printable (ASCII < 32, except whitespaces (TAB, LF, CR)) or UNICODE encoding is requested explicitly and above 160 (no idea why 160 is used, and not 128)

Modified:
    wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java
    wicket/trunk/wicket-core/src/test/java/org/apache/wicket/redirect/encodingtest/RequestEncodingTest.java
    wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/encodings/Home.java
    wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/examples/encodings/EncodingTest.java
    wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java

Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java?rev=1058909&r1=1058908&r2=1058909&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java Fri Jan 14 09:24:22 2011
@@ -1727,7 +1727,7 @@ public abstract class Component
 				if (getFlag(FLAG_ESCAPE_MODEL_STRINGS))
 				{
 					// Escape HTML sensitive characters only. Not all none-ascii chars
-					return Strings.escapeMarkup(modelString, false, true).toString();
+					return Strings.escapeMarkup(modelString, false, false).toString();
 				}
 				return modelString;
 			}

Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/redirect/encodingtest/RequestEncodingTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/redirect/encodingtest/RequestEncodingTest.java?rev=1058909&r1=1058908&r2=1058909&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/redirect/encodingtest/RequestEncodingTest.java (original)
+++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/redirect/encodingtest/RequestEncodingTest.java Fri Jan 14 09:24:22 2011
@@ -71,7 +71,7 @@ public class RequestEncodingTest extends
 		assertEquals("umlaut-\u00E4-\u00F6-\u00FC", file);
 
 		String document = tester.getLastResponseAsString();
-		assertTrue(document.contains("umlaut-&#228;-&#246;-&#252;"));
+		assertTrue(document.contains("umlaut-ä-ö-ü"));
 	}
 
 

Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/encodings/Home.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/encodings/Home.java?rev=1058909&r1=1058908&r2=1058909&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/encodings/Home.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/encodings/Home.java Fri Jan 14 09:24:22 2011
@@ -38,6 +38,7 @@ public class Home extends WicketExampleP
 	 */
 	public Home(final PageParameters parameters)
 	{
+		// the non-printable characters are: &#65533;&#65533;&#65533;
 		add(new Label("message", "Hello world! Test: ���"));
 	}
 

Modified: wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/examples/encodings/EncodingTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/examples/encodings/EncodingTest.java?rev=1058909&r1=1058908&r2=1058909&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/examples/encodings/EncodingTest.java (original)
+++ wicket/trunk/wicket-examples/src/test/java/org/apache/wicket/examples/encodings/EncodingTest.java Fri Jan 14 09:24:22 2011
@@ -35,6 +35,7 @@ public class EncodingTest extends TestCa
 		WicketTester tester = new WicketTester();
 		tester.startPage(Home.class);
 		tester.assertContains("Wicket Examples - encodings");
-		tester.assertContains("Hello world! Test: &#65533;&#65533;&#65533;");
+		// the non-printable characters are: &#65533;&#65533;&#65533;
+		tester.assertContains("Hello world! Test: ���");
 	}
 }

Modified: wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java?rev=1058909&r1=1058908&r2=1058909&view=diff
==============================================================================
--- wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java (original)
+++ wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/string/Strings.java Fri Jan 14 09:24:22 2011
@@ -351,27 +351,23 @@ public final class Strings
 
 					default :
 
-						if (convertToHtmlUnicodeEscapes)
+						int ci = 0xffff & c;
+
+						if (
+						// if this is non-printable and not whitespace (TAB, LF, CR)
+						(ci < 32 && ci != 9 && ci != 10 && ci != 13) ||
+						// or non-ASCII (XXX: why 160+ ?!) and need to UNICODE escape it
+							(convertToHtmlUnicodeEscapes && ci > 159))
 						{
-							int ci = 0xffff & c;
-							if (ci > 31 && ci < 160)
-							{
-								// nothing special only 7 Bit
-								buffer.append(c);
-							}
-							else
-							{
-								// Not 7 Bit use the unicode system
-								buffer.append("&#");
-								buffer.append(Integer.toString(ci));
-								buffer.append(';');
-							}
+							buffer.append("&#");
+							buffer.append(Integer.toString(ci));
+							buffer.append(';');
 						}
 						else
 						{
+							// ASCII or whitespace
 							buffer.append(c);
 						}
-
 						break;
 				}
 			}