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