Updated Branches:
  refs/heads/master ddca98956 -> b46a9741b

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

Export the root element name in XmlAjaxResponse as constrants and use these 
constants in XmlCleaningResponseFilter


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

Branch: refs/heads/master
Commit: b46a9741b79e06fd2c841c19f6f6f250e78716e1
Parents: ddca989
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Thu Dec 20 15:00:58 2012 +0200
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Thu Dec 20 15:00:58 2012 +0200

----------------------------------------------------------------------
 .../org/apache/wicket/ajax/XmlAjaxResponse.java    |   10 ++++++++--
 .../response/filter/XmlCleaningResponseFilter.java |    3 ++-
 .../filter/XmlCleaningResponseFilterTest.java      |   13 +++++++------
 3 files changed, 17 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/b46a9741/wicket-core/src/main/java/org/apache/wicket/ajax/XmlAjaxResponse.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/XmlAjaxResponse.java 
b/wicket-core/src/main/java/org/apache/wicket/ajax/XmlAjaxResponse.java
index 4ab9381..29a008f 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/XmlAjaxResponse.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/XmlAjaxResponse.java
@@ -43,6 +43,12 @@ public abstract class XmlAjaxResponse extends 
AbstractAjaxResponse
 {
        private static final Logger LOG = 
LoggerFactory.getLogger(XmlAjaxResponse.class);
 
+       /**
+        * The name of the root element in the produced XML document.
+        */
+       public static final String START_ROOT_ELEMENT = "<ajax-response>";
+       public static final String END_ROOT_ELEMENT = "</ajax-response>";
+
        public XmlAjaxResponse(final Page page)
        {
                super(page);
@@ -60,7 +66,7 @@ public abstract class XmlAjaxResponse extends 
AbstractAjaxResponse
                response.write("<?xml version=\"1.0\" encoding=\"");
                response.write(encoding);
                response.write("\"?>");
-               response.write("<ajax-response>");
+               response.write(START_ROOT_ELEMENT);
        }
 
        @Override
@@ -151,7 +157,7 @@ public abstract class XmlAjaxResponse extends 
AbstractAjaxResponse
        @Override
        protected void writeFooter(Response response, String encoding)
        {
-               response.write("</ajax-response>");
+               response.write(END_ROOT_ELEMENT);
        }
 
        @Override

http://git-wip-us.apache.org/repos/asf/wicket/blob/b46a9741/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 5abc2de..3289016 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
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.response.filter;
 
+import org.apache.wicket.ajax.XmlAjaxResponse;
 import org.apache.wicket.util.string.AppendingStringBuffer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -69,7 +70,7 @@ public class XmlCleaningResponseFilter implements 
IResponseFilter
                // <?xml version="1.0" encoding="UTF-8" 
standalone="yes"?><ajax-response>
                int min = Math.min(150, responseBuffer.length());
                String firstNChars = responseBuffer.substring(0, min);
-               return firstNChars.contains("<ajax-response>");
+               return firstNChars.contains(XmlAjaxResponse.START_ROOT_ELEMENT);
        }
 
        /**

http://git-wip-us.apache.org/repos/asf/wicket/blob/b46a9741/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 e087ec0..1465025 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
@@ -16,18 +16,19 @@
  */
 package org.apache.wicket.response.filter;
 
+import static org.apache.wicket.ajax.XmlAjaxResponse.END_ROOT_ELEMENT;
+import static org.apache.wicket.ajax.XmlAjaxResponse.START_ROOT_ELEMENT;
 import org.apache.wicket.util.string.AppendingStringBuffer;
 import org.junit.Assert;
 import org.junit.Test;
 
+
+
 /**
  * Tests for XmlCleaningResponseFilter
  */
 public class XmlCleaningResponseFilterTest extends Assert {
 
-       public static final String AJAX_RESPONSE_START = "<ajax-response>b";
-       public static final String AJAX_RESPONSE_END = "b</ajax-response>";
-
        /**
         * Tests that invalid XML characters are removed
         * @throws Exception
@@ -44,7 +45,7 @@ public class XmlCleaningResponseFilterTest extends Assert {
 
                        AppendingStringBuffer filtered = filter.filter(new 
AppendingStringBuffer(text));
                        assertEquals(String.format("checking Unicode codepoint 
0x%X:", invalidChar),
-                                       AJAX_RESPONSE_START+AJAX_RESPONSE_END, 
filtered.toString());
+                                       START_ROOT_ELEMENT+END_ROOT_ELEMENT, 
filtered.toString());
                }
        }
 
@@ -73,9 +74,9 @@ public class XmlCleaningResponseFilterTest extends Assert {
        {
                String character = new String(new int[] {ch}, 0, 1);
                return new StringBuilder()
-                               .append(AJAX_RESPONSE_START)
+                               .append(START_ROOT_ELEMENT)
                                .append(character)
-                               .append(AJAX_RESPONSE_END);
+                               .append(END_ROOT_ELEMENT);
        }
 
        /**

Reply via email to