Updated Branches: refs/heads/master 80adc543c -> fb2b200f2
WICKET-4937 Add IResponseFilter that can filter out invalid XML characters Do not append invalid xml characters Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/fb2b200f Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/fb2b200f Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/fb2b200f Branch: refs/heads/master Commit: fb2b200f2457bbac1bab4879e03c4e4964754ed1 Parents: 80adc54 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Mon Dec 24 10:06:46 2012 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Mon Dec 24 10:07:35 2012 +0200 ---------------------------------------------------------------------- .../response/filter/XmlCleaningResponseFilter.java | 10 ++----- .../filter/XmlCleaningResponseFilterTest.java | 21 +++++++++++++++ 2 files changed, 24 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/fb2b200f/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 3289016..5552552 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 @@ -111,14 +111,10 @@ public class XmlCleaningResponseFilter implements IResponseFilter new Object[] {String.format("0x%X", codePoint), i, new String(chars)}); } } - else + else if (isDebugEnabled) { - out.append(Character.toChars(codePoint)); - if (isDebugEnabled) - { - LOG.debug(String.format("Dropping character for codePoint '0x%X' at position '%d'", - codePoint, i)); - } + 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/fb2b200f/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 1465025..1c648b1 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 @@ -50,6 +50,27 @@ public class XmlCleaningResponseFilterTest extends Assert { } /** + * Tests that invalid XML characters are removed + * @throws Exception + */ + @Test + public void filterMultipleInvalid() throws Exception + { + XmlCleaningResponseFilter filter = new XmlCleaningResponseFilter(); + CharSequence text = new StringBuilder() + .append(START_ROOT_ELEMENT) + .append(new String(new int[]{0x0008}, 0, 1)) + .append("a") + .append(new String(new int[]{0x0010}, 0, 1)) + .append("b") + .append(new String(new int[]{0xD800}, 0, 1)) + .append(END_ROOT_ELEMENT); + + AppendingStringBuffer filtered = filter.filter(new AppendingStringBuffer(text)); + assertEquals(START_ROOT_ELEMENT+"ab"+END_ROOT_ELEMENT, filtered.toString()); + } + + /** * Tests that valid XML characters are preserved * @throws Exception */
