From 62c16a4a5d7520c7283d10d0c1633ee0a3d2e5d5 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Wed, 30 Jun 2010 03:21:29 +0000 Subject: [PATCH] address efficiency concerns git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@959173 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/tools/ant/taskdefs/Execute.java | 1 - .../tools/ant/util/DOMElementWriter.java | 23 ++++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/org/apache/tools/ant/taskdefs/Execute.java b/src/main/org/apache/tools/ant/taskdefs/Execute.java index bb4b66cf0..a41ce849b 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Execute.java +++ b/src/main/org/apache/tools/ant/taskdefs/Execute.java @@ -498,7 +498,6 @@ public class Execute { watchdog.stop(); } streamHandler.stop(); - closeStreams(process); if (watchdog != null) { watchdog.checkException(); diff --git a/src/main/org/apache/tools/ant/util/DOMElementWriter.java b/src/main/org/apache/tools/ant/util/DOMElementWriter.java index c5d8a84bf..8f4939b25 100644 --- a/src/main/org/apache/tools/ant/util/DOMElementWriter.java +++ b/src/main/org/apache/tools/ant/util/DOMElementWriter.java @@ -45,6 +45,13 @@ public class DOMElementWriter { private static final int HEX = 16; + private static final String[] WS_ENTITIES = new String['\r' - '\t' + 1]; + static { + for (int i = '\t'; i < '\r' + 1; i++) { + WS_ENTITIES[i - '\t'] = "&#x" + Integer.toHexString(i) + ";"; + } + } + /** prefix for generated prefixes */ private static final String NS = "ns"; @@ -425,11 +432,11 @@ public class DOMElementWriter { return encode(value, true); } - private String encode(String value, boolean encodeWhitespace) { - int len = value.length(); - StringBuffer sb = new StringBuffer(len); + private String encode(final String value, final boolean encodeWhitespace) { + final int len = value.length(); + final StringBuffer sb = new StringBuffer(len); for (int i = 0; i < len; i++) { - char c = value.charAt(i); + final char c = value.charAt(i); switch (c) { case '<': sb.append("<"); @@ -450,7 +457,7 @@ public class DOMElementWriter { case '\n': case '\t': if (encodeWhitespace) { - sb.append("&#x").append(Integer.toHexString(c)).append(";"); + sb.append(WS_ENTITIES[c - '\t']); } else { sb.append(c); } @@ -482,10 +489,10 @@ public class DOMElementWriter { */ public String encodedata(final String value) { - int len = value.length(); + final int len = value.length(); StringBuffer sb = new StringBuffer(len); for (int i = 0; i < len; ++i) { - char c = value.charAt(i); + final char c = value.charAt(i); if (isLegalCharacter(c)) { sb.append(c); } @@ -543,7 +550,7 @@ public class DOMElementWriter { * @return true if the character is allowed. * @since 1.10, Ant 1.5 */ - public boolean isLegalCharacter(char c) { + public boolean isLegalCharacter(final char c) { // CheckStyle:MagicNumber OFF if (c == 0x9 || c == 0xA || c == 0xD) { return true;