You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by jl...@apache.org on 2014/11/25 00:44:56 UTC

[3/6] ant-easyant-core git commit: use stringbuilder instead of stringbuffer use string concatenation when no string builder is necessary (compiler will do it for us, and it makes our code easier to read)

use stringbuilder instead of stringbuffer
use string concatenation when no string builder is necessary (compiler will do it for us, and it makes our code easier to read)


Project: http://git-wip-us.apache.org/repos/asf/ant-easyant-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant-easyant-core/commit/dee60069
Tree: http://git-wip-us.apache.org/repos/asf/ant-easyant-core/tree/dee60069
Diff: http://git-wip-us.apache.org/repos/asf/ant-easyant-core/diff/dee60069

Branch: refs/heads/master
Commit: dee60069781a95747f6b63af929ee908a5d00828
Parents: e031538
Author: Jean-Louis Boudart <je...@gmail.com>
Authored: Mon Nov 24 23:52:56 2014 +0100
Committer: Jean-Louis Boudart <je...@gmail.com>
Committed: Mon Nov 24 23:52:56 2014 +0100

----------------------------------------------------------------------
 .../org/apache/easyant/core/EasyAntMain.java    |  7 +--
 .../apache/easyant/core/ant/ProjectUtils.java   | 48 +++++++-------------
 .../ant/listerners/DefaultEasyAntLogger.java    |  4 +-
 .../core/ant/listerners/MultiModuleLogger.java  |  4 +-
 .../core/report/XMLEasyAntReportWriter.java     | 16 +------
 .../org/apache/easyant/tasks/BindTarget.java    | 15 ++----
 .../tasks/IvyDependencyUpdateChecker.java       | 12 +----
 .../easyant/tasks/PluginUpdateChecker.java      | 11 +----
 .../org/apache/easyant/tasks/SubModule.java     | 14 +-----
 .../AbstractFindClassPathStrategy.java          |  7 +--
 .../apache/easyant/core/EasyAntBaseTest.java    | 26 +++++------
 .../apache/easyant/tasks/AntTestListener.java   |  2 +-
 12 files changed, 47 insertions(+), 119 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ant-easyant-core/blob/dee60069/src/main/java/org/apache/easyant/core/EasyAntMain.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/easyant/core/EasyAntMain.java b/src/main/java/org/apache/easyant/core/EasyAntMain.java
index 7c91c6f..cd818b8 100755
--- a/src/main/java/org/apache/easyant/core/EasyAntMain.java
+++ b/src/main/java/org/apache/easyant/core/EasyAntMain.java
@@ -734,12 +734,7 @@ public class EasyAntMain implements AntMain {
                 }
                 props.load(in);
 
-                StringBuilder msg = new StringBuilder();
-                msg.append("Apache Ant version ");
-                msg.append(props.getProperty("VERSION"));
-                msg.append(" compiled on ");
-                msg.append(props.getProperty("DATE"));
-                antVersion = msg.toString();
+                antVersion = "Apache Ant version " + props.getProperty("VERSION") + " compiled on " + props.getProperty("DATE");
             } catch (IOException ioe) {
                 throw new BuildException("Could not load the version information", ioe);
             } finally {

http://git-wip-us.apache.org/repos/asf/ant-easyant-core/blob/dee60069/src/main/java/org/apache/easyant/core/ant/ProjectUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/easyant/core/ant/ProjectUtils.java b/src/main/java/org/apache/easyant/core/ant/ProjectUtils.java
index d801337..fce22f5 100644
--- a/src/main/java/org/apache/easyant/core/ant/ProjectUtils.java
+++ b/src/main/java/org/apache/easyant/core/ant/ProjectUtils.java
@@ -17,27 +17,19 @@
  */
 package org.apache.easyant.core.ant;
 
+import org.apache.easyant.core.EasyAntMagicNames;
+import org.apache.easyant.core.ant.listerners.MultiModuleLogger;
+import org.apache.tools.ant.*;
+import org.apache.tools.ant.util.ClasspathUtils;
+
 import java.io.File;
 import java.io.PrintStream;
 import java.lang.reflect.Field;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.easyant.core.EasyAntMagicNames;
-import org.apache.easyant.core.ant.listerners.MultiModuleLogger;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.BuildListener;
-import org.apache.tools.ant.BuildLogger;
-import org.apache.tools.ant.DefaultLogger;
-import org.apache.tools.ant.Location;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.ProjectHelper;
-import org.apache.tools.ant.Target;
-import org.apache.tools.ant.util.ClasspathUtils;
-
 /**
  * Utilitary class to manipulate ant's project (such as creating toplevel target)
- * 
  */
 public class ProjectUtils {
 
@@ -48,7 +40,7 @@ public class ProjectUtils {
 
     /**
      * emulates a top level target
-     * 
+     *
      * @return a top level target
      */
     public static Target createTopLevelTarget() {
@@ -60,7 +52,7 @@ public class ProjectUtils {
     /**
      * Emulate an empty project import task check that projectHelper is at toplevel by checking the size of
      * projectHelper.getImportTask()
-     * 
+     *
      * @return a temporary file acting as a mainscript
      */
     public static File emulateMainScript(Project project) {
@@ -69,11 +61,9 @@ public class ProjectUtils {
 
     /**
      * Replace main logger implementation
-     * 
-     * @param project
-     *            a given project
-     * @param logger
-     *            {@link BuildLogger} implementation to use
+     *
+     * @param project a given project
+     * @param logger  {@link BuildLogger} implementation to use
      */
     public static void replaceMainLogger(Project project, BuildLogger logger) {
         // Change the default output logger
@@ -118,9 +108,8 @@ public class ProjectUtils {
     /**
      * Install multi module logger Multi module logger specified through {@link EasyAntMagicNames}.MULTIMODULE_LOGGER
      * property. If this property is not set use default implementation
-     * 
-     * @param project
-     *            a given project where multi module logger should be installed
+     *
+     * @param project a given project where multi module logger should be installed
      */
     public static void installMultiModuleLogger(Project project) {
         String multiModuleLoggerClassName = project.getProperty(EasyAntMagicNames.MULTIMODULE_LOGGER);
@@ -134,9 +123,8 @@ public class ProjectUtils {
 
     /**
      * Print memory details
-     * 
-     * @param project
-     *            a given project
+     *
+     * @param project a given project
      */
     public static void printMemoryDetails(Project project) {
         project.log("---- Memory Details ----");
@@ -150,15 +138,13 @@ public class ProjectUtils {
     /**
      * Targets in imported files with a project name and not overloaded by the main build file will be in the target map
      * twice. This method removes the duplicate target.
-     * 
-     * @param targets
-     *            the targets to filter.
+     *
+     * @param targets the targets to filter.
      * @return the filtered targets.
      */
     public static Map<String, Target> removeDuplicateTargets(Map<?, ?> targets) {
         Map<Location, Target> locationMap = new HashMap<Location, Target>();
-        for (Map.Entry<?, ?> entry1 : targets.entrySet()) {
-            Map.Entry<?, ?> entry = (Map.Entry<?, ?>) entry1;
+        for (Map.Entry<?, ?> entry : targets.entrySet()) {
             String name = (String) entry.getKey();
             Target target = (Target) entry.getValue();
             Target otherTarget = locationMap.get(target.getLocation());

http://git-wip-us.apache.org/repos/asf/ant-easyant-core/blob/dee60069/src/main/java/org/apache/easyant/core/ant/listerners/DefaultEasyAntLogger.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/easyant/core/ant/listerners/DefaultEasyAntLogger.java b/src/main/java/org/apache/easyant/core/ant/listerners/DefaultEasyAntLogger.java
index fd88da8..77c011a 100644
--- a/src/main/java/org/apache/easyant/core/ant/listerners/DefaultEasyAntLogger.java
+++ b/src/main/java/org/apache/easyant/core/ant/listerners/DefaultEasyAntLogger.java
@@ -34,7 +34,7 @@ public class DefaultEasyAntLogger extends NoBannerLogger {
 
     private long startTime = System.currentTimeMillis();
 
-    protected static void throwableMessage(StringBuffer m, Throwable error, boolean verbose) {
+    protected static void throwableMessage(StringBuilder m, Throwable error, boolean verbose) {
 
         while (error != null) {
             Throwable cause = error.getCause();
@@ -73,7 +73,7 @@ public class DefaultEasyAntLogger extends NoBannerLogger {
     @Override
     public void buildFinished(BuildEvent event) {
         Throwable error = event.getException();
-        StringBuffer message = new StringBuffer();
+        StringBuilder message = new StringBuilder();
         if (error == null) {
             message.append(StringUtils.LINE_SEP);
             message.append(getBuildSuccessfulMessage());

http://git-wip-us.apache.org/repos/asf/ant-easyant-core/blob/dee60069/src/main/java/org/apache/easyant/core/ant/listerners/MultiModuleLogger.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/easyant/core/ant/listerners/MultiModuleLogger.java b/src/main/java/org/apache/easyant/core/ant/listerners/MultiModuleLogger.java
index 1ee4619..6df22a6 100644
--- a/src/main/java/org/apache/easyant/core/ant/listerners/MultiModuleLogger.java
+++ b/src/main/java/org/apache/easyant/core/ant/listerners/MultiModuleLogger.java
@@ -184,9 +184,7 @@ public class MultiModuleLogger extends DefaultEasyAntLogger implements SubBuildL
     private void printExecutionSubBuildsExecutionTimes(Project project) {
         List<ExecutionResult> allSubBuildResults = project.getReference(EXECUTION_TIMER_BUILD_RESULTS);
         if (allSubBuildResults != null && !allSubBuildResults.isEmpty()) {
-            StringBuilder sb = new StringBuilder();
-            sb.append(LINE_SEP).append("Project Sub-modules Summary: ").append(LINE_SEP).append(formatExecutionResults(allSubBuildResults));
-            project.log(sb.toString());
+                project.log(LINE_SEP + "Project Sub-modules Summary: " + LINE_SEP + formatExecutionResults(allSubBuildResults));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ant-easyant-core/blob/dee60069/src/main/java/org/apache/easyant/core/report/XMLEasyAntReportWriter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/easyant/core/report/XMLEasyAntReportWriter.java b/src/main/java/org/apache/easyant/core/report/XMLEasyAntReportWriter.java
index 8482240..9f2c910 100644
--- a/src/main/java/org/apache/easyant/core/report/XMLEasyAntReportWriter.java
+++ b/src/main/java/org/apache/easyant/core/report/XMLEasyAntReportWriter.java
@@ -84,19 +84,7 @@ public class XMLEasyAntReportWriter {
         out.println("\t<configurations>");
 
         for (Configuration configuration : easyAntReport.getModuleDescriptor().getConfigurations()) {
-            StringBuilder sb = new StringBuilder();
-            sb.append("\t\t<configuration name=\"");
-            sb.append(XMLHelper.escape(configuration.getName()));
-            sb.append("\" description=\"");
-            sb.append(XMLHelper.escape(configuration.getDescription()));
-            sb.append("\" extends=\"");
-            sb.append(XMLHelper.escape(Arrays.toString(configuration.getExtends())));
-            sb.append("\" deprecated=\"");
-            sb.append(XMLHelper.escape(configuration.getDeprecated()));
-            sb.append("\" visibility=\"");
-            sb.append(XMLHelper.escape(configuration.getVisibility().toString()));
-            sb.append("\"/>");
-            out.println(sb.toString());
+            out.println("\t\t<configuration name=\"" + XMLHelper.escape(configuration.getName()) + "\" description=\"" + XMLHelper.escape(configuration.getDescription()) + "\" extends=\"" + XMLHelper.escape(Arrays.toString(configuration.getExtends())) + "\" deprecated=\"" + XMLHelper.escape(configuration.getDeprecated()) + "\" visibility=\"" + XMLHelper.escape(configuration.getVisibility().toString()) + "\"/>");
         }
         out.println("\t</configurations>");
 
@@ -374,7 +362,7 @@ public class XMLEasyAntReportWriter {
             parameterReports = easyAntReport.getParameterReportsFromCurrentModule();
         }
         for (ParameterReport paramReport : parameterReports) {
-            StringBuffer param = new StringBuffer();
+            StringBuilder param = new StringBuilder();
 
             if (!ParameterType.PROPERTY.equals(paramReport.getType())) {
                 if (ParameterType.PATH.equals(paramReport.getType())) {

http://git-wip-us.apache.org/repos/asf/ant-easyant-core/blob/dee60069/src/main/java/org/apache/easyant/tasks/BindTarget.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/easyant/tasks/BindTarget.java b/src/main/java/org/apache/easyant/tasks/BindTarget.java
index d49c806..6653be2 100644
--- a/src/main/java/org/apache/easyant/tasks/BindTarget.java
+++ b/src/main/java/org/apache/easyant/tasks/BindTarget.java
@@ -17,14 +17,10 @@
  */
 package org.apache.easyant.tasks;
 
-import java.util.Enumeration;
-
 import org.apache.easyant.core.BuildConfigurationHelper;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.ExtensionPoint;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Target;
-import org.apache.tools.ant.Task;
+import org.apache.tools.ant.*;
+
+import java.util.Enumeration;
 
 public class BindTarget extends Task {
 
@@ -34,10 +30,9 @@ public class BindTarget extends Task {
     private String buildConfigurations;
 
     public void execute() throws BuildException {
-        StringBuilder message = new StringBuilder();
-        message.append("extension-point mapping for target ").append(getTarget()).append(" ");
+        String message = "extension-point mapping for target " + getTarget();
         if (!BuildConfigurationHelper.isBuildConfigurationActive(getBuildConfigurations(), getProject(),
-                message.toString())) {
+                message)) {
             log("no matching build configuration for this extension-point mapping, this mapping will be ignored",
                     Project.MSG_DEBUG);
             return;

http://git-wip-us.apache.org/repos/asf/ant-easyant-core/blob/dee60069/src/main/java/org/apache/easyant/tasks/IvyDependencyUpdateChecker.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/easyant/tasks/IvyDependencyUpdateChecker.java b/src/main/java/org/apache/easyant/tasks/IvyDependencyUpdateChecker.java
index 8caeb1c..f3d21ad 100644
--- a/src/main/java/org/apache/easyant/tasks/IvyDependencyUpdateChecker.java
+++ b/src/main/java/org/apache/easyant/tasks/IvyDependencyUpdateChecker.java
@@ -107,17 +107,7 @@ public class IvyDependencyUpdateChecker extends IvyPostResolveTask {
                         // .isTranstive() methods doesn't have the same meaning)
                         boolean isTransitiveDependency = latest.getDependencyDescriptor(latest.getRoot()) == null;
                         if ((!isTransitiveDependency) || (isTransitiveDependency && showTransitive)) {
-                            StringBuilder sb = new StringBuilder();
-                            sb.append("\t")//
-                                    .append(originalDependency.getResolvedId().getOrganisation()) //
-                                    .append('#')//
-                                    .append(originalDependency.getResolvedId().getName())//
-                                    .append(isTransitiveDependency ? " (transitive)" : "") //
-                                    .append("\t")//
-                                    .append(originalDependency.getResolvedId().getRevision())//
-                                    .append(" -> ")//
-                                    .append(latest.getResolvedId().getRevision());
-                            log(sb.toString());
+                            log("\t" + originalDependency.getResolvedId().getOrganisation() + '#' + originalDependency.getResolvedId().getName() + (isTransitiveDependency ? " (transitive)" : "") + "\t" + originalDependency.getResolvedId().getRevision() + " -> " + latest.getResolvedId().getRevision());
                             dependencyUpdateDetected = true;
                         }
                     }

http://git-wip-us.apache.org/repos/asf/ant-easyant-core/blob/dee60069/src/main/java/org/apache/easyant/tasks/PluginUpdateChecker.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/easyant/tasks/PluginUpdateChecker.java b/src/main/java/org/apache/easyant/tasks/PluginUpdateChecker.java
index 6e50048..c9cb898 100644
--- a/src/main/java/org/apache/easyant/tasks/PluginUpdateChecker.java
+++ b/src/main/java/org/apache/easyant/tasks/PluginUpdateChecker.java
@@ -86,16 +86,7 @@ public class PluginUpdateChecker extends AbstractEasyAntTask {
         String resolvedRevision = report.getModuleDescriptor().getDependencies()[0].getDependencyRevisionId()
                 .getRevision();
         if (!resolvedRevision.equals(moduleRevisionId.getRevision())) {
-            StringBuilder sb = new StringBuilder();
-            sb.append("\t")//
-                    .append(moduleRevisionId.getOrganisation()) //
-                    .append('#')//
-                    .append(moduleRevisionId.getName())//
-                    .append("\t")//
-                    .append(moduleRevisionId.getRevision())//
-                    .append(" -> ")//
-                    .append(resolvedRevision);
-            log(sb.toString());
+            log("\t" + moduleRevisionId.getOrganisation() + '#' + moduleRevisionId.getName() + "\t" + moduleRevisionId.getRevision() + " -> " + resolvedRevision);
             pluginUpdateDetected=true;
         }
 

http://git-wip-us.apache.org/repos/asf/ant-easyant-core/blob/dee60069/src/main/java/org/apache/easyant/tasks/SubModule.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/easyant/tasks/SubModule.java b/src/main/java/org/apache/easyant/tasks/SubModule.java
index 3144ef6..987dcfd 100644
--- a/src/main/java/org/apache/easyant/tasks/SubModule.java
+++ b/src/main/java/org/apache/easyant/tasks/SubModule.java
@@ -315,13 +315,7 @@ public class SubModule extends AbstractEasyAntTask {
             if (keys.contains(target)) {
                 filteredTargets.add(target);
             } else {
-                StringBuilder sb = new StringBuilder();
-                sb.append("Skipping undefined target '")//
-                        .append(target)//
-                        .append("'")//
-                        .append(" on ")//
-                        .append(subProject.getName());
-                subProject.log(sb.toString(), Project.MSG_VERBOSE);
+                subProject.log("Skipping undefined target '" + target + "'" + " on " + subProject.getName(), Project.MSG_VERBOSE);
             }
         }
         return CollectionUtils.flattenToString(filteredTargets);
@@ -334,11 +328,7 @@ public class SubModule extends AbstractEasyAntTask {
      */
     private void printExecutingTargetMsg(Project subProject) {
         final String HEADER = "======================================================================";
-        StringBuilder sb = new StringBuilder();
-        sb.append(HEADER).append(StringUtils.LINE_SEP);
-        sb.append("Executing ").append(targets).append(" on ").append(subProject.getName());
-        sb.append(StringUtils.LINE_SEP).append(HEADER);
-        subProject.log(sb.toString());
+        subProject.log(HEADER + StringUtils.LINE_SEP + "Executing " + targets + " on " + subProject.getName() + StringUtils.LINE_SEP + HEADER);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ant-easyant-core/blob/dee60069/src/main/java/org/apache/easyant/tasks/findclasspath/AbstractFindClassPathStrategy.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/easyant/tasks/findclasspath/AbstractFindClassPathStrategy.java b/src/main/java/org/apache/easyant/tasks/findclasspath/AbstractFindClassPathStrategy.java
index 93a2a24..6dc3346 100644
--- a/src/main/java/org/apache/easyant/tasks/findclasspath/AbstractFindClassPathStrategy.java
+++ b/src/main/java/org/apache/easyant/tasks/findclasspath/AbstractFindClassPathStrategy.java
@@ -63,12 +63,7 @@ public abstract class AbstractFindClassPathStrategy extends DataType {
      *            ivy instance reference
      */
     protected void loadCachePath(String organisation, String module, String revision, String conf, Reference ivyRef) {
-        StringBuilder sb = new StringBuilder();
-        sb.append("Building classpath (").append(getPathid()).append(")");
-        sb.append(" with ");
-        sb.append(organisation).append("#").append(module).append(";").append(revision);
-        sb.append(" conf=").append(conf);
-        log(sb.toString(), Project.MSG_DEBUG);
+        log("Building classpath (" + getPathid() + ")" + " with " + organisation + "#" + module + ";" + revision + " conf=" + conf, Project.MSG_DEBUG);
         IvyCachePath pluginCachePath = new IvyCachePath();
         pluginCachePath.setOrganisation(organisation);
         pluginCachePath.setModule(module);

http://git-wip-us.apache.org/repos/asf/ant-easyant-core/blob/dee60069/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java b/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java
index 2545077..b4b1a44 100755
--- a/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java
+++ b/src/test/java/org/apache/easyant/core/EasyAntBaseTest.java
@@ -52,10 +52,10 @@ public abstract class EasyAntBaseTest {
     protected Project project;
     protected EasyAntConfiguration conf;
 
-    private StringBuffer logBuffer;
-    private StringBuffer fullLogBuffer;
-    private StringBuffer outBuffer;
-    private StringBuffer errBuffer;
+    private StringBuilder logBuffer;
+    private StringBuilder fullLogBuffer;
+    private StringBuilder outBuffer;
+    private StringBuilder errBuffer;
     private BuildException buildException;
 
     @Rule
@@ -276,7 +276,7 @@ public abstract class EasyAntBaseTest {
         return buildException;
     }
 
-    private String cleanBuffer(StringBuffer buffer) {
+    private String cleanBuffer(StringBuilder buffer) {
         StringBuilder cleanedBuffer = new StringBuilder();
         for (int i = 0; i < buffer.length(); i++) {
             char ch = buffer.charAt(i);
@@ -403,8 +403,8 @@ public abstract class EasyAntBaseTest {
             throw new RuntimeException("You must call the configureProject method before initProject()");
         }
         // Flush the buffer
-        logBuffer = new StringBuffer();
-        fullLogBuffer = new StringBuffer();
+        logBuffer = new StringBuilder();
+        fullLogBuffer = new StringBuilder();
         // init the new project instance
         project = new Project();
         project.addBuildListener(new AntTestListener(conf.getMsgOutputLevel()));
@@ -426,14 +426,14 @@ public abstract class EasyAntBaseTest {
         try {
             sysOut.flush();
             sysErr.flush();
-            outBuffer = new StringBuffer();
+            outBuffer = new StringBuilder();
             PrintStream out = new PrintStream(new AntOutputStream(outBuffer));
             System.setOut(out);
-            errBuffer = new StringBuffer();
+            errBuffer = new StringBuilder();
             PrintStream err = new PrintStream(new AntOutputStream(errBuffer));
             System.setErr(err);
-            logBuffer = new StringBuffer();
-            fullLogBuffer = new StringBuffer();
+            logBuffer = new StringBuilder();
+            fullLogBuffer = new StringBuilder();
             buildException = null;
             project.executeTarget(targetName);
         } finally {
@@ -601,9 +601,9 @@ public abstract class EasyAntBaseTest {
      * an output stream which saves stuff to our buffer.
      */
     private static class AntOutputStream extends java.io.OutputStream {
-        private StringBuffer buffer;
+        private StringBuilder buffer;
 
-        public AntOutputStream(StringBuffer buffer) {
+        public AntOutputStream(StringBuilder buffer) {
             this.buffer = buffer;
         }
 

http://git-wip-us.apache.org/repos/asf/ant-easyant-core/blob/dee60069/src/test/java/org/apache/easyant/tasks/AntTestListener.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/easyant/tasks/AntTestListener.java b/src/test/java/org/apache/easyant/tasks/AntTestListener.java
index 939b1ee..29b42eb 100644
--- a/src/test/java/org/apache/easyant/tasks/AntTestListener.java
+++ b/src/test/java/org/apache/easyant/tasks/AntTestListener.java
@@ -29,7 +29,7 @@ public class AntTestListener implements BuildListener {
 
     private int logLevel;
 
-    private StringBuffer buildLog = new StringBuffer();
+    private StringBuilder buildLog = new StringBuilder();
 
     /**
      * Constructs a test listener which will ignore log events above the given level.