Updated Branches:
  refs/heads/master 35dddc665 -> 6fa173499

WICKET-4937 Add IResponseFilter that can filter out invalid XML characters

Add logging


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/6fa17349
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/6fa17349
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/6fa17349

Branch: refs/heads/master
Commit: 6fa173499db8767afe5f200d79f19afd7224eba9
Parents: 35dddc6
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Thu Dec 20 11:04:46 2012 +0200
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Thu Dec 20 11:04:46 2012 +0200

----------------------------------------------------------------------
 .../response/filter/XmlCleaningResponseFilter.java |   16 +++++++++++++++
 .../filter/XmlCleaningResponseFilterTest.java      |    6 +++-
 2 files changed, 20 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/6fa17349/wicket-core/src/main/java/org/apache/wicket/response/filter/XmlCleaningResponseFilter.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/response/filter/XmlCleaningResponseFilter.java
 
b/wicket-core/src/main/java/org/apache/wicket/response/filter/XmlCleaningResponseFilter.java
index d8fee7e..5abc2de 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/response/filter/XmlCleaningResponseFilter.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/response/filter/XmlCleaningResponseFilter.java
@@ -17,6 +17,8 @@
 package org.apache.wicket.response.filter;
 
 import org.apache.wicket.util.string.AppendingStringBuffer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * An IResponseFilter that removes all invalid XML characters.
@@ -41,6 +43,8 @@ import org.apache.wicket.util.string.AppendingStringBuffer;
  */
 public class XmlCleaningResponseFilter implements IResponseFilter
 {
+       private static final Logger LOG = 
LoggerFactory.getLogger(XmlCleaningResponseFilter.class);
+
        @Override
        public AppendingStringBuffer filter(AppendingStringBuffer 
responseBuffer)
        {
@@ -83,6 +87,7 @@ public class XmlCleaningResponseFilter implements 
IResponseFilter
        {
                char[] chars = input.getValue();
                AppendingStringBuffer out = null;
+               boolean isDebugEnabled = LOG.isDebugEnabled();
 
                int codePoint;
 
@@ -98,10 +103,21 @@ public class XmlCleaningResponseFilter implements 
IResponseFilter
                                {
                                        out = new 
AppendingStringBuffer(chars.length);
                                        out.append(input.subSequence(0, i));
+
+                                       if (isDebugEnabled)
+                                       {
+                                               LOG.debug("An invalid character 
'{}' found at position '{}' in '{}'",
+                                                               new Object[] 
{String.format("0x%X", codePoint), i, new String(chars)});
+                                       }
                                }
                                else
                                {
                                        
out.append(Character.toChars(codePoint));
+                                       if (isDebugEnabled)
+                                       {
+                                               
LOG.debug(String.format("Dropping character for codePoint '0x%X' at position 
'%d'",
+                                                               codePoint, i));
+                                       }
                                }
                        }
                        else if (out != null)

http://git-wip-us.apache.org/repos/asf/wicket/blob/6fa17349/wicket-core/src/test/java/org/apache/wicket/response/filter/XmlCleaningResponseFilterTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/response/filter/XmlCleaningResponseFilterTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/response/filter/XmlCleaningResponseFilterTest.java
index 00f691f..e087ec0 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/response/filter/XmlCleaningResponseFilterTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/response/filter/XmlCleaningResponseFilterTest.java
@@ -43,7 +43,8 @@ public class XmlCleaningResponseFilterTest extends Assert {
                        CharSequence text = createText(invalidChar);
 
                        AppendingStringBuffer filtered = filter.filter(new 
AppendingStringBuffer(text));
-                       assertEquals(String.format("checking Unicode codepoint 
0x%X:", invalidChar), AJAX_RESPONSE_START+AJAX_RESPONSE_END, 
filtered.toString());
+                       assertEquals(String.format("checking Unicode codepoint 
0x%X:", invalidChar),
+                                       AJAX_RESPONSE_START+AJAX_RESPONSE_END, 
filtered.toString());
                }
        }
 
@@ -62,7 +63,8 @@ public class XmlCleaningResponseFilterTest extends Assert {
                        CharSequence text = createText(validChar);
 
                        AppendingStringBuffer filtered = filter.filter(new 
AppendingStringBuffer(text));
-                       assertEquals(String.format("checking Unicode codepoint 
0x%X:", validChar), text.toString(), filtered.toString());
+                       assertEquals(String.format("checking Unicode codepoint 
0x%X:", validChar),
+                                       text.toString(), filtered.toString());
                }
        }
 

Reply via email to