Browse Source

address efficiency concerns

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@959173 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 15 years ago
parent
commit
62c16a4a5d
2 changed files with 15 additions and 9 deletions
  1. +0
    -1
      src/main/org/apache/tools/ant/taskdefs/Execute.java
  2. +15
    -8
      src/main/org/apache/tools/ant/util/DOMElementWriter.java

+ 0
- 1
src/main/org/apache/tools/ant/taskdefs/Execute.java View File

@@ -498,7 +498,6 @@ public class Execute {
watchdog.stop(); watchdog.stop();
} }
streamHandler.stop(); streamHandler.stop();
closeStreams(process);


if (watchdog != null) { if (watchdog != null) {
watchdog.checkException(); watchdog.checkException();


+ 15
- 8
src/main/org/apache/tools/ant/util/DOMElementWriter.java View File

@@ -45,6 +45,13 @@ public class DOMElementWriter {


private static final int HEX = 16; 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 */ /** prefix for generated prefixes */
private static final String NS = "ns"; private static final String NS = "ns";


@@ -425,11 +432,11 @@ public class DOMElementWriter {
return encode(value, true); 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++) { for (int i = 0; i < len; i++) {
char c = value.charAt(i);
final char c = value.charAt(i);
switch (c) { switch (c) {
case '<': case '<':
sb.append("&lt;"); sb.append("&lt;");
@@ -450,7 +457,7 @@ public class DOMElementWriter {
case '\n': case '\n':
case '\t': case '\t':
if (encodeWhitespace) { if (encodeWhitespace) {
sb.append("&#x").append(Integer.toHexString(c)).append(";");
sb.append(WS_ENTITIES[c - '\t']);
} else { } else {
sb.append(c); sb.append(c);
} }
@@ -482,10 +489,10 @@ public class DOMElementWriter {


*/ */
public String encodedata(final String value) { public String encodedata(final String value) {
int len = value.length();
final int len = value.length();
StringBuffer sb = new StringBuffer(len); StringBuffer sb = new StringBuffer(len);
for (int i = 0; i < len; ++i) { for (int i = 0; i < len; ++i) {
char c = value.charAt(i);
final char c = value.charAt(i);
if (isLegalCharacter(c)) { if (isLegalCharacter(c)) {
sb.append(c); sb.append(c);
} }
@@ -543,7 +550,7 @@ public class DOMElementWriter {
* @return true if the character is allowed. * @return true if the character is allowed.
* @since 1.10, Ant 1.5 * @since 1.10, Ant 1.5
*/ */
public boolean isLegalCharacter(char c) {
public boolean isLegalCharacter(final char c) {
// CheckStyle:MagicNumber OFF // CheckStyle:MagicNumber OFF
if (c == 0x9 || c == 0xA || c == 0xD) { if (c == 0x9 || c == 0xA || c == 0xD) {
return true; return true;


Loading…
Cancel
Save