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


Reply via email to