I'm sure that my changes in most cases are of the paranoid type, ResourceUtils and FixCRLF look as if they really had a chance of running into trouble. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@274397 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -324,7 +324,7 @@ public class RuntimeConfigurable implements Serializable { | |||||
| id = (String) attributeMap.get("id"); | id = (String) attributeMap.get("id"); | ||||
| if (characters.length() != 0) { | if (characters.length() != 0) { | ||||
| ProjectHelper.addText(p, wrappedObject, characters.toString()); | |||||
| ProjectHelper.addText(p, wrappedObject, characters.substring(0)); | |||||
| } | } | ||||
| Enumeration enum = children.elements(); | Enumeration enum = children.elements(); | ||||
| @@ -1,7 +1,7 @@ | |||||
| /* | /* | ||||
| * The Apache Software License, Version 1.1 | * The Apache Software License, Version 1.1 | ||||
| * | * | ||||
| * Copyright (c) 2002-2002 The Apache Software Foundation. All rights | |||||
| * Copyright (c) 2002-2003 The Apache Software Foundation. All rights | |||||
| * reserved. | * reserved. | ||||
| * | * | ||||
| * Redistribution and use in source and binary forms, with or without | * Redistribution and use in source and binary forms, with or without | ||||
| @@ -158,7 +158,7 @@ public class MailLogger extends DefaultLogger { | |||||
| String subject = getValue(properties, prefix + ".subject", | String subject = getValue(properties, prefix + ".subject", | ||||
| (success) ? "Build Success" : "Build Failure"); | (success) ? "Build Success" : "Build Failure"); | ||||
| sendMail(mailhost, port, from, toList, subject, buffer.toString()); | |||||
| sendMail(mailhost, port, from, toList, subject, buffer.substring(0)); | |||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| System.out.println("MailLogger failed to send e-mail!"); | System.out.println("MailLogger failed to send e-mail!"); | ||||
| e.printStackTrace(System.err); | e.printStackTrace(System.err); | ||||
| @@ -1,7 +1,7 @@ | |||||
| /* | /* | ||||
| * The Apache Software License, Version 1.1 | * The Apache Software License, Version 1.1 | ||||
| * | * | ||||
| * Copyright (c) 2000-2002 The Apache Software Foundation. All rights | |||||
| * Copyright (c) 2000-2003 The Apache Software Foundation. All rights | |||||
| * reserved. | * reserved. | ||||
| * | * | ||||
| * Redistribution and use in source and binary forms, with or without | * Redistribution and use in source and binary forms, with or without | ||||
| @@ -294,8 +294,8 @@ public class AntStructure extends Task { | |||||
| sb.append(">"); | sb.append(">"); | ||||
| out.println(sb); | out.println(sb); | ||||
| sb.setLength(0); | |||||
| sb.append("<!ATTLIST ").append(name); | |||||
| sb = new StringBuffer("<!ATTLIST "); | |||||
| sb.append(name); | |||||
| sb.append(lSep).append(" id ID #IMPLIED"); | sb.append(lSep).append(" id ID #IMPLIED"); | ||||
| enum = ih.getAttributes(); | enum = ih.getAttributes(); | ||||
| @@ -412,7 +412,7 @@ public class Concat extends Task { | |||||
| if (textBuffer != null) { | if (textBuffer != null) { | ||||
| reader = new StringReader( | reader = new StringReader( | ||||
| getProject().replaceProperties(textBuffer.toString())); | |||||
| getProject().replaceProperties(textBuffer.substring(0))); | |||||
| } else { | } else { | ||||
| reader = new MultiReader(); | reader = new MultiReader(); | ||||
| } | } | ||||
| @@ -476,7 +476,7 @@ public class Concat extends Task { | |||||
| */ | */ | ||||
| private void sanitizeText() { | private void sanitizeText() { | ||||
| if (textBuffer != null) { | if (textBuffer != null) { | ||||
| if (textBuffer.toString().trim().length() == 0) { | |||||
| if (textBuffer.substring(0).trim().length() == 0) { | |||||
| textBuffer = null; | textBuffer = null; | ||||
| } | } | ||||
| } | } | ||||
| @@ -1,7 +1,7 @@ | |||||
| /* | /* | ||||
| * The Apache Software License, Version 1.1 | * The Apache Software License, Version 1.1 | ||||
| * | * | ||||
| * Copyright (c) 2000-2002 The Apache Software Foundation. All rights | |||||
| * Copyright (c) 2000-2003 The Apache Software Foundation. All rights | |||||
| * reserved. | * reserved. | ||||
| * | * | ||||
| * Redistribution and use in source and binary forms, with or without | * Redistribution and use in source and binary forms, with or without | ||||
| @@ -720,7 +720,7 @@ public class FixCRLF extends MatchingTask { | |||||
| // process sequences of white space | // process sequences of white space | ||||
| // first convert all tabs to spaces | // first convert all tabs to spaces | ||||
| linebuf.setLength(0); | |||||
| linebuf = new StringBuffer(); | |||||
| while ((nextTab = line.indexOf((int) '\t', place)) >= 0) { | while ((nextTab = line.indexOf((int) '\t', place)) >= 0) { | ||||
| linebuf.append(line.substring(place, nextTab)); // copy to the TAB | linebuf.append(line.substring(place, nextTab)); // copy to the TAB | ||||
| col += nextTab - place; | col += nextTab - place; | ||||
| @@ -731,7 +731,7 @@ public class FixCRLF extends MatchingTask { | |||||
| } // end of while | } // end of while | ||||
| linebuf.append(line.substring(place, line.length())); | linebuf.append(line.substring(place, line.length())); | ||||
| // if converting to spaces, all finished | // if converting to spaces, all finished | ||||
| String linestring = new String(linebuf.toString()); | |||||
| String linestring = new String(linebuf.substring(0)); | |||||
| if (tabs == REMOVE) { | if (tabs == REMOVE) { | ||||
| try { | try { | ||||
| outWriter.write(linestring); | outWriter.write(linestring); | ||||
| @@ -740,7 +740,7 @@ public class FixCRLF extends MatchingTask { | |||||
| } // end of try-catch | } // end of try-catch | ||||
| } else { // tabs == ADD | } else { // tabs == ADD | ||||
| int tabCol; | int tabCol; | ||||
| linebuf2.setLength(0); | |||||
| linebuf2 = new StringBuffer(); | |||||
| place = 0; | place = 0; | ||||
| col = bufline.getColumn(); | col = bufline.getColumn(); | ||||
| int placediff = col - 0; | int placediff = col - 0; | ||||
| @@ -782,7 +782,7 @@ public class FixCRLF extends MatchingTask { | |||||
| linebuf2.append(linestring.substring(place, linestring.length())); | linebuf2.append(linestring.substring(place, linestring.length())); | ||||
| try { | try { | ||||
| outWriter.write(linebuf2.toString()); | |||||
| outWriter.write(linebuf2.substring(0)); | |||||
| } catch (IOException e) { | } catch (IOException e) { | ||||
| throw new BuildException(e); | throw new BuildException(e); | ||||
| } // end of try-catch | } // end of try-catch | ||||
| @@ -826,8 +826,8 @@ public class FixCRLF extends MatchingTask { | |||||
| int ch = -1; | int ch = -1; | ||||
| int eolcount = 0; | int eolcount = 0; | ||||
| eolStr.setLength(0); | |||||
| line.setLength(0); | |||||
| eolStr = new StringBuffer(); | |||||
| line = new StringBuffer(); | |||||
| try { | try { | ||||
| ch = reader.read(); | ch = reader.read(); | ||||
| @@ -907,7 +907,7 @@ public class FixCRLF extends MatchingTask { | |||||
| } | } | ||||
| public String getEofStr() { | public String getEofStr() { | ||||
| return eofStr.toString(); | |||||
| return eofStr.substring(0); | |||||
| } | } | ||||
| public int getState() { | public int getState() { | ||||
| @@ -928,7 +928,7 @@ public class FixCRLF extends MatchingTask { | |||||
| throw new NoSuchElementException("OneLiner"); | throw new NoSuchElementException("OneLiner"); | ||||
| } | } | ||||
| BufferLine tmpLine = | BufferLine tmpLine = | ||||
| new BufferLine(line.toString(), eolStr.toString()); | |||||
| new BufferLine(line.toString(), eolStr.substring(0)); | |||||
| nextLine(); | nextLine(); | ||||
| return tmpLine; | return tmpLine; | ||||
| } | } | ||||
| @@ -362,7 +362,7 @@ public class Javadoc extends Task { | |||||
| * @return the current text. | * @return the current text. | ||||
| */ | */ | ||||
| public String getText() { | public String getText() { | ||||
| return text.toString(); | |||||
| return text.substring(0); | |||||
| } | } | ||||
| } | } | ||||
| @@ -1,7 +1,7 @@ | |||||
| /* | /* | ||||
| * The Apache Software License, Version 1.1 | * The Apache Software License, Version 1.1 | ||||
| * | * | ||||
| * Copyright (c) 2000-2002 The Apache Software Foundation. All rights | |||||
| * Copyright (c) 2000-2003 The Apache Software Foundation. All rights | |||||
| * reserved. | * reserved. | ||||
| * | * | ||||
| * Redistribution and use in source and binary forms, with or without | * Redistribution and use in source and binary forms, with or without | ||||
| @@ -124,7 +124,7 @@ public class Replace extends MatchingTask { | |||||
| } | } | ||||
| public String getText() { | public String getText() { | ||||
| return buf.toString(); | |||||
| return buf.substring(0); | |||||
| } | } | ||||
| } | } | ||||
| @@ -555,7 +555,7 @@ public class SQLExec extends JDBCTask { | |||||
| } | } | ||||
| line.append(md.getColumnName(columnCount)); | line.append(md.getColumnName(columnCount)); | ||||
| out.println(line); | out.println(line); | ||||
| line.setLength(0); | |||||
| line = new StringBuffer(); | |||||
| } | } | ||||
| while (rs.next()) { | while (rs.next()) { | ||||
| boolean first = true; | boolean first = true; | ||||
| @@ -573,7 +573,7 @@ public class SQLExec extends JDBCTask { | |||||
| line.append(columnValue); | line.append(columnValue); | ||||
| } | } | ||||
| out.println(line); | out.println(line); | ||||
| line.setLength(0); | |||||
| line = new StringBuffer(); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -1,7 +1,7 @@ | |||||
| /* | /* | ||||
| * The Apache Software License, Version 1.1 | * The Apache Software License, Version 1.1 | ||||
| * | * | ||||
| * Copyright (c) 2002 The Apache Software Foundation. All rights | |||||
| * Copyright (c) 2002-2003 The Apache Software Foundation. All rights | |||||
| * reserved. | * reserved. | ||||
| * | * | ||||
| * Redistribution and use in source and binary forms, with or without | * Redistribution and use in source and binary forms, with or without | ||||
| @@ -162,7 +162,7 @@ public class Message extends ProjectComponent { | |||||
| freader.close(); | freader.close(); | ||||
| } | } | ||||
| } else { | } else { | ||||
| out.println(getProject().replaceProperties(buffer.toString())); | |||||
| out.println(getProject().replaceProperties(buffer.substring(0))); | |||||
| } | } | ||||
| } | } | ||||
| @@ -365,7 +365,7 @@ public class ReplaceRegExp extends Task { | |||||
| pw.print(res); | pw.print(res); | ||||
| pw.print('\r'); | pw.print('\r'); | ||||
| linebuf.setLength(0); | |||||
| linebuf = new StringBuffer(); | |||||
| // hasCR is still true (for the second one) | // hasCR is still true (for the second one) | ||||
| } else { | } else { | ||||
| // first CR in this line | // first CR in this line | ||||
| @@ -388,7 +388,7 @@ public class ReplaceRegExp extends Task { | |||||
| } | } | ||||
| pw.print('\n'); | pw.print('\n'); | ||||
| linebuf.setLength(0); | |||||
| linebuf = new StringBuffer(); | |||||
| } else { // any other char | } else { // any other char | ||||
| if ((hasCR) || (c < 0)) { | if ((hasCR) || (c < 0)) { | ||||
| // Mac-style linebreak or EOF (or both) | // Mac-style linebreak or EOF (or both) | ||||
| @@ -405,7 +405,7 @@ public class ReplaceRegExp extends Task { | |||||
| hasCR = false; | hasCR = false; | ||||
| } | } | ||||
| linebuf.setLength(0); | |||||
| linebuf = new StringBuffer(); | |||||
| } | } | ||||
| if (c >= 0) { | if (c >= 0) { | ||||
| @@ -640,7 +640,7 @@ public class JUnitTask extends Task { | |||||
| formatterArg.append(outFile); | formatterArg.append(outFile); | ||||
| } | } | ||||
| cmd.createArgument().setValue(formatterArg.toString()); | cmd.createArgument().setValue(formatterArg.toString()); | ||||
| formatterArg.setLength(0); | |||||
| formatterArg = new StringBuffer(); | |||||
| } | } | ||||
| // Create a temporary file to pass the Ant properties to the | // Create a temporary file to pass the Ant properties to the | ||||
| @@ -145,7 +145,7 @@ public class P4Add extends P4Base { | |||||
| filelist.append(" ").append('"').append(f.getAbsolutePath()).append('"'); | filelist.append(" ").append('"').append(f.getAbsolutePath()).append('"'); | ||||
| if (filelist.length() > cmdLength) { | if (filelist.length() > cmdLength) { | ||||
| execP4Add(filelist); | execP4Add(filelist); | ||||
| filelist.setLength(0); | |||||
| filelist = new StringBuffer(); | |||||
| } | } | ||||
| } | } | ||||
| if (filelist.length() > 0) { | if (filelist.length() > 0) { | ||||
| @@ -165,7 +165,7 @@ public class P4Fstat extends P4Base { | |||||
| if (filelist.length() > cmdLength) { | if (filelist.length() > cmdLength) { | ||||
| execP4Fstat(filelist); | execP4Fstat(filelist); | ||||
| filelist.setLength(0); | |||||
| filelist = new StringBuffer(); | |||||
| } | } | ||||
| } | } | ||||
| if (filelist.length() > 0) { | if (filelist.length() > 0) { | ||||
| @@ -1,7 +1,7 @@ | |||||
| /* | /* | ||||
| * The Apache Software License, Version 1.1 | * The Apache Software License, Version 1.1 | ||||
| * | * | ||||
| * Copyright (c) 2001-2002 The Apache Software Foundation. All rights | |||||
| * Copyright (c) 2001-2003 The Apache Software Foundation. All rights | |||||
| * reserved. | * reserved. | ||||
| * | * | ||||
| * Redistribution and use in source and binary forms, with or without | * Redistribution and use in source and binary forms, with or without | ||||
| @@ -122,8 +122,8 @@ public class Utils { | |||||
| StringBuffer param = new StringBuffer(); | StringBuffer param = new StringBuffer(); | ||||
| i++; | i++; | ||||
| while ((i = descriptor2java(descriptor, i, param)) < descriptor.length()) { | while ((i = descriptor2java(descriptor, i, param)) < descriptor.length()) { | ||||
| params.add(param.toString()); | |||||
| param.setLength(0); // reset | |||||
| params.add(param.substring(0)); | |||||
| param = new StringBuffer(); | |||||
| if (descriptor.charAt(i) == ')') { | if (descriptor.charAt(i) == ')') { | ||||
| i++; | i++; | ||||
| break; | break; | ||||
| @@ -1,7 +1,7 @@ | |||||
| /* | /* | ||||
| * The Apache Software License, Version 1.1 | * The Apache Software License, Version 1.1 | ||||
| * | * | ||||
| * Copyright (c) 2000-2002 The Apache Software Foundation. All rights | |||||
| * Copyright (c) 2000-2003 The Apache Software Foundation. All rights | |||||
| * reserved. | * reserved. | ||||
| * | * | ||||
| * Redistribution and use in source and binary forms, with or without | * Redistribution and use in source and binary forms, with or without | ||||
| @@ -399,7 +399,7 @@ public class Commandline implements Cloneable { | |||||
| } else if (" ".equals(nextTok)) { | } else if (" ".equals(nextTok)) { | ||||
| if (lastTokenHasBeenQuoted || current.length() != 0) { | if (lastTokenHasBeenQuoted || current.length() != 0) { | ||||
| v.addElement(current.toString()); | v.addElement(current.toString()); | ||||
| current.setLength(0); | |||||
| current = new StringBuffer(); | |||||
| } | } | ||||
| } else { | } else { | ||||
| current.append(nextTok); | current.append(nextTok); | ||||
| @@ -397,7 +397,6 @@ public class Path extends DataType implements Cloneable { | |||||
| PathTokenizer tok = new PathTokenizer(source); | PathTokenizer tok = new PathTokenizer(source); | ||||
| StringBuffer element = new StringBuffer(); | StringBuffer element = new StringBuffer(); | ||||
| while (tok.hasMoreTokens()) { | while (tok.hasMoreTokens()) { | ||||
| element.setLength(0); | |||||
| String pathElement = tok.nextToken(); | String pathElement = tok.nextToken(); | ||||
| try { | try { | ||||
| element.append(resolveFile(project, pathElement)); | element.append(resolveFile(project, pathElement)); | ||||
| @@ -410,6 +409,7 @@ public class Path extends DataType implements Cloneable { | |||||
| translateFileSep(element, i); | translateFileSep(element, i); | ||||
| } | } | ||||
| result.addElement(element.toString()); | result.addElement(element.toString()); | ||||
| element = new StringBuffer(); | |||||
| } | } | ||||
| String[] res = new String[result.size()]; | String[] res = new String[result.size()]; | ||||
| result.copyInto(res); | result.copyInto(res); | ||||
| @@ -80,7 +80,6 @@ import org.w3c.dom.Text; | |||||
| public class DOMElementWriter { | public class DOMElementWriter { | ||||
| private static String lSep = System.getProperty("line.separator"); | private static String lSep = System.getProperty("line.separator"); | ||||
| private StringBuffer sb = new StringBuffer(); | |||||
| /** | /** | ||||
| * Don't try to be too smart but at least recognize the predefined | * Don't try to be too smart but at least recognize the predefined | ||||
| @@ -204,7 +203,7 @@ public class DOMElementWriter { | |||||
| * drop characters that are illegal in XML documents. | * drop characters that are illegal in XML documents. | ||||
| */ | */ | ||||
| public String encode(String value) { | public String encode(String value) { | ||||
| sb.setLength(0); | |||||
| StringBuffer sb = new StringBuffer(); | |||||
| int len = value.length(); | int len = value.length(); | ||||
| for (int i = 0; i < len; i++) { | for (int i = 0; i < len; i++) { | ||||
| char c = value.charAt(i); | char c = value.charAt(i); | ||||
| @@ -254,7 +253,7 @@ public class DOMElementWriter { | |||||
| */ | */ | ||||
| public String encodedata(final String value) { | public String encodedata(final String value) { | ||||
| sb.setLength(0); | |||||
| StringBuffer sb = new StringBuffer(); | |||||
| for (int i = 0; i < value.length(); ++i) { | for (int i = 0; i < value.length(); ++i) { | ||||
| char c = value.charAt(i); | char c = value.charAt(i); | ||||
| if (isLegalCharacter(c)) { | if (isLegalCharacter(c)) { | ||||
| @@ -1,7 +1,7 @@ | |||||
| /* | /* | ||||
| * The Apache Software License, Version 1.1 | * The Apache Software License, Version 1.1 | ||||
| * | * | ||||
| * Copyright (c) 2000,2002 The Apache Software Foundation. All rights | |||||
| * Copyright (c) 2000,2002-2003 The Apache Software Foundation. All rights | |||||
| * reserved. | * reserved. | ||||
| * | * | ||||
| * Redistribution and use in source and binary forms, with or without | * Redistribution and use in source and binary forms, with or without | ||||
| @@ -133,7 +133,7 @@ public class RegexpPatternMapper implements FileNameMapper { | |||||
| result.append(to[i]); | result.append(to[i]); | ||||
| } | } | ||||
| } | } | ||||
| return result.toString(); | |||||
| return result.substring(0); | |||||
| } | } | ||||
| } | } | ||||
| @@ -89,7 +89,6 @@ public class ResourceUtils { | |||||
| FileNameMapper mapper, | FileNameMapper mapper, | ||||
| ResourceFactory targets) { | ResourceFactory targets) { | ||||
| long now = (new java.util.Date()).getTime(); | long now = (new java.util.Date()).getTime(); | ||||
| StringBuffer targetList = new StringBuffer(); | |||||
| /* | /* | ||||
| If we're on Windows, we have to munge the time up to 2 secs to | If we're on Windows, we have to munge the time up to 2 secs to | ||||
| @@ -116,7 +115,7 @@ public class ResourceUtils { | |||||
| .replace('/', File.separatorChar)); | .replace('/', File.separatorChar)); | ||||
| if (targetnames != null) { | if (targetnames != null) { | ||||
| boolean added = false; | boolean added = false; | ||||
| targetList.setLength(0); | |||||
| StringBuffer targetList = new StringBuffer(); | |||||
| for (int ctarget = 0; !added && ctarget < targetnames.length; | for (int ctarget = 0; !added && ctarget < targetnames.length; | ||||
| ctarget++) { | ctarget++) { | ||||
| Resource atarget = | Resource atarget = | ||||