You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by mb...@apache.org on 2017/04/13 15:16:27 UTC

[27/34] ant git commit: java 5-8

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/LoadResource.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/LoadResource.java b/src/main/org/apache/tools/ant/taskdefs/LoadResource.java
index f68b5ba..1f44d20 100644
--- a/src/main/org/apache/tools/ant/taskdefs/LoadResource.java
+++ b/src/main/org/apache/tools/ant/taskdefs/LoadResource.java
@@ -19,19 +19,18 @@ package org.apache.tools.ant.taskdefs;
 
 import java.io.BufferedInputStream;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.io.Reader;
+import java.nio.charset.Charset;
+import java.util.List;
 import java.util.Vector;
-
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.filters.util.ChainReaderHelper;
+import org.apache.tools.ant.filters.util.ChainReaderHelper.ChainReader;
 import org.apache.tools.ant.types.FilterChain;
 import org.apache.tools.ant.types.Resource;
 import org.apache.tools.ant.types.ResourceCollection;
-import org.apache.tools.ant.util.FileUtils;
 
 /**
  * Load a resource into a property
@@ -70,7 +69,7 @@ public class LoadResource extends Task {
     /**
      * Holds FilterChains
      */
-    private final Vector<FilterChain> filterChains = new Vector<FilterChain>();
+    private final List<FilterChain> filterChains = new Vector<>();
 
     /**
      * Encoding to use for input, defaults to the platform's default
@@ -124,6 +123,7 @@ public class LoadResource extends Task {
      *
      * @exception BuildException if something goes wrong with the build
      */
+    @Override
     public final void execute()
         throws BuildException {
         //validation
@@ -134,82 +134,67 @@ public class LoadResource extends Task {
             throw new BuildException("output property not defined");
         }
         if (quiet && failOnError) {
-            throw new BuildException("quiet and failonerror cannot both be "
-                                     + "set to true");
+            throw new BuildException("quiet and failonerror cannot both be set to true");
         }
         if (!src.isExists()) {
             String message = src + " doesn't exist";
             if (failOnError) {
                 throw new BuildException(message);
-            } else {
-                log(message, quiet ? Project.MSG_WARN : Project.MSG_ERR);
-                return;
             }
+            log(message, quiet ? Project.MSG_WARN : Project.MSG_ERR);
+            return;
         }
-        InputStream is = null;
-        BufferedInputStream bis = null;
-        Reader instream = null;
+
         log("loading " + src + " into property " + property,
             Project.MSG_VERBOSE);
+
+        Charset charset = encoding == null ? Charset.defaultCharset()
+            : Charset.forName(encoding);
         try {
             final long len = src.getSize();
-            log("resource size = "
-                + (len != Resource.UNKNOWN_SIZE ? String.valueOf(len)
-                   : "unknown"), Project.MSG_DEBUG);
+            log("resource size = " + (len != Resource.UNKNOWN_SIZE
+                ? String.valueOf(len) : "unknown"), Project.MSG_DEBUG);
             //discard most of really big resources
             final int size = (int) len;
             //open up the resource
-            is = src.getInputStream();
-            bis = new BufferedInputStream(is);
-            if (encoding == null) {
-                instream = new InputStreamReader(bis);
-            } else {
-                instream = new InputStreamReader(bis, encoding);
-            }
 
-            String text = "";
+            String text;
             if (size != 0) {
-                ChainReaderHelper crh = new ChainReaderHelper();
-                if (len != Resource.UNKNOWN_SIZE) {
-                    crh.setBufferSize(size);
+                try (ChainReader chainReader = new ChainReaderHelper(
+                    getProject(),
+                    new InputStreamReader(
+                        new BufferedInputStream(src.getInputStream()), charset),
+                    filterChains).with(crh -> {
+                        if (src.getSize() != Resource.UNKNOWN_SIZE) {
+                            crh.setBufferSize(size);
+                        }
+                    }).getAssembledReader()) {
+
+                    text = chainReader.readFully();
                 }
-                crh.setPrimaryReader(instream);
-                crh.setFilterChains(filterChains);
-                crh.setProject(getProject());
-                instream = crh.getAssembledReader();
-
-                text = crh.readFully(instream);
             } else {
                 log("Do not set property " + property + " as its length is 0.",
                     quiet ? Project.MSG_VERBOSE : Project.MSG_INFO);
+                text = null;
             }
 
-            if (text != null) {
-                if (text.length() > 0) {
-                    getProject().setNewProperty(property, text);
-                    log("loaded " + text.length() + " characters",
-                        Project.MSG_VERBOSE);
-                    log(property + " := " + text, Project.MSG_DEBUG);
-                }
+            if (!(text == null || text.isEmpty())) {
+                getProject().setNewProperty(property, text);
+                log("loaded " + text.length() + " characters",
+                    Project.MSG_VERBOSE);
+                log(property + " := " + text, Project.MSG_DEBUG);
             }
-
         } catch (final IOException ioe) {
-            final String message = "Unable to load resource: "
-                + ioe.toString();
+            final String message = "Unable to load resource: " + ioe;
             if (failOnError) {
                 throw new BuildException(message, ioe, getLocation());
-            } else {
-                log(message, quiet ? Project.MSG_VERBOSE : Project.MSG_ERR);
             }
+            log(message, quiet ? Project.MSG_VERBOSE : Project.MSG_ERR);
         } catch (final BuildException be) {
             if (failOnError) {
                 throw be;
-            } else {
-                log(be.getMessage(),
-                    quiet ? Project.MSG_VERBOSE : Project.MSG_ERR);
             }
-        } finally {
-            FileUtils.close(is);
+            log(be.getMessage(), quiet ? Project.MSG_VERBOSE : Project.MSG_ERR);
         }
     }
 
@@ -218,7 +203,7 @@ public class LoadResource extends Task {
      * @param filter the filter to add
      */
     public final void addFilterChain(FilterChain filter) {
-        filterChains.addElement(filter);
+        filterChains.add(filter);
     }
 
     /**
@@ -227,8 +212,8 @@ public class LoadResource extends Task {
      */
     public void addConfigured(ResourceCollection a) {
         if (a.size() != 1) {
-            throw new BuildException("only single argument resource collections"
-                                     + " are supported");
+            throw new BuildException(
+                "only single argument resource collections are supported");
         }
         src = a.iterator().next();
     }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/LogStreamHandler.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/LogStreamHandler.java b/src/main/org/apache/tools/ant/taskdefs/LogStreamHandler.java
index bc69c06..d25ecb2 100644
--- a/src/main/org/apache/tools/ant/taskdefs/LogStreamHandler.java
+++ b/src/main/org/apache/tools/ant/taskdefs/LogStreamHandler.java
@@ -18,9 +18,6 @@
 
 package org.apache.tools.ant.taskdefs;
 
-import java.io.IOException;
-
-import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.ProjectComponent;
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.util.FileUtils;
@@ -58,6 +55,7 @@ public class LogStreamHandler extends PumpStreamHandler {
     /**
      * Stop the log stream handler.
      */
+    @Override
     public void stop() {
         super.stop();
         FileUtils.close(getErr());

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/MacroDef.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/MacroDef.java b/src/main/org/apache/tools/ant/taskdefs/MacroDef.java
index 95757b6..ce04612 100644
--- a/src/main/org/apache/tools/ant/taskdefs/MacroDef.java
+++ b/src/main/org/apache/tools/ant/taskdefs/MacroDef.java
@@ -23,6 +23,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Objects;
 
 import org.apache.tools.ant.AntTypeDefinition;
 import org.apache.tools.ant.BuildException;
@@ -42,13 +43,13 @@ import org.apache.tools.ant.UnknownElement;
 public class MacroDef extends AntlibDefinition  {
 
     private NestedSequential nestedSequential;
-    private String     name;
-    private boolean    backTrace = true;
-    private List<Attribute>       attributes = new ArrayList<Attribute>();
-    private Map<String, TemplateElement>        elements   = new HashMap<String, TemplateElement>();
-    private String     textName   = null;
-    private Text       text       = null;
-    private boolean    hasImplicitElement = false;
+    private String name;
+    private boolean backTrace = true;
+    private List<Attribute> attributes = new ArrayList<>();
+    private Map<String, TemplateElement> elements = new HashMap<>();
+    private String textName = null;
+    private Text text = null;
+    private boolean hasImplicitElement = false;
 
     /**
      * Name of the definition
@@ -76,8 +77,8 @@ public class MacroDef extends AntlibDefinition  {
         for (Attribute attribute : attributes) {
             if (text.getName().equals(attribute.getName())) {
                 throw new BuildException(
-                    "the name \"" + text.getName()
-                    + "\" is already used as an attribute");
+                    "the name \"%s\" is already used as an attribute",
+                    text.getName());
             }
         }
         this.text = text;
@@ -132,13 +133,14 @@ public class MacroDef extends AntlibDefinition  {
      * This is a simple task container.
      */
     public static class NestedSequential implements TaskContainer {
-        private List<Task> nested = new ArrayList<Task>();
+        private List<Task> nested = new ArrayList<>();
 
         /**
          * Add a task or type to the container.
          *
          * @param task an unknown element.
          */
+        @Override
         public void addTask(Task task) {
             nested.add(task);
         }
@@ -258,17 +260,16 @@ public class MacroDef extends AntlibDefinition  {
         }
         if (attribute.getName().equals(textName)) {
             throw new BuildException(
-                "the name \"" + attribute.getName()
-                + "\" has already been used by the text element");
+                "the name \"%s\" has already been used by the text element",
+                attribute.getName());
         }
         final int size = attributes.size();
         for (int i = 0; i < size; ++i) {
-            Attribute att = (Attribute) attributes.get(i);
+            Attribute att = attributes.get(i);
             if (att.getName().equals(attribute.getName())) {
                 throw new BuildException(
-                    "the name \"" + attribute.getName()
-                        + "\" has already been used in "
-                        + "another attribute element");
+                    "the name \"%s\" has already been used in another attribute element",
+                    attribute.getName());
             }
         }
         attributes.add(attribute);
@@ -286,11 +287,10 @@ public class MacroDef extends AntlibDefinition  {
         }
         if (elements.get(element.getName()) != null) {
             throw new BuildException(
-                "the element " + element.getName()
-                + " has already been specified");
+                "the element %s has already been specified", element.getName());
         }
         if (hasImplicitElement
-            || (element.isImplicit() && elements.size() != 0)) {
+            || (element.isImplicit() && !elements.isEmpty())) {
             throw new BuildException(
                 "Only one element allowed when using implicit elements");
         }
@@ -301,6 +301,7 @@ public class MacroDef extends AntlibDefinition  {
     /**
      * Create a new ant type based on the embedded tasks and types.
      */
+    @Override
     public void execute() {
         if (nestedSequential == null) {
             throw new BuildException("Missing sequential element");
@@ -322,7 +323,6 @@ public class MacroDef extends AntlibDefinition  {
         log("creating macro  " + name, Project.MSG_VERBOSE);
     }
 
-
     /**
      * An attribute for the MacroDef task.
      *
@@ -340,8 +340,8 @@ public class MacroDef extends AntlibDefinition  {
          */
         public void setName(String name) {
             if (!isValidName(name)) {
-                throw new BuildException(
-                    "Illegal name [" + name + "] for attribute");
+                throw new BuildException("Illegal name [%s] for attribute",
+                    name);
             }
             this.name = name.toLowerCase(Locale.ENGLISH);
         }
@@ -412,6 +412,7 @@ public class MacroDef extends AntlibDefinition  {
          * @param obj an <code>Object</code> value
          * @return a <code>boolean</code> value
          */
+        @Override
         public boolean equals(Object obj) {
             if (obj == null) {
                 return false;
@@ -440,8 +441,9 @@ public class MacroDef extends AntlibDefinition  {
         /**
          * @return a hash code value for this object.
          */
+        @Override
         public int hashCode() {
-            return objectHashCode(defaultValue) + objectHashCode(name);
+            return Objects.hashCode(defaultValue) + Objects.hashCode(name);
         }
     }
 
@@ -463,8 +465,8 @@ public class MacroDef extends AntlibDefinition  {
          */
         public void setName(String name) {
             if (!isValidName(name)) {
-                throw new BuildException(
-                    "Illegal name [" + name + "] for attribute");
+                throw new BuildException("Illegal name [%s] for element",
+                    name);
             }
             this.name = name.toLowerCase(Locale.ENGLISH);
         }
@@ -544,6 +546,7 @@ public class MacroDef extends AntlibDefinition  {
          * @param obj an <code>Object</code> value
          * @return a <code>boolean</code> value
          */
+        @Override
         public boolean equals(Object obj) {
             if (obj == null) {
                 return false;
@@ -552,24 +555,21 @@ public class MacroDef extends AntlibDefinition  {
                 return false;
             }
             Text other = (Text) obj;
-            return safeCompare(name, other.name)
+            return Objects.equals(name, other.name)
                 && optional == other.optional
                 && trim == other.trim
-                && safeCompare(defaultString, other.defaultString);
+                && Objects.equals(defaultString, other.defaultString);
         }
 
         /**
          * @return a hash code value for this object.
          */
+        @Override
         public int hashCode() {
-            return objectHashCode(name);
+            return Objects.hashCode(name);
         }
     }
 
-    private static boolean safeCompare(Object a, Object b) {
-        return a == null ? b == null : a.equals(b);
-    }
-
     /**
      * A nested element for the MacroDef task.
      */
@@ -587,8 +587,8 @@ public class MacroDef extends AntlibDefinition  {
          */
         public void setName(String name) {
             if (!isValidName(name)) {
-                throw new BuildException(
-                    "Illegal name [" + name + "] for macro element");
+                throw new BuildException("Illegal name [%s] for macro element",
+                    name);
             }
             this.name = name.toLowerCase(Locale.ENGLISH);
         }
@@ -668,6 +668,7 @@ public class MacroDef extends AntlibDefinition  {
          * @param obj an <code>Object</code> value
          * @return a <code>boolean</code> value
          */
+        @Override
         public boolean equals(Object obj) {
             if (obj == this) {
               return true;
@@ -685,8 +686,9 @@ public class MacroDef extends AntlibDefinition  {
         /**
          * @return a hash code value for this object.
          */
+        @Override
         public int hashCode() {
-            return objectHashCode(name)
+            return Objects.hashCode(name)
                 + (optional ? 1 : 0) + (implicit ? 1 : 0);
         }
 
@@ -729,21 +731,17 @@ public class MacroDef extends AntlibDefinition  {
             if (other.text != null) {
                 return false;
             }
-        } else {
-            if (!text.equals(other.text)) {
-                return false;
-            }
+        } else if (!text.equals(other.text)) {
+            return false;
         }
-        if (getURI() == null || getURI().equals("")
+        if (getURI() == null || "".equals(getURI())
             || getURI().equals(ProjectHelper.ANT_CORE_URI)) {
-            if (!(other.getURI() == null || other.getURI().equals("")
+            if (!(other.getURI() == null || "".equals(other.getURI())
                   || other.getURI().equals(ProjectHelper.ANT_CORE_URI))) {
                 return false;
             }
-        } else {
-            if (!getURI().equals(other.getURI())) {
-                return false;
-            }
+        } else if (!getURI().equals(other.getURI())) {
+            return false;
         }
 
         if (!nestedSequential.similar(other.nestedSequential)) {
@@ -801,6 +799,7 @@ public class MacroDef extends AntlibDefinition  {
          * @param project the current project
          * @return the created object
          */
+        @Override
         public Object create(Project project) {
             Object o = super.create(project);
             if (o == null) {
@@ -817,6 +816,7 @@ public class MacroDef extends AntlibDefinition  {
          * @param project the current project
          * @return true if the definitions are the same
          */
+        @Override
         public boolean sameDefinition(AntTypeDefinition other, Project project) {
             if (!super.sameDefinition(other, project)) {
                 return false;
@@ -832,6 +832,7 @@ public class MacroDef extends AntlibDefinition  {
          * @param project the current project
          * @return true if the definitions are the same
          */
+        @Override
         public boolean similarDefinition(
             AntTypeDefinition other, Project project) {
             if (!super.similarDefinition(other, project)) {
@@ -842,12 +843,4 @@ public class MacroDef extends AntlibDefinition  {
         }
     }
 
-    private static int objectHashCode(Object o) {
-        if (o == null) {
-            return 0;
-        } else {
-            return o.hashCode();
-        }
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java b/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java
index 9ffa9b2..12249e6 100644
--- a/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java
+++ b/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java
@@ -23,11 +23,9 @@ import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Hashtable;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Set;
 
 import org.apache.tools.ant.BuildException;
@@ -50,13 +48,13 @@ import org.apache.tools.ant.taskdefs.MacroDef.Attribute;
  */
 public class MacroInstance extends Task implements DynamicAttribute, TaskContainer {
     private MacroDef macroDef;
-    private Map<String, String>      map = new HashMap<String, String>();
-    private Map<String, MacroDef.TemplateElement>      nsElements = null;
-    private Map<String, UnknownElement>      presentElements;
-    private Hashtable<String, String> localAttributes;
-    private String    text = null;
-    private String    implicitTag =     null;
-    private List<Task>      unknownElements = new ArrayList<Task>();
+    private Map<String, String> map = new HashMap<>();
+    private Map<String, MacroDef.TemplateElement> nsElements = null;
+    private Map<String, UnknownElement> presentElements;
+    private Map<String, String> localAttributes;
+    private String text = null;
+    private String implicitTag = null;
+    private List<Task> unknownElements = new ArrayList<>();
 
     /**
      * Called from MacroDef.MyAntTypeDefinition#create()
@@ -80,6 +78,7 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
      * @param name the name of the attribute
      * @param value the value of the attribute
      */
+    @Override
     public void setDynamicAttribute(String name, String value) {
         map.put(name.toLowerCase(Locale.ENGLISH), value);
     }
@@ -91,22 +90,22 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
      * @deprecated since 1.6.x.
      * @throws BuildException always
      */
+    @Deprecated
     public Object createDynamicElement(String name) throws BuildException {
         throw new BuildException("Not implemented any more");
     }
 
     private Map<String, MacroDef.TemplateElement> getNsElements() {
         if (nsElements == null) {
-            nsElements = new HashMap<String, MacroDef.TemplateElement>();
-            for (Entry<String, MacroDef.TemplateElement> entry : macroDef.getElements().entrySet()) {
-            nsElements.put((String) entry.getKey(),
-                           entry.getValue());
-            MacroDef.TemplateElement te = (MacroDef.TemplateElement)
-                entry.getValue();
-            if (te.isImplicit()) {
-                implicitTag = te.getName();
+            nsElements = new HashMap<>();
+            for (Map.Entry<String, MacroDef.TemplateElement> entry : macroDef
+                .getElements().entrySet()) {
+                nsElements.put(entry.getKey(), entry.getValue());
+                MacroDef.TemplateElement te = entry.getValue();
+                if (te.isImplicit()) {
+                    implicitTag = te.getName();
+                }
             }
-         }
         }
         return nsElements;
     }
@@ -116,6 +115,7 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
      *
      * @param nestedTask a nested element.
      */
+    @Override
     public void addTask(Task nestedTask) {
         unknownElements.add(nestedTask);
     }
@@ -124,15 +124,15 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
         if (implicitTag != null) {
             return;
         }
-        for (Iterator<Task> i = unknownElements.iterator(); i.hasNext();) {
-            UnknownElement ue = (UnknownElement) i.next();
+        for (Task task : unknownElements) {
+            UnknownElement ue = (UnknownElement) task;
             String name = ProjectHelper.extractNameFromComponentName(
                 ue.getTag()).toLowerCase(Locale.ENGLISH);
             if (getNsElements().get(name) == null) {
-                throw new BuildException("unsupported element " + name);
+                throw new BuildException("unsupported element %s", name);
             }
             if (presentElements.get(name) != null) {
-                throw new BuildException("Element " + name + " already present");
+                throw new BuildException("Element %s already present", name);
             }
             presentElements.put(name, ue);
         }
@@ -142,13 +142,14 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
      * Embedded element in macro instance
      */
     public static class Element implements TaskContainer {
-        private List<Task> unknownElements = new ArrayList<Task>();
+        private List<Task> unknownElements = new ArrayList<>();
 
         /**
          * Add an unknown element (to be snipped into the macroDef instance)
          *
          * @param nestedTask an unknown element
          */
+        @Override
         public void addTask(Task nestedTask) {
             unknownElements.add(nestedTask);
         }
@@ -169,8 +170,8 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
         if (s == null) {
             return null;
         }
-        StringBuffer ret = new StringBuffer();
-        StringBuffer macroName = null;
+        StringBuilder ret = new StringBuilder();
+        StringBuilder macroName = null;
 
         int state = STATE_NORMAL;
         for (int i = 0; i < s.length(); ++i) {
@@ -186,7 +187,7 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
                 case STATE_EXPECT_BRACKET:
                     if (ch == '{') {
                         state = STATE_EXPECT_NAME;
-                        macroName = new StringBuffer();
+                        macroName = new StringBuilder();
                     } else if (ch == '@') {
                         state = STATE_NORMAL;
                         ret.append('@');
@@ -203,7 +204,7 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
                     if (ch == '}') {
                         state = STATE_NORMAL;
                         String name = macroName.toString().toLowerCase(Locale.ENGLISH); //NOSONAR
-                        String value = (String) macroMapping.get(name);
+                        String value = macroMapping.get(name);
                         if (value == null) {
                             ret.append("@{");
                             ret.append(name);
@@ -292,40 +293,36 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
                 rc.addChild(child.getWrapper());
                 ret.addChild(child);
             } else if (templateElement.isImplicit()) {
-                if (unknownElements.size() == 0 && !templateElement.isOptional()) {
+                if (unknownElements.isEmpty() && !templateElement.isOptional()) {
                     throw new BuildException(
-                        "Missing nested elements for implicit element "
-                        + templateElement.getName());
+                        "Missing nested elements for implicit element %s",
+                        templateElement.getName());
                 }
-                for (Iterator<Task> i = unknownElements.iterator();
-                     i.hasNext();) {
-                    UnknownElement child
-                        = copy((UnknownElement) i.next(), true);
+                for (Task task : unknownElements) {
+                    UnknownElement child = copy((UnknownElement) task, true);
                     rc.addChild(child.getWrapper());
                     ret.addChild(child);
                 }
             } else {
                 UnknownElement presentElement =
-                    (UnknownElement) presentElements.get(tag);
+                    presentElements.get(tag);
                 if (presentElement == null) {
                     if (!templateElement.isOptional()) {
                         throw new BuildException(
-                            "Required nested element "
-                            + templateElement.getName() + " missing");
+                            "Required nested element %s missing",
+                            templateElement.getName());
                     }
                     continue;
                 }
                 String presentText =
                     presentElement.getWrapper().getText().toString();
-                if (!"".equals(presentText)) {
+                if (!presentText.isEmpty()) {
                     rc.addText(macroSubs(presentText, localAttributes));
                 }
                 List<UnknownElement> list = presentElement.getChildren();
                 if (list != null) {
-                    for (Iterator<UnknownElement> i = list.iterator();
-                         i.hasNext();) {
-                        UnknownElement child
-                            = copy(i.next(), true);
+                    for (UnknownElement unknownElement2 : list) {
+                        UnknownElement child = copy(unknownElement2, true);
                         rc.addChild(child.getWrapper());
                         ret.addChild(child);
                     }
@@ -341,14 +338,15 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
      * and calls perform on the unknown element.
      *
      */
+    @Override
     public void execute() {
-        presentElements = new HashMap<String, UnknownElement>();
+        presentElements = new HashMap<>();
         getNsElements();
         processTasks();
-        localAttributes = new Hashtable<String, String>();
-        Set<String> copyKeys = new HashSet<String>(map.keySet());
+        localAttributes = new Hashtable<>();
+        Set<String> copyKeys = new HashSet<>(map.keySet());
         for (Attribute attribute : macroDef.getAttributes()) {
-            String value = (String) map.get(attribute.getName());
+            String value = map.get(attribute.getName());
             if (value == null && "description".equals(attribute.getName())) {
                 value = getDescription();
             }
@@ -357,21 +355,19 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
                 value = macroSubs(value, localAttributes);
             }
             if (value == null) {
-                throw new BuildException(
-                    "required attribute " + attribute.getName() + " not set");
+                throw new BuildException("required attribute %s not set",
+                    attribute.getName());
             }
             localAttributes.put(attribute.getName(), value);
             copyKeys.remove(attribute.getName());
         }
-        if (copyKeys.contains("id")) {
-            copyKeys.remove("id");
-        }
+        copyKeys.remove("id");
+
         if (macroDef.getText() != null) {
             if (text == null) {
                 String defaultText =  macroDef.getText().getDefault();
                 if (!macroDef.getText().getOptional() && defaultText == null) {
-                    throw new BuildException(
-                        "required text missing");
+                    throw new BuildException("required text missing");
                 }
                 text = defaultText == null ? "" : defaultText;
             }
@@ -379,24 +375,20 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
                 text = text.trim();
             }
             localAttributes.put(macroDef.getText().getName(), text);
-        } else {
-            if (text != null && !text.trim().equals("")) {
-                throw new BuildException(
-                    "The \"" + getTaskName() + "\" macro does not support"
-                    + " nested text data.");
-            }
-        }
-        if (copyKeys.size() != 0) {
+        } else if (!(text == null || text.trim().isEmpty())) {
             throw new BuildException(
-                "Unknown attribute" + (copyKeys.size() > 1 ? "s " : " ")
-                + copyKeys);
+                "The \"%s\" macro does not support nested text data.",
+                getTaskName());
+        }
+        if (!copyKeys.isEmpty()) {
+            throw new BuildException("Unknown attribute"
+                + (copyKeys.size() > 1 ? "s " : " ") + copyKeys);
         }
 
         // need to set the project on unknown element
         UnknownElement c = copy(macroDef.getNestedTask(), false);
         c.init();
-        LocalProperties localProperties
-            = LocalProperties.get(getProject());
+        LocalProperties localProperties = LocalProperties.get(getProject());
         localProperties.enterScope();
         try {
             c.perform();

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/MakeUrl.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/MakeUrl.java b/src/main/org/apache/tools/ant/taskdefs/MakeUrl.java
index e23c025..09e252b 100644
--- a/src/main/org/apache/tools/ant/taskdefs/MakeUrl.java
+++ b/src/main/org/apache/tools/ant/taskdefs/MakeUrl.java
@@ -21,7 +21,6 @@ package org.apache.tools.ant.taskdefs;
 import java.io.File;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.ListIterator;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.DirectoryScanner;
@@ -42,6 +41,13 @@ import org.apache.tools.ant.util.FileUtils;
  */
 
 public class MakeUrl extends Task {
+    // error message strings
+    /** Missing file */
+    public static final String ERROR_MISSING_FILE = "A source file is missing: ";
+    /** No property defined */
+    public static final String ERROR_NO_PROPERTY = "No property defined";
+    /** No files defined */
+    public static final String ERROR_NO_FILES = "No files defined";
 
     /**
      * name of the property to set
@@ -61,26 +67,18 @@ public class MakeUrl extends Task {
     /**
      * filesets of nested files to add to this url
      */
-    private List<FileSet> filesets = new LinkedList<FileSet>();
+    private List<FileSet> filesets = new LinkedList<>();
 
     /**
      * paths to add
      */
-    private List<Path> paths = new LinkedList<Path>();
+    private List<Path> paths = new LinkedList<>();
 
     /**
      * validation flag
      */
     private boolean validate = true;
 
-    // error message strings
-    /** Missing file */
-    public static final String ERROR_MISSING_FILE = "A source file is missing: ";
-    /** No property defined */
-    public static final String ERROR_NO_PROPERTY = "No property defined";
-    /** No files defined */
-    public static final String ERROR_NO_FILES = "No files defined";
-
     /**
      * set the name of a property to fill with the URL
      *
@@ -149,13 +147,10 @@ public class MakeUrl extends Task {
         }
         int count = 0;
         StringBuilder urls = new StringBuilder();
-        ListIterator<FileSet> list = filesets.listIterator();
-        while (list.hasNext()) {
-            FileSet set = list.next();
-            DirectoryScanner scanner = set.getDirectoryScanner(getProject());
-            String[] files = scanner.getIncludedFiles();
-            for (int i = 0; i < files.length; i++) {
-                File f = new File(scanner.getBasedir(), files[i]);
+        for (FileSet fs : filesets) {
+            DirectoryScanner scanner = fs.getDirectoryScanner(getProject());
+            for (String file : scanner.getIncludedFiles()) {
+                File f = new File(scanner.getBasedir(), file);
                 validateFile(f);
                 String asUrl = toURL(f);
                 urls.append(asUrl);
@@ -181,9 +176,8 @@ public class MakeUrl extends Task {
         if (count > 0) {
             urls.delete(urls.length() - separator.length(), urls.length());
             return new String(urls);
-        } else {
-            return "";
         }
+        return "";
     }
 
 
@@ -198,12 +192,9 @@ public class MakeUrl extends Task {
         }
         int count = 0;
         StringBuilder urls = new StringBuilder();
-        ListIterator<Path> list = paths.listIterator();
-        while (list.hasNext()) {
-            Path path = list.next();
-            String[] elements = path.list();
-            for (int i = 0; i < elements.length; i++) {
-                File f = new File(elements[i]);
+        for (Path path : paths) {
+            for (String element : path.list()) {
+                File f = new File(element);
                 validateFile(f);
                 String asUrl = toURL(f);
                 urls.append(asUrl);
@@ -224,7 +215,7 @@ public class MakeUrl extends Task {
      */
     private void validateFile(File fileToCheck) {
         if (validate && !fileToCheck.exists()) {
-            throw new BuildException(ERROR_MISSING_FILE + fileToCheck.toString());
+            throw new BuildException(ERROR_MISSING_FILE + fileToCheck);
         }
     }
 
@@ -243,23 +234,23 @@ public class MakeUrl extends Task {
         }
         String url;
         String filesetURL = filesetsToURL();
-        if (file != null) {
+        if (file == null) {
+            url = filesetURL;
+        } else {
             validateFile(file);
             url = toURL(file);
             //and add any files if also defined
-            if (filesetURL.length() > 0) {
+            if (!filesetURL.isEmpty()) {
                 url = url + separator + filesetURL;
             }
-        } else {
-            url = filesetURL;
         }
         //add path URLs
         String pathURL = pathsToURL();
-        if (pathURL.length() > 0) {
-            if (url.length() > 0) {
-                url = url + separator + pathURL;
-            } else {
+        if (!pathURL.isEmpty()) {
+            if (url.isEmpty()) {
                 url = pathURL;
+            } else {
+                url = url + separator + pathURL;
             }
         }
         log("Setting " + property + " to URL " + url, Project.MSG_VERBOSE);
@@ -287,12 +278,9 @@ public class MakeUrl extends Task {
      * @return the file converted to a URL
      */
     private String toURL(File fileToConvert) {
-        String url;
         //create the URL
         //ant equivalent of  fileToConvert.toURI().toURL().toExternalForm();
-        url = FileUtils.getFileUtils().toURI(fileToConvert.getAbsolutePath());
-
-        return url;
+        return FileUtils.getFileUtils().toURI(fileToConvert.getAbsolutePath());
     }
 
 }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/Manifest.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Manifest.java b/src/main/org/apache/tools/ant/taskdefs/Manifest.java
index 0d7c05e..f47f461 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Manifest.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Manifest.java
@@ -26,11 +26,15 @@ import java.io.PrintWriter;
 import java.io.Reader;
 import java.io.StringWriter;
 import java.io.UnsupportedEncodingException;
+import java.util.Collections;
 import java.util.Enumeration;
 import java.util.LinkedHashMap;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Vector;
+import java.util.stream.Collectors;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.util.CollectionUtils;
@@ -168,14 +172,7 @@ public class Manifest {
          */
         @Override
         public int hashCode() {
-            int hashCode = 0;
-
-            if (name != null) {
-                hashCode += getKey().hashCode();
-            }
-
-            hashCode += values.hashCode();
-            return hashCode;
+            return Objects.hash(getKey(), values);
         }
 
         /**
@@ -216,8 +213,7 @@ public class Manifest {
             int index = line.indexOf(": ");
             if (index == -1) {
                 throw new ManifestException("Manifest line \"" + line
-                    + "\" is not valid as it does not "
-                    + "contain a name and a value separated by ': ' ");
+                    + "\" is not valid as it does not contain a name and a value separated by ': '");
             }
             name = line.substring(0, index);
             setValue(line.substring(index + 2));
@@ -273,16 +269,8 @@ public class Manifest {
          * @return the attribute's value.
          */
         public String getValue() {
-            if (values.size() == 0) {
-                return null;
-            }
-
-            String fullValue = "";
-            for (Enumeration<String> e = getValues(); e.hasMoreElements();) {
-                String value = e.nextElement();
-                fullValue += value + " ";
-            }
-            return fullValue.trim();
+            return values.isEmpty() ? null
+                : values.stream().collect(Collectors.joining(" "));
         }
 
         /**
@@ -343,12 +331,12 @@ public class Manifest {
          */
         public void write(PrintWriter writer, boolean flatten)
             throws IOException {
-            if (!flatten) {
-            for (Enumeration<String> e = getValues(); e.hasMoreElements();) {
-                writeValue(writer, e.nextElement());
-            }
-            } else {
+            if (flatten) {
                 writeValue(writer, getValue());
+            } else {
+                for (String value : values) {
+                    writeValue(writer, value);
+                }
             }
         }
 
@@ -362,7 +350,7 @@ public class Manifest {
          */
         private void writeValue(PrintWriter writer, String value)
              throws IOException {
-            String line = null;
+            String line;
             int nameLength = name.getBytes(JAR_ENCODING).length;
             if (nameLength > MAX_NAME_VALUE_LENGTH) {
                 if (nameLength > MAX_NAME_LENGTH) {
@@ -404,7 +392,7 @@ public class Manifest {
      */
     public static class Section {
         /** Warnings for this section */
-        private Vector<String> warnings = new Vector<String>();
+        private List<String> warnings = new Vector<>();
 
         /**
          * The section's name if any. The main section in a
@@ -413,7 +401,7 @@ public class Manifest {
         private String name = null;
 
         /** The section's attributes.*/
-        private Map<String, Attribute> attributes = new LinkedHashMap<String, Attribute>();
+        private Map<String, Attribute> attributes = new LinkedHashMap<>();
 
         /**
          * The name of the section; optional -default is the main section.
@@ -450,21 +438,20 @@ public class Manifest {
             Attribute attribute = null;
             while (true) {
                 String line = reader.readLine();
-                if (line == null || line.length() == 0) {
+                if (line == null || line.isEmpty()) {
                     return null;
                 }
                 if (line.charAt(0) == ' ') {
                     // continuation line
                     if (attribute == null) {
-                        if (name != null) {
-                            // a continuation on the first line is a
-                            // continuation of the name - concatenate this
-                            // line and the name
-                            name += line.substring(1);
-                        } else {
+                        if (name == null) {
                             throw new ManifestException("Can't start an "
                                 + "attribute with a continuation line " + line);
                         }
+                        // a continuation on the first line is a
+                        // continuation of the name - concatenate this
+                        // line and the name
+                        name += line.substring(1);
                     } else {
                         attribute.addContinuation(line);
                     }
@@ -507,8 +494,8 @@ public class Manifest {
                     && !(name.toLowerCase(Locale.ENGLISH)
                          .equals(section.getName().toLowerCase(Locale.ENGLISH))))
                 ) {
-                throw new ManifestException("Unable to merge sections "
-                    + "with different names");
+                throw new ManifestException(
+                    "Unable to merge sections with different names");
             }
 
             Enumeration<String> e = section.getAttributeKeys();
@@ -516,7 +503,7 @@ public class Manifest {
             while (e.hasMoreElements()) {
                 String attributeName = e.nextElement();
                 Attribute attribute = section.getAttribute(attributeName);
-                if (attributeName.equalsIgnoreCase(ATTRIBUTE_CLASSPATH)) {
+                if (ATTRIBUTE_CLASSPATH.equalsIgnoreCase(attributeName)) {
                     if (classpathAttribute == null) {
                         classpathAttribute = new Attribute();
                         classpathAttribute.setName(ATTRIBUTE_CLASSPATH);
@@ -547,10 +534,7 @@ public class Manifest {
             }
 
             // add in the warnings
-            Enumeration<String> warnEnum = section.warnings.elements();
-            while (warnEnum.hasMoreElements()) {
-                warnings.addElement(warnEnum.nextElement());
-            }
+            warnings.addAll(section.warnings);
         }
 
         /**
@@ -650,9 +634,8 @@ public class Manifest {
              throws ManifestException {
             String check = addAttributeAndCheck(attribute);
             if (check != null) {
-                throw new BuildException("Specify the section name using "
-                    + "the \"name\" attribute of the <section> element rather "
-                    + "than using a \"Name\" manifest attribute");
+                throw new BuildException(
+                    "Specify the section name using the \"name\" attribute of the <section> element rather than using a \"Name\" manifest attribute");
             }
         }
 
@@ -674,15 +657,14 @@ public class Manifest {
             }
             String attributeKey = attribute.getKey();
             if (attributeKey.equals(ATTRIBUTE_NAME_LC)) {
-                warnings.addElement("\"" + ATTRIBUTE_NAME + "\" attributes "
-                    + "should not occur in the main section and must be the "
-                    + "first element in all other sections: \""
+                warnings.add("\"" + ATTRIBUTE_NAME
+                    + "\" attributes should not occur in the main section and must be the first element in all other sections: \""
                     + attribute.getName() + ": " + attribute.getValue() + "\"");
                 return attribute.getValue();
             }
 
             if (attributeKey.startsWith(ATTRIBUTE_FROM_LC)) {
-                warnings.addElement(ERROR_FROM_FORBIDDEN
+                warnings.add(ERROR_FROM_FORBIDDEN
                     + attribute.getName() + ": " + attribute.getValue() + "\"");
             } else {
                 // classpath attributes go into a vector
@@ -693,10 +675,8 @@ public class Manifest {
                     if (classpathAttribute == null) {
                         storeAttribute(attribute);
                     } else {
-                        warnings.addElement("Multiple Class-Path attributes "
-                            + "are supported but violate the Jar "
-                            + "specification and may not be correctly "
-                            + "processed in all environments");
+                        warnings.add(
+                            "Multiple Class-Path attributes are supported but violate the Jar specification and may not be correctly processed in all environments");
                         Enumeration<String> e = attribute.getValues();
                         while (e.hasMoreElements()) {
                             String value = e.nextElement();
@@ -705,8 +685,8 @@ public class Manifest {
                     }
                 } else if (attributes.containsKey(attributeKey)) {
                     throw new ManifestException("The attribute \""
-                        + attribute.getName() + "\" may not occur more "
-                        + "than once in the same section");
+                        + attribute.getName()
+                        + "\" may not occur more than once in the same section");
                 } else {
                     storeAttribute(attribute);
                 }
@@ -721,7 +701,7 @@ public class Manifest {
          * @since Ant 1.5.2
          */
         @Override
-        public Object clone() {
+        public Section clone() {
             Section cloned = new Section();
             cloned.setName(name);
             Enumeration<String> e = getAttributeKeys();
@@ -753,7 +733,7 @@ public class Manifest {
          * @return an Enumeration of warning strings.
          */
         public Enumeration<String> getWarnings() {
-            return warnings.elements();
+            return Collections.enumeration(warnings);
         }
 
         /**
@@ -794,7 +774,7 @@ public class Manifest {
     private Section mainSection = new Section();
 
     /** The named sections of this manifest */
-    private Map<String, Section> sections = new LinkedHashMap<String, Section>();
+    private Map<String, Section> sections = new LinkedHashMap<>();
 
     /**
      * Construct a manifest from Ant's default manifest file.
@@ -804,14 +784,12 @@ public class Manifest {
      *            default manifest
      */
     public static Manifest getDefaultManifest() throws BuildException {
-        InputStream in = null;
         InputStreamReader insr = null;
-        try {
-            String defManifest = "/org/apache/tools/ant/defaultManifest.mf";
-            in = Manifest.class.getResourceAsStream(defManifest);
+        String defManifest = "/org/apache/tools/ant/defaultManifest.mf";
+        try (InputStream in = Manifest.class.getResourceAsStream(defManifest)) {
             if (in == null) {
-                throw new BuildException("Could not find default manifest: "
-                    + defManifest);
+                throw new BuildException("Could not find default manifest: %s",
+                    defManifest);
             }
             try {
                 insr = new InputStreamReader(in, "UTF-8");
@@ -835,7 +813,6 @@ public class Manifest {
             throw new BuildException("Unable to read default manifest", e);
         } finally {
             FileUtils.close(insr);
-            FileUtils.close(in);
         }
     }
 
@@ -864,20 +841,20 @@ public class Manifest {
             mainSection.removeAttribute(ATTRIBUTE_MANIFEST_VERSION);
         }
 
-        String line = null;
+        String line;
         while ((line = reader.readLine()) != null) {
-            if (line.length() == 0) {
+            if (line.isEmpty()) {
                 continue;
             }
 
             Section section = new Section();
             if (nextSectionName == null) {
                 Attribute sectionName = new Attribute(line);
-                if (!sectionName.getName().equalsIgnoreCase(ATTRIBUTE_NAME)) {
-                    throw new ManifestException("Manifest sections should "
-                        + "start with a \"" + ATTRIBUTE_NAME
-                        + "\" attribute and not \""
-                        + sectionName.getName() + "\"");
+                if (!ATTRIBUTE_NAME.equalsIgnoreCase(sectionName.getName())) {
+                    throw new ManifestException(
+                        "Manifest sections should start with a \""
+                            + ATTRIBUTE_NAME + "\" attribute and not \""
+                            + sectionName.getName() + "\"");
                 }
                 nextSectionName = sectionName.getValue();
             } else {
@@ -922,7 +899,7 @@ public class Manifest {
         if (attribute.getKey() == null || attribute.getValue() == null) {
             throw new BuildException("Attributes must have name and value");
         }
-        if (attribute.getKey().equals(ATTRIBUTE_MANIFEST_VERSION_LC)) {
+        if (ATTRIBUTE_MANIFEST_VERSION_LC.equals(attribute.getKey())) {
             manifestVersion = attribute.getValue();
         } else {
             mainSection.addConfiguredAttribute(attribute);
@@ -977,7 +954,7 @@ public class Manifest {
          throws ManifestException {
         if (other != null) {
              if (overwriteMain) {
-                 mainSection = (Section) other.mainSection.clone();
+                 mainSection = other.mainSection.clone();
              } else {
                  mainSection.merge(other.mainSection, mergeClassPaths);
              }
@@ -994,7 +971,7 @@ public class Manifest {
                     = other.sections.get(sectionName);
                  if (ourSection == null) {
                      if (otherSection != null) {
-                         addConfiguredSection((Section) otherSection.clone());
+                         addConfiguredSection(otherSection.clone());
                      }
                  } else {
                      ourSection.merge(otherSection, mergeClassPaths);
@@ -1077,7 +1054,7 @@ public class Manifest {
      * @return an enumeration of warning strings
      */
     public Enumeration<String> getWarnings() {
-        Vector<String> warnings = new Vector<String>();
+        Vector<String> warnings = new Vector<>();
 
         Enumeration<String> warnEnum = mainSection.getWarnings();
         while (warnEnum.hasMoreElements()) {

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java b/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java
index f605bd5..96cc050 100644
--- a/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java
+++ b/src/main/org/apache/tools/ant/taskdefs/ManifestClassPath.java
@@ -18,7 +18,6 @@
 package org.apache.tools.ant.taskdefs;
 
 import java.io.File;
-import java.io.UnsupportedEncodingException;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Task;
@@ -52,6 +51,7 @@ public class ManifestClassPath extends Task {
      * separated list of files and directories relative to the jar
      * file's parent directory.
      */
+    @Override
     public void execute() {
         if (name == null) {
             throw new BuildException("Missing 'property' attribute!");
@@ -60,13 +60,13 @@ public class ManifestClassPath extends Task {
             throw new BuildException("Missing 'jarfile' attribute!");
         }
         if (getProject().getProperty(name) != null) {
-            throw new BuildException("Property '" + name + "' already set!");
+            throw new BuildException("Property '%s' already set!", name);
         }
         if (path == null) {
             throw new BuildException("Missing nested <classpath>!");
         }
 
-        StringBuffer tooLongSb = new StringBuffer();
+        StringBuilder tooLongSb = new StringBuilder();
         for (int i = 0; i < maxParentLevels + 1; i++) {
             tooLongSb.append("../");
         }
@@ -77,10 +77,10 @@ public class ManifestClassPath extends Task {
         dir = fileUtils.normalize(dir.getAbsolutePath());
 
         String[] elements = path.list();
-        StringBuffer buffer = new StringBuffer();
-        for (int i = 0; i < elements.length; ++i) {
+        StringBuilder buffer = new StringBuilder();
+        for (String element : elements) {
             // Normalize the current file
-            File pathEntry = new File(elements[i]);
+            File pathEntry = new File(element);
             String fullPath = pathEntry.getAbsolutePath();
             pathEntry = fileUtils.normalize(fullPath);
 
@@ -108,8 +108,8 @@ public class ManifestClassPath extends Task {
             // No match, so bail out!
             if (relPath.equals(canonicalPath)
                 || relPath.startsWith(tooLongPrefix)) {
-                throw new BuildException("No suitable relative path from "
-                                         + dir + " to " + fullPath);
+                throw new BuildException(
+                    "No suitable relative path from %s to %s", dir, fullPath);
             }
 
             if (pathEntry.isDirectory() && !relPath.endsWith("/")) {
@@ -146,7 +146,7 @@ public class ManifestClassPath extends Task {
     public void setJarFile(File jarfile) {
         File parent = jarfile.getParentFile();
         if (!parent.isDirectory()) {
-            throw new BuildException("Jar's directory not found: " + parent);
+            throw new BuildException("Jar's directory not found: %s", parent);
         }
         this.dir = parent;
     }
@@ -159,8 +159,8 @@ public class ManifestClassPath extends Task {
      */
     public void setMaxParentLevels(int levels) {
         if (levels < 0) {
-            throw new BuildException("maxParentLevels must not be a negative"
-                                     + " number");
+            throw new BuildException(
+                "maxParentLevels must not be a negative number");
         }
         this.maxParentLevels = levels;
     }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/ManifestTask.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/ManifestTask.java b/src/main/org/apache/tools/ant/taskdefs/ManifestTask.java
index 8b459be..85dfd8a 100644
--- a/src/main/org/apache/tools/ant/taskdefs/ManifestTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/ManifestTask.java
@@ -20,11 +20,10 @@ package org.apache.tools.ant.taskdefs;
 
 import java.io.File;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
+import java.nio.charset.Charset;
 import java.nio.file.Files;
 import java.util.Enumeration;
 
@@ -33,7 +32,6 @@ import org.apache.tools.ant.Project;
 import org.apache.tools.ant.Task;
 import org.apache.tools.ant.taskdefs.Manifest.Attribute;
 import org.apache.tools.ant.types.EnumeratedAttribute;
-import org.apache.tools.ant.util.FileUtils;
 
 /**
  * Creates a manifest file for inclusion in a JAR, Ant task wrapper
@@ -92,8 +90,9 @@ public class ManifestTask extends Task {
          *
          * @return a String array of the allowed values.
          */
+        @Override
         public String[] getValues() {
-            return new String[] {"update", "replace"};
+            return new String[] { "update", "replace" };
         }
     }
 
@@ -158,13 +157,15 @@ public class ManifestTask extends Task {
         char ch = name.charAt(0);
 
         if (ch == '-' || ch == '_') {
-            throw new BuildException("Manifest attribute names must not start with '" + ch + "'.");
+            throw new BuildException(
+                "Manifest attribute names must not start with '%c'.", ch);
         }
 
         for (int i = 0; i < name.length(); i++) {
             ch = name.charAt(i);
             if (VALID_ATTRIBUTE_CHARS.indexOf(ch) < 0) {
-                throw new BuildException("Manifest attribute names must not contain '" + ch + "'");
+                throw new BuildException(
+                    "Manifest attribute names must not contain '%c'", ch);
             }
         }
     }
@@ -218,6 +219,7 @@ public class ManifestTask extends Task {
      *
      * @throws BuildException if the manifest cannot be written.
      */
+    @Override
     public void execute() throws BuildException {
         if (manifestFile == null) {
             throw new BuildException("the file attribute is required");
@@ -228,15 +230,9 @@ public class ManifestTask extends Task {
         BuildException error = null;
 
         if (manifestFile.exists()) {
-            InputStream fis = null;
-            InputStreamReader isr = null;
-            try {
-                fis = Files.newInputStream(manifestFile.toPath());
-                if (encoding == null) {
-                    isr = new InputStreamReader(fis, "UTF-8");
-                } else {
-                    isr = new InputStreamReader(fis, encoding);
-                }
+            Charset charset = Charset.forName(encoding == null ? "UTF-8" : encoding);
+            try (InputStreamReader isr = new InputStreamReader(
+                Files.newInputStream(manifestFile.toPath()), charset)) {
                 current = new Manifest(isr);
             } catch (ManifestException m) {
                 error = new BuildException("Existing manifest " + manifestFile
@@ -244,8 +240,6 @@ public class ManifestTask extends Task {
             } catch (IOException e) {
                 error = new BuildException("Failed to read " + manifestFile,
                                            e, getLocation());
-            } finally {
-                FileUtils.close(isr);
             }
         }
 
@@ -256,7 +250,7 @@ public class ManifestTask extends Task {
                     Project.MSG_WARN);
         }
         try {
-            if (mode.getValue().equals("update") && manifestFile.exists()) {
+            if ("update".equals(mode.getValue()) && manifestFile.exists()) {
                 if (current != null) {
                     toWrite.merge(current, false, mergeClassPaths);
                 } else if (error != null) {
@@ -275,11 +269,8 @@ public class ManifestTask extends Task {
             return;
         }
 
-        PrintWriter w = null;
-        try {
-            OutputStream fos = Files.newOutputStream(manifestFile.toPath());
-            OutputStreamWriter osw = new OutputStreamWriter(fos, Manifest.JAR_ENCODING);
-            w = new PrintWriter(osw);
+        try (PrintWriter w = new PrintWriter(new OutputStreamWriter(
+            Files.newOutputStream(manifestFile.toPath()), Manifest.JAR_ENCODING))) {
             toWrite.write(w, flattenClassPaths);
             if (w.checkError()) {
                 throw new IOException("Encountered an error writing manifest");
@@ -287,8 +278,6 @@ public class ManifestTask extends Task {
         } catch (IOException e) {
             throw new BuildException("Failed to write " + manifestFile,
                                      e, getLocation());
-        } finally {
-            FileUtils.close(w);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/MatchingTask.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/MatchingTask.java b/src/main/org/apache/tools/ant/taskdefs/MatchingTask.java
index 113ff5e..414a89a 100644
--- a/src/main/org/apache/tools/ant/taskdefs/MatchingTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/MatchingTask.java
@@ -62,6 +62,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
     // CheckStyle:VisibilityModifier ON
 
     /** {@inheritDoc}. */
+    @Override
     public void setProject(Project project) {
         super.setProject(project);
         fileset.setProject(project);
@@ -128,8 +129,8 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
     public void XsetItems(String itemString) {
         log("The items attribute is deprecated. "
             + "Please use the includes attribute.", Project.MSG_WARN);
-        if (itemString == null || itemString.equals("*")
-            || itemString.equals(".")) {
+        if (itemString == null || "*".equals(itemString)
+            || ".".equals(itemString)) {
             createInclude().setName("**");
         } else {
             StringTokenizer tok = new StringTokenizer(itemString, ", ");
@@ -161,7 +162,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
     public void XsetIgnore(String ignoreString) {
         log("The ignore attribute is deprecated."
             + "Please use the excludes attribute.", Project.MSG_WARN);
-        if (ignoreString != null && ignoreString.length() > 0) {
+        if (!(ignoreString == null || ignoreString.isEmpty())) {
             StringTokenizer tok = new StringTokenizer(ignoreString, ", ",
                                                       false);
             while (tok.hasMoreTokens()) {
@@ -237,6 +238,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      *
      * @return whether any selectors are in this container
      */
+    @Override
     public boolean hasSelectors() {
         return fileset.hasSelectors();
     }
@@ -246,6 +248,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      *
      * @return the number of selectors in this container
      */
+    @Override
     public int selectorCount() {
         return fileset.selectorCount();
     }
@@ -255,6 +258,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * @param p the current project
      * @return an array of selectors in this container
      */
+    @Override
     public FileSelector[] getSelectors(Project p) {
         return fileset.getSelectors(p);
     }
@@ -264,6 +268,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      *
      * @return an enumerator that goes through each of the selectors
      */
+    @Override
     public Enumeration<FileSelector> selectorElements() {
         return fileset.selectorElements();
     }
@@ -273,6 +278,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      *
      * @param selector the new selector to add
      */
+    @Override
     public void appendSelector(FileSelector selector) {
         fileset.appendSelector(selector);
     }
@@ -283,6 +289,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * add a "Select" selector entry on the selector list
      * @param selector the selector to add
      */
+    @Override
     public void addSelector(SelectSelector selector) {
         fileset.addSelector(selector);
     }
@@ -291,6 +298,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * add an "And" selector entry on the selector list
      * @param selector the selector to add
      */
+    @Override
     public void addAnd(AndSelector selector) {
         fileset.addAnd(selector);
     }
@@ -299,6 +307,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * add an "Or" selector entry on the selector list
      * @param selector the selector to add
      */
+    @Override
     public void addOr(OrSelector selector) {
         fileset.addOr(selector);
     }
@@ -307,6 +316,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * add a "Not" selector entry on the selector list
      * @param selector the selector to add
      */
+    @Override
     public void addNot(NotSelector selector) {
         fileset.addNot(selector);
     }
@@ -315,6 +325,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * add a "None" selector entry on the selector list
      * @param selector the selector to add
      */
+    @Override
     public void addNone(NoneSelector selector) {
         fileset.addNone(selector);
     }
@@ -323,6 +334,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * add a majority selector entry on the selector list
      * @param selector the selector to add
      */
+    @Override
     public void addMajority(MajoritySelector selector) {
         fileset.addMajority(selector);
     }
@@ -331,6 +343,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * add a selector date entry on the selector list
      * @param selector the selector to add
      */
+    @Override
     public void addDate(DateSelector selector) {
         fileset.addDate(selector);
     }
@@ -339,6 +352,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * add a selector size entry on the selector list
      * @param selector the selector to add
      */
+    @Override
     public void addSize(SizeSelector selector) {
         fileset.addSize(selector);
     }
@@ -347,6 +361,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * add a selector filename entry on the selector list
      * @param selector the selector to add
      */
+    @Override
     public void addFilename(FilenameSelector selector) {
         fileset.addFilename(selector);
     }
@@ -355,6 +370,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * add an extended selector entry on the selector list
      * @param selector the selector to add
      */
+    @Override
     public void addCustom(ExtendSelector selector) {
         fileset.addCustom(selector);
     }
@@ -363,6 +379,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * add a contains selector entry on the selector list
      * @param selector the selector to add
      */
+    @Override
     public void addContains(ContainsSelector selector) {
         fileset.addContains(selector);
     }
@@ -371,6 +388,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * add a present selector entry on the selector list
      * @param selector the selector to add
      */
+    @Override
     public void addPresent(PresentSelector selector) {
         fileset.addPresent(selector);
     }
@@ -379,6 +397,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * add a depth selector entry on the selector list
      * @param selector the selector to add
      */
+    @Override
     public void addDepth(DepthSelector selector) {
         fileset.addDepth(selector);
     }
@@ -387,6 +406,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * add a depends selector entry on the selector list
      * @param selector the selector to add
      */
+    @Override
     public void addDepend(DependSelector selector) {
         fileset.addDepend(selector);
     }
@@ -395,6 +415,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * add a regular expression selector entry on the selector list
      * @param selector the selector to add
      */
+    @Override
     public void addContainsRegexp(ContainsRegexpSelector selector) {
         fileset.addContainsRegexp(selector);
     }
@@ -404,6 +425,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * @param selector the selector to add
      * @since ant 1.6
      */
+    @Override
     public void addDifferent(DifferentSelector selector) {
         fileset.addDifferent(selector);
     }
@@ -413,6 +435,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * @param selector the selector to add
      * @since ant 1.6
      */
+    @Override
     public void addType(TypeSelector selector) {
         fileset.addType(selector);
     }
@@ -422,6 +445,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * @param selector the selector to add
      * @since ant 1.6
      */
+    @Override
     public void addModified(ModifiedSelector selector) {
         fileset.addModified(selector);
     }
@@ -431,6 +455,7 @@ public abstract class MatchingTask extends Task implements SelectorContainer {
      * @param selector the selector to add
      * @since Ant 1.6
      */
+    @Override
     public void add(FileSelector selector) {
         fileset.add(selector);
     }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/Mkdir.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Mkdir.java b/src/main/org/apache/tools/ant/taskdefs/Mkdir.java
index 71b6c94..8a672b6 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Mkdir.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Mkdir.java
@@ -46,29 +46,30 @@ public class Mkdir extends Task {
      * create the directory and all parents
      * @throws BuildException if dir is somehow invalid, or creation failed.
      */
+    @Override
     public void execute() throws BuildException {
         if (dir == null) {
             throw new BuildException("dir attribute is required", getLocation());
         }
 
         if (dir.isFile()) {
-            throw new BuildException("Unable to create directory as a file "
-                                     + "already exists with that name: "
-                                     + dir.getAbsolutePath());
+            throw new BuildException(
+                "Unable to create directory as a file already exists with that name: %s",
+                dir.getAbsolutePath());
         }
 
         if (!dir.exists()) {
             boolean result = mkdirs(dir);
             if (!result) {
                 if (dir.exists()) {
-                    log("A different process or task has already created "
-                        + "dir " + dir.getAbsolutePath(),
-                        Project.MSG_VERBOSE);
+                    log("A different process or task has already created dir "
+                        + dir.getAbsolutePath(), Project.MSG_VERBOSE);
                     return;
                 }
-                String msg = "Directory " + dir.getAbsolutePath()
-                    + " creation was not successful for an unknown reason";
-                throw new BuildException(msg, getLocation());
+                throw new BuildException(
+                    "Directory " + dir.getAbsolutePath()
+                        + " creation was not successful for an unknown reason",
+                    getLocation());
             }
             log("Created dir: " + dir.getAbsolutePath());
         } else {
@@ -111,4 +112,3 @@ public class Mkdir extends Task {
         return true;
     }
 }
-

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/Move.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Move.java b/src/main/org/apache/tools/ant/taskdefs/Move.java
index 7f5d968..47d40e0 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Move.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Move.java
@@ -19,14 +19,12 @@ package org.apache.tools.ant.taskdefs;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.Iterator;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.DirectoryScanner;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.taskdefs.condition.Os;
 import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.types.FilterSet;
 import org.apache.tools.ant.types.FilterSetCollection;
 
 /**
@@ -79,6 +77,7 @@ public class Move extends Copy {
     }
 
     /** {@inheritDoc}. */
+    @Override
     protected void validateAttributes() throws BuildException {
         if (file != null && file.isDirectory()) {
             if ((destFile != null && destDir != null)
@@ -102,12 +101,12 @@ public class Move extends Copy {
     /**
      * Override copy's doFileOperations to move the files instead of copying them.
      */
+    @Override
     protected void doFileOperations() {
         //Attempt complete directory renames, if any, first.
         if (completeDirMap.size() > 0) {
-            for (Iterator fromDirs = completeDirMap.keySet().iterator(); fromDirs.hasNext();) {
-                File fromDir = (File) fromDirs.next();
-                File toDir = (File) completeDirMap.get(fromDir);
+            for (File fromDir : completeDirMap.keySet()) {
+                File toDir = completeDirMap.get(fromDir);
                 boolean renamed = false;
                 try {
                     log("Attempting to rename dir: " + fromDir + " to " + toDir, verbosity);
@@ -134,14 +133,13 @@ public class Move extends Copy {
             log("Moving " + moveCount + " file" + ((moveCount == 1) ? "" : "s")
                     + " to " + destDir.getAbsolutePath());
 
-            for (Iterator fromFiles = fileCopyMap.keySet().iterator(); fromFiles.hasNext();) {
-                String fromFile = (String) fromFiles.next();
+            for (String fromFile : fileCopyMap.keySet()) {
                 File f = new File(fromFile);
                 boolean selfMove = false;
                 if (f.exists()) { //Is this file still available to be moved?
-                    String[] toFiles = (String[]) fileCopyMap.get(fromFile);
+                    String[] toFiles = fileCopyMap.get(fromFile);
                     for (int i = 0; i < toFiles.length; i++) {
-                        String toFile = (String) toFiles[i];
+                        String toFile = toFiles[i];
 
                         if (fromFile.equals(toFile)) {
                             log("Skipping self-move of " + fromFile, verbosity);
@@ -166,9 +164,8 @@ public class Move extends Copy {
 
         if (includeEmpty) {
             int createCount = 0;
-            for (Iterator fromDirNames = dirCopyMap.keySet().iterator(); fromDirNames.hasNext();) {
-                String fromDirName = (String) fromDirNames.next();
-                String[] toDirNames = (String[]) dirCopyMap.get(fromDirName);
+            for (String fromDirName : dirCopyMap.keySet()) {
+                String[] toDirNames = dirCopyMap.get(fromDirName);
                 boolean selfMove = false;
                 for (int i = 0; i < toDirNames.length; i++) {
                     if (fromDirName.equals(toDirNames[i])) {
@@ -213,16 +210,15 @@ public class Move extends Copy {
             log("Attempting to rename: " + fromFile + " to " + toFile, verbosity);
             moved = renameFile(fromFile, toFile, filtering, forceOverwrite);
         } catch (IOException ioe) {
-            String msg = "Failed to rename " + fromFile
-                + " to " + toFile + " due to " + ioe.getMessage();
-            throw new BuildException(msg, ioe, getLocation());
+            throw new BuildException("Failed to rename " + fromFile + " to "
+                + toFile + " due to " + ioe.getMessage(), ioe, getLocation());
         }
 
         if (!moved) {
             copyFile(fromFile, toFile, filtering, overwrite);
             if (!getFileUtils().tryHardToDelete(fromFile, performGc)) {
-                throw new BuildException("Unable to delete " + "file "
-                        + fromFile.getAbsolutePath());
+                throw new BuildException("Unable to delete file %s",
+                    fromFile.getAbsolutePath());
             }
         }
     }
@@ -242,9 +238,7 @@ public class Move extends Copy {
             if (filtering) {
                 executionFilters.addFilterSet(getProject().getGlobalFilterSet());
             }
-            for (Iterator filterIter = getFilterSets().iterator(); filterIter.hasNext();) {
-                executionFilters.addFilterSet((FilterSet) filterIter.next());
-            }
+            getFilterSets().forEach(executionFilters::addFilterSet);
             getFileUtils().copyFile(fromFile, toFile, executionFilters,
                                     getFilterChains(),
                                     forceOverwrite,
@@ -254,9 +248,8 @@ public class Move extends Copy {
                                     getOutputEncoding(),
                                     getProject(), getForce());
         } catch (IOException ioe) {
-            String msg = "Failed to copy " + fromFile
-                    + " to " + toFile + " due to " + ioe.getMessage();
-            throw new BuildException(msg, ioe, getLocation());
+            throw new BuildException("Failed to copy " + fromFile + " to "
+                + toFile + " due to " + ioe.getMessage(), ioe, getLocation());
         }
     }
 
@@ -271,8 +264,7 @@ public class Move extends Copy {
             return false;
         }     // maybe io error?
 
-        for (int i = 0; i < list.length; i++) {
-            String s = list[i];
+        for (String s : list) {
             File f = new File(d, s);
             if (f.isDirectory()) {
                 if (!okToDelete(f)) {
@@ -304,22 +296,24 @@ public class Move extends Copy {
             return;
         }      // on an io error list() can return null
 
-        for (int i = 0; i < list.length; i++) {
-            String s = list[i];
+        for (String s : list) {
             File f = new File(d, s);
             if (f.isDirectory()) {
                 deleteDir(f);
-            } else if (deleteFiles && !getFileUtils().tryHardToDelete(f,
-                                                                      performGc)) {
-                throw new BuildException("Unable to delete file " + f.getAbsolutePath());
+            } else if (deleteFiles
+                && !getFileUtils().tryHardToDelete(f, performGc)) {
+                throw new BuildException("Unable to delete file %s",
+                    f.getAbsolutePath());
             } else {
-                throw new BuildException("UNEXPECTED ERROR - The file "
-                        + f.getAbsolutePath() + " should not exist!");
+                throw new BuildException(
+                    "UNEXPECTED ERROR - The file %s should not exist!",
+                    f.getAbsolutePath());
             }
         }
         log("Deleting directory " + d.getAbsolutePath(), verbosity);
         if (!getFileUtils().tryHardToDelete(d, performGc)) {
-            throw new BuildException("Unable to delete directory " + d.getAbsolutePath());
+            throw new BuildException("Unable to delete directory %s",
+                d.getAbsolutePath());
         }
     }
 
@@ -343,19 +337,21 @@ public class Move extends Copy {
      */
     protected boolean renameFile(File sourceFile, File destFile, boolean filtering,
                                  boolean overwrite) throws IOException, BuildException {
-        if (destFile.isDirectory() || filtering || getFilterSets().size() > 0
-                || getFilterChains().size() > 0) {
+        if (destFile.isDirectory() || filtering || !getFilterSets().isEmpty()
+                || !getFilterChains().isEmpty()) {
             return false;
         }
 
         // identical logic lives in ResourceUtils.copyResource():
         if (destFile.isFile() && !destFile.canWrite()) {
             if (!getForce()) {
-                throw new IOException("can't replace read-only destination "
-                                      + "file " + destFile);
-            } else if (!getFileUtils().tryHardToDelete(destFile)) {
-                throw new IOException("failed to delete read-only "
-                                      + "destination file " + destFile);
+                throw new IOException(String.format(
+                    "can't replace read-only destination file %s", destFile));
+            }
+            if (!getFileUtils().tryHardToDelete(destFile)) {
+                throw new IOException(String.format(
+                    "failed to delete read-only destination file %s",
+                    destFile));
             }
         }
 
@@ -374,7 +370,8 @@ public class Move extends Copy {
             }
             if (!(getFileUtils().areSame(sourceFile, destFile)
                   || getFileUtils().tryHardToDelete(destFile, performGc))) {
-                throw new BuildException("Unable to remove existing file " + destFile);
+                throw new BuildException("Unable to remove existing file %s",
+                    destFile);
             }
         }
         return sourceFile.renameTo(destFile);

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/Nice.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Nice.java b/src/main/org/apache/tools/ant/taskdefs/Nice.java
index 5898cae..4bd5beb 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Nice.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Nice.java
@@ -48,12 +48,11 @@ public class Nice extends Task {
      */
     private String currentPriority;
 
-
-
     /**
      * Execute the task
      * @exception BuildException if something goes wrong with the build
      */
+    @Override
     public void execute() throws BuildException {
 
         Thread self = Thread.currentThread();
@@ -93,7 +92,7 @@ public class Nice extends Task {
         if (newPriority < Thread.MIN_PRIORITY || newPriority > Thread.MAX_PRIORITY) {
             throw new BuildException("The thread priority is out of the range 1-10");
         }
-        this.newPriority = new Integer(newPriority);
+        this.newPriority = Integer.valueOf(newPriority);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/taskdefs/Pack.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/taskdefs/Pack.java b/src/main/org/apache/tools/ant/taskdefs/Pack.java
index 59a998f..67a2dd8 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Pack.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Pack.java
@@ -38,6 +38,7 @@ import org.apache.tools.ant.types.resources.FileResource;
 
 public abstract class Pack extends Task {
     private static final int BUFFER_SIZE = 8 * 1024;
+
     // CheckStyle:VisibilityModifier OFF - bc
     protected File zipFile;
     protected File source;
@@ -91,13 +92,14 @@ public abstract class Pack extends Task {
      */
     public void addConfigured(ResourceCollection a) {
         if (a.size() == 0) {
-            throw new BuildException("No resource selected, " + getTaskName()
-                    + " needs exactly one resource.");
+            throw new BuildException(
+                "No resource selected, %s needs exactly one resource.",
+                getTaskName());
         }
         if (a.size() != 1) {
-            throw new BuildException(getTaskName()
-                    + " cannot handle multiple resources at once. (" + a.size()
-                    + " resources were selected.)");
+            throw new BuildException(
+                "%s cannot handle multiple resources at once. (%d resources were selected.)",
+                getTaskName(), a.size());
         }
         setSrcResource(a.iterator().next());
     }
@@ -112,13 +114,14 @@ public abstract class Pack extends Task {
         }
 
         if (zipFile.isDirectory()) {
-            throw new BuildException("zipfile attribute must not "
-                                    + "represent a directory!", getLocation());
+            throw new BuildException(
+                "zipfile attribute must not represent a directory!",
+                getLocation());
         }
 
         if (getSrcResource() == null) {
-            throw new BuildException("src attribute or nested resource is"
-                                     + " required", getLocation());
+            throw new BuildException(
+                "src attribute or nested resource is required", getLocation());
         }
     }
 
@@ -126,6 +129,7 @@ public abstract class Pack extends Task {
      * validate, then hand off to the subclass
      * @throws BuildException on error
      */
+    @Override
     public void execute() throws BuildException {
         validate();