Browse Source

unconditionally encode & as & in DOMElementWriter. PR 49404

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@954802 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 15 years ago
parent
commit
f8f45e9f02
4 changed files with 18 additions and 18 deletions
  1. +8
    -0
      WHATSNEW
  2. +1
    -7
      src/main/org/apache/tools/ant/util/DOMElementWriter.java
  3. +1
    -3
      src/tests/antunit/taskdefs/optional/junit/xmlformatter-test.xml
  4. +8
    -8
      src/tests/junit/org/apache/tools/ant/util/DOMElementWriterTest.java

+ 8
- 0
WHATSNEW View File

@@ -16,6 +16,14 @@ Changes that could break older environments:

* Removed ant-nodeps.jar; it is now merged into ant.jar.

* DOMElementWriter#encode used to employ special code before encoding
ampersands so that { remained { rather than being turned
into {. This is no longer the case, ampersands will now
be encoded unconditionally.
This affects <echoxml> task as well as the XML logger or JUnit
formatter where ampersands will now always get encoded.
Bugzilla Report 49404.

Fixed bugs:
-----------



+ 1
- 7
src/main/org/apache/tools/ant/util/DOMElementWriter.java View File

@@ -429,13 +429,7 @@ public class DOMElementWriter {
sb.append("&quot;");
break;
case '&':
int nextSemi = value.indexOf(";", i);
if (nextSemi < 0
|| !isReference(value.substring(i, nextSemi + 1))) {
sb.append("&amp;");
} else {
sb.append('&');
}
sb.append("&amp;");
break;
default:
if (isLegalCharacter(c)) {


+ 1
- 3
src/tests/antunit/taskdefs/optional/junit/xmlformatter-test.xml View File

@@ -79,14 +79,12 @@ public class A extends TestCase {
</junit>
<xmlvalidate file="${output}/TEST-org.example.A.xml"
lenient="true"/>
<!--
<au:assertResourceContains
resource="${output}/TEST-org.example.A.xml"
value="message=&quot;&amp;amp;amp;&amp;amp;"/>
<au:assertResourceContains
resource="${output}/TEST-org.example.A.xml"
value="message=AssertionFailedError: &amp;amp;&amp;"/>
-->
value="AssertionFailedError: &amp;amp;amp;&amp;"/>
</target>

</project>

+ 8
- 8
src/tests/junit/org/apache/tools/ant/util/DOMElementWriterTest.java View File

@@ -53,17 +53,17 @@ public class DOMElementWriterTest extends TestCase {
}

public void testEncode() {
assertEquals("&#20;", w.encode("&#20;"));
assertEquals("&#x20;", w.encode("&#x20;"));
assertEquals("&#xA0;", w.encode("&#xA0;"));
assertEquals("&amp;#20;", w.encode("&#20;"));
assertEquals("&amp;#x20;", w.encode("&#x20;"));
assertEquals("&amp;#xA0;", w.encode("&#xA0;"));
assertEquals("&amp;#A0;", w.encode("&#A0;"));
assertEquals("20;", w.encode("20;"));
assertEquals("&amp;#20", w.encode("&#20"));
assertEquals("&quot;", w.encode("&quot;"));
assertEquals("&apos;", w.encode("&apos;"));
assertEquals("&gt;", w.encode("&gt;"));
assertEquals("&lt;", w.encode("&lt;"));
assertEquals("&amp;", w.encode("&amp;"));
assertEquals("&amp;quot;", w.encode("&quot;"));
assertEquals("&amp;apos;", w.encode("&apos;"));
assertEquals("&amp;gt;", w.encode("&gt;"));
assertEquals("&amp;lt;", w.encode("&lt;"));
assertEquals("&amp;amp;", w.encode("&amp;"));
assertEquals("&quot;", w.encode("\""));
assertEquals("&lt;", w.encode("<"));
assertEquals("&amp;", w.encode("&"));


Loading…
Cancel
Save