http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/optional/AbstractScriptComponent.java
----------------------------------------------------------------------
diff --git 
a/src/main/org/apache/tools/ant/types/optional/AbstractScriptComponent.java 
b/src/main/org/apache/tools/ant/types/optional/AbstractScriptComponent.java
index a4a288b..8fefe86 100644
--- a/src/main/org/apache/tools/ant/types/optional/AbstractScriptComponent.java
+++ b/src/main/org/apache/tools/ant/types/optional/AbstractScriptComponent.java
@@ -45,6 +45,7 @@ public abstract class AbstractScriptComponent extends 
ProjectComponent {
      * Set the project.
      * @param project the owner of this component.
      */
+    @Override
     public void setProject(Project project) {
         super.setProject(project);
         helper.setProjectComponent(this);

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/optional/ScriptCondition.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/optional/ScriptCondition.java 
b/src/main/org/apache/tools/ant/types/optional/ScriptCondition.java
index fac02bf..76b2337 100644
--- a/src/main/org/apache/tools/ant/types/optional/ScriptCondition.java
+++ b/src/main/org/apache/tools/ant/types/optional/ScriptCondition.java
@@ -41,6 +41,7 @@ public class ScriptCondition extends AbstractScriptComponent 
implements Conditio
      * @throws org.apache.tools.ant.BuildException
      *          if an error occurs
      */
+    @Override
     public boolean eval() throws BuildException {
         initScriptRunner();
         executeScript("ant_condition");

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/optional/ScriptFilter.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/optional/ScriptFilter.java 
b/src/main/org/apache/tools/ant/types/optional/ScriptFilter.java
index 3b0f1a1..a990fd0 100644
--- a/src/main/org/apache/tools/ant/types/optional/ScriptFilter.java
+++ b/src/main/org/apache/tools/ant/types/optional/ScriptFilter.java
@@ -53,6 +53,7 @@ public class ScriptFilter extends 
TokenFilter.ChainableReaderFilter {
      * Set the project.
      * @param project the owner of this component.
      */
+    @Override
     public void setProject(Project project) {
         super.setProject(project);
         helper.setProjectComponent(this);
@@ -105,6 +106,7 @@ public class ScriptFilter extends 
TokenFilter.ChainableReaderFilter {
      * @param token the token to be filtered
      * @return the filtered token
      */
+    @Override
     public String filter(String token) {
         init();
         setToken(token);

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/optional/ScriptMapper.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/optional/ScriptMapper.java 
b/src/main/org/apache/tools/ant/types/optional/ScriptMapper.java
index 38dab0b..6fa4b58 100644
--- a/src/main/org/apache/tools/ant/types/optional/ScriptMapper.java
+++ b/src/main/org/apache/tools/ant/types/optional/ScriptMapper.java
@@ -35,8 +35,8 @@ public class ScriptMapper extends AbstractScriptComponent 
implements FileNameMap
      *
      * @param from a string.
      */
+    @Override
     public void setFrom(String from) {
-
     }
 
     /**
@@ -44,15 +44,15 @@ public class ScriptMapper extends AbstractScriptComponent 
implements FileNameMap
      *
      * @param to a string.
      */
+    @Override
     public void setTo(String to) {
-
     }
 
     /**
      * Reset the list of files
      */
     public void clear() {
-        files = new ArrayList<String>(1);
+        files = new ArrayList<>(1);
     }
 
     /**
@@ -77,15 +77,15 @@ public class ScriptMapper extends AbstractScriptComponent 
implements FileNameMap
      *         null if it does not.
      */
 
+    @Override
     public String[] mapFileName(String sourceFileName) {
         initScriptRunner();
         getRunner().addBean("source", sourceFileName);
         clear();
         executeScript("ant_mapper");
-        if (files.size() == 0) {
+        if (files.isEmpty()) {
             return null;
-        } else {
-            return files.toArray(new String[files.size()]);
         }
+        return files.toArray(new String[files.size()]);
     }
 }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/optional/ScriptSelector.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/optional/ScriptSelector.java 
b/src/main/org/apache/tools/ant/types/optional/ScriptSelector.java
index 9225840..e5e11a5 100644
--- a/src/main/org/apache/tools/ant/types/optional/ScriptSelector.java
+++ b/src/main/org/apache/tools/ant/types/optional/ScriptSelector.java
@@ -59,6 +59,7 @@ public class ScriptSelector extends BaseSelector {
      * Set the project.
      * @param project the owner of this component.
      */
+    @Override
     public void setProject(Project project) {
         super.setProject(project);
         helper.setProjectComponent(this);
@@ -166,6 +167,7 @@ public class ScriptSelector extends BaseSelector {
      *
      * @return whether the file should be selected or not
      */
+    @Override
     public boolean isSelected(File basedir, String filename, File file) {
         init();
         setSelected(true);

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/optional/depend/ClassfileSet.java
----------------------------------------------------------------------
diff --git 
a/src/main/org/apache/tools/ant/types/optional/depend/ClassfileSet.java 
b/src/main/org/apache/tools/ant/types/optional/depend/ClassfileSet.java
index f2fe69b..f966646 100644
--- a/src/main/org/apache/tools/ant/types/optional/depend/ClassfileSet.java
+++ b/src/main/org/apache/tools/ant/types/optional/depend/ClassfileSet.java
@@ -41,12 +41,12 @@ public class ClassfileSet extends FileSet {
      * classes which must be included in the fileset and which are the
      * starting point for the dependency search.
      */
-    private List<String> rootClasses = new ArrayList<String>();
+    private List<String> rootClasses = new ArrayList<>();
 
     /**
      * The list of filesets which contain root classes.
      */
-    private List<FileSet> rootFileSets = new ArrayList<FileSet>();
+    private List<FileSet> rootFileSets = new ArrayList<>();
 
     /**
      * Inner class used to contain info about root classes.
@@ -81,6 +81,16 @@ public class ClassfileSet extends FileSet {
     }
 
     /**
+     * Create a ClassfileSet from another ClassfileSet.
+     *
+     * @param s the other classfileset.
+     */
+    protected ClassfileSet(ClassfileSet s) {
+        super(s);
+        rootClasses.addAll(s.rootClasses);
+    }
+    
+    /**
      * Add a fileset to which contains a collection of root classes used to
      * drive the search from classes.
      *
@@ -93,16 +103,6 @@ public class ClassfileSet extends FileSet {
     }
 
     /**
-     * Create a ClassfileSet from another ClassfileSet.
-     *
-     * @param s the other classfileset.
-     */
-    protected ClassfileSet(ClassfileSet s) {
-        super(s);
-        rootClasses.addAll(s.rootClasses);
-    }
-
-    /**
      * Set the root class attribute.
      *
      * @param rootClass the name of the root class.
@@ -118,6 +118,7 @@ public class ClassfileSet extends FileSet {
      *
      * @return a dependency scanner.
      */
+    @Override
     public DirectoryScanner getDirectoryScanner(Project p) {
         if (isReference()) {
             return getRef(p).getDirectoryScanner(p);
@@ -125,7 +126,7 @@ public class ClassfileSet extends FileSet {
         dieOnCircularReference(p);
         DirectoryScanner parentScanner = super.getDirectoryScanner(p);
         DependScanner scanner = new DependScanner(parentScanner);
-        final Vector<String> allRootClasses = new Vector<String>(rootClasses);
+        final Vector<String> allRootClasses = new Vector<>(rootClasses);
         for (FileSet additionalRootSet : rootFileSets) {
             DirectoryScanner additionalScanner
                 = additionalRootSet.getDirectoryScanner(p);
@@ -160,11 +161,13 @@ public class ClassfileSet extends FileSet {
      *
      * @return a clone of the class file set.
      */
-    public Object clone() {
+    @Override
+    public ClassfileSet clone() {
         return new ClassfileSet(isReference()
             ? (ClassfileSet) (getRef(getProject())) : this);
     }
 
+    @Override
     protected synchronized void dieOnCircularReference(Stack<Object> stk, 
Project p) {
         if (isChecked()) {
             return;

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/optional/depend/DependScanner.java
----------------------------------------------------------------------
diff --git 
a/src/main/org/apache/tools/ant/types/optional/depend/DependScanner.java 
b/src/main/org/apache/tools/ant/types/optional/depend/DependScanner.java
index bb3cf54..5ea51c7 100644
--- a/src/main/org/apache/tools/ant/types/optional/depend/DependScanner.java
+++ b/src/main/org/apache/tools/ant/types/optional/depend/DependScanner.java
@@ -19,8 +19,10 @@ package org.apache.tools.ant.types.optional.depend;
 
 import java.io.File;
 import java.util.Enumeration;
-import java.util.Hashtable;
+import java.util.Set;
 import java.util.Vector;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.DirectoryScanner;
@@ -48,7 +50,7 @@ public class DependScanner extends DirectoryScanner {
      */
     private Vector<String> included;
 
-    private Vector<File> additionalBaseDirs = new Vector<File>();
+    private Vector<File> additionalBaseDirs = new Vector<>();
 
     /**
      * The parent scanner which gives the basic set of files. Only files which
@@ -82,15 +84,13 @@ public class DependScanner extends DirectoryScanner {
      *
      * @return the names of the files.
      */
+    @Override
     public String[] getIncludedFiles() {
-        String[] files = new String[getIncludedFilesCount()];
-        for (int i = 0; i < files.length; i++) {
-            files[i] = (String) included.elementAt(i);
-        }
-        return files;
+        return included.toArray(new String[getIncludedFilesCount()]);
     }
 
     /** {@inheritDoc}. */
+    @Override
     public synchronized int getIncludedFilesCount() {
         if (included == null) {
             throw new IllegalStateException();
@@ -103,12 +103,14 @@ public class DependScanner extends DirectoryScanner {
      *
      * @exception IllegalStateException when basedir was set incorrectly.
      */
+    @Override
     public synchronized void scan() throws IllegalStateException {
-        included = new Vector<String>();
+        included = new Vector<>();
         String analyzerClassName = DEFAULT_ANALYZER_CLASS;
-        DependencyAnalyzer analyzer = null;
+        DependencyAnalyzer analyzer;
         try {
-            Class<? extends DependencyAnalyzer> analyzerClass = 
Class.forName(analyzerClassName)
+            Class<? extends DependencyAnalyzer> analyzerClass =
+                Class.forName(analyzerClassName)
                     .asSubclass(DependencyAnalyzer.class);
             analyzer = analyzerClass.newInstance();
         } catch (Exception e) {
@@ -116,28 +118,22 @@ public class DependScanner extends DirectoryScanner {
                                      + analyzerClassName, e);
         }
         analyzer.addClassPath(new Path(null, basedir.getPath()));
-        for (Enumeration<File> e = additionalBaseDirs.elements(); 
e.hasMoreElements();) {
-            File additionalBaseDir = e.nextElement();
-            analyzer.addClassPath(new Path(null, additionalBaseDir.getPath()));
-        }
+        additionalBaseDirs.stream().map(File::getPath)
+            .map(p -> new Path(null, p)).forEach(analyzer::addClassPath);
 
-        for (Enumeration<String> e = rootClasses.elements(); 
e.hasMoreElements();) {
-            String rootClass = e.nextElement();
-            analyzer.addRootClass(rootClass);
-        }
-        Enumeration<String> e = analyzer.getClassDependencies();
+        rootClasses.forEach(analyzer::addRootClass);
 
-        String[] parentFiles = parentScanner.getIncludedFiles();
-        Hashtable<String, String> parentSet = new Hashtable<String, String>();
-        for (int i = 0; i < parentFiles.length; ++i) {
-            parentSet.put(parentFiles[i], parentFiles[i]);
-        }
+        Set<String> parentSet = Stream.of(parentScanner.getIncludedFiles())
+            .collect(Collectors.toSet());
+        
+        Enumeration<String> e = analyzer.getClassDependencies();
+        
         while (e.hasMoreElements()) {
-            String classname = (String) e.nextElement();
-            String filename = classname.replace('.', File.separatorChar);
-            filename = filename + ".class";
+            String classname = e.nextElement();
+            String filename =
+                classname.replace('.', File.separatorChar) + ".class";
             File depFile = new File(basedir, filename);
-            if (depFile.exists() && parentSet.containsKey(filename)) {
+            if (depFile.exists() && parentSet.contains(filename)) {
                 // This is included
                 included.addElement(filename);
             }
@@ -147,6 +143,7 @@ public class DependScanner extends DirectoryScanner {
     /**
      * @see DirectoryScanner#addDefaultExcludes
      */
+    @Override
     public void addDefaultExcludes() {
     }
 
@@ -154,6 +151,7 @@ public class DependScanner extends DirectoryScanner {
      * @see DirectoryScanner#getExcludedDirectories
      */
     /** {@inheritDoc}. */
+    @Override
     public String[] getExcludedDirectories() {
         return null;
     }
@@ -162,6 +160,7 @@ public class DependScanner extends DirectoryScanner {
      * @see DirectoryScanner#getExcludedFiles
      */
     /** {@inheritDoc}. */
+    @Override
     public String[] getExcludedFiles() {
         return null;
     }
@@ -170,6 +169,7 @@ public class DependScanner extends DirectoryScanner {
      * @see DirectoryScanner#getIncludedDirectories
      */
     /** {@inheritDoc}. */
+    @Override
     public String[] getIncludedDirectories() {
         return new String[0];
     }
@@ -178,6 +178,7 @@ public class DependScanner extends DirectoryScanner {
      * @see DirectoryScanner#getIncludedDirsCount
      */
     /** {@inheritDoc}. */
+    @Override
     public int getIncludedDirsCount() {
         return 0;
     }
@@ -186,6 +187,7 @@ public class DependScanner extends DirectoryScanner {
      * @see DirectoryScanner#getNotIncludedDirectories
      */
     /** {@inheritDoc}. */
+    @Override
     public String[] getNotIncludedDirectories() {
         return null;
     }
@@ -194,6 +196,7 @@ public class DependScanner extends DirectoryScanner {
      * @see DirectoryScanner#getNotIncludedFiles
      */
     /** {@inheritDoc}. */
+    @Override
     public String[] getNotIncludedFiles() {
         return null;
     }
@@ -202,6 +205,7 @@ public class DependScanner extends DirectoryScanner {
      * @see DirectoryScanner#setExcludes
      */
     /** {@inheritDoc}. */
+    @Override
     public void setExcludes(String[] excludes) {
     }
 
@@ -209,6 +213,7 @@ public class DependScanner extends DirectoryScanner {
      * @see DirectoryScanner#setIncludes
      */
     /** {@inheritDoc}. */
+    @Override
     public void setIncludes(String[] includes) {
     }
 
@@ -216,6 +221,7 @@ public class DependScanner extends DirectoryScanner {
      * @see DirectoryScanner#setCaseSensitive
      */
     /** {@inheritDoc}. */
+    @Override
     public void setCaseSensitive(boolean isCaseSensitive) {
     }
 

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/optional/image/Arc.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/optional/image/Arc.java 
b/src/main/org/apache/tools/ant/types/optional/image/Arc.java
index 3d8b29b..a1d4709 100644
--- a/src/main/org/apache/tools/ant/types/optional/image/Arc.java
+++ b/src/main/org/apache/tools/ant/types/optional/image/Arc.java
@@ -74,23 +74,24 @@ public class Arc extends BasicShape implements 
DrawOperation {
      * @todo refactor using an EnumeratedAttribute
      */
     public void setType(String strType) {
-        if (strType.equalsIgnoreCase("open")) {
+        if ("open".equalsIgnoreCase(strType)) {
             type = Arc2D.OPEN;
-        } else if (strType.equalsIgnoreCase("pie")) {
+        } else if ("pie".equalsIgnoreCase(strType)) {
             type = Arc2D.PIE;
-        } else if (strType.equalsIgnoreCase("chord")) {
+        } else if ("chord".equalsIgnoreCase(strType)) {
             type = Arc2D.CHORD;
         }
     }
 
     /** {@inheritDoc}. */
+    @Override
     public PlanarImage executeDrawOperation() {
         BufferedImage bi = new BufferedImage(width + (stroke_width * 2),
             height + (stroke_width * 2), BufferedImage.TYPE_4BYTE_ABGR_PRE);
 
-        Graphics2D graphics = (Graphics2D) bi.getGraphics();
+        Graphics2D graphics = bi.createGraphics();
 
-        if (!stroke.equals("transparent")) {
+        if (!"transparent".equalsIgnoreCase(stroke)) {
             BasicStroke bStroke = new BasicStroke(stroke_width);
             graphics.setColor(ColorMapper.getColorByName(stroke));
             graphics.setStroke(bStroke);
@@ -98,24 +99,21 @@ public class Arc extends BasicShape implements 
DrawOperation {
                 height, start, stop, type));
         }
 
-        if (!fill.equals("transparent")) {
+        if (!"transparent".equalsIgnoreCase(fill)) {
             graphics.setColor(ColorMapper.getColorByName(fill));
             graphics.fill(new Arc2D.Double(stroke_width, stroke_width,
                 width, height, start, stop, type));
         }
 
-
-        final int size = instructions.size();
-        for (int i = 0; i < size; i++) {
-            ImageOperation instr = ((ImageOperation) 
instructions.elementAt(i));
+        for (ImageOperation instr : instructions) {
             if (instr instanceof DrawOperation) {
                 PlanarImage img = ((DrawOperation) 
instr).executeDrawOperation();
                 graphics.drawImage(img.getAsBufferedImage(), null, 0, 0);
             } else if (instr instanceof TransformOperation) {
-                graphics = (Graphics2D) bi.getGraphics();
                 PlanarImage image = ((TransformOperation) instr)
                     
.executeTransformOperation(PlanarImage.wrapRenderedImage(bi));
                 bi = image.getAsBufferedImage();
+                graphics = bi.createGraphics();
             }
         }
         return PlanarImage.wrapRenderedImage(bi);

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/optional/image/ColorMapper.java
----------------------------------------------------------------------
diff --git 
a/src/main/org/apache/tools/ant/types/optional/image/ColorMapper.java 
b/src/main/org/apache/tools/ant/types/optional/image/ColorMapper.java
index 88e2871..14470fd 100644
--- a/src/main/org/apache/tools/ant/types/optional/image/ColorMapper.java
+++ b/src/main/org/apache/tools/ant/types/optional/image/ColorMapper.java
@@ -24,9 +24,6 @@ import java.awt.Color;
  * @see org.apache.tools.ant.taskdefs.optional.image.Image
  */
 public final class ColorMapper {
-    /** private constructor for Utility class */
-    private ColorMapper() {
-    }
 
     /** black string */
     public static final String COLOR_BLACK = "black";
@@ -69,34 +66,42 @@ public final class ColorMapper {
      * @todo refactor to use an EnumeratedAttribute (maybe?)
      */
     public static Color getColorByName(String colorName) {
-        if (colorName.equalsIgnoreCase(COLOR_BLACK)) {
-            return Color.black;
-        } else if (colorName.equalsIgnoreCase(COLOR_BLUE)) {
+        switch (colorName.toLowerCase()) {
+        case COLOR_BLUE:
             return Color.blue;
-        } else if (colorName.equalsIgnoreCase(COLOR_CYAN)) {
+        case COLOR_CYAN:
             return Color.cyan;
-        } else if (colorName.equalsIgnoreCase(COLOR_DARKGRAY) || 
colorName.equalsIgnoreCase(COLOR_DARKGREY)) {
+        case COLOR_DARKGRAY:
+        case COLOR_DARKGREY:
             return Color.darkGray;
-        } else if (colorName.equalsIgnoreCase(COLOR_GRAY) || 
colorName.equalsIgnoreCase(COLOR_GREY)) {
+        case COLOR_GRAY:
+        case COLOR_GREY:
             return Color.gray;
-        } else if (colorName.equalsIgnoreCase(COLOR_LIGHTGRAY) || 
colorName.equalsIgnoreCase(COLOR_LIGHTGREY)) {
+        case COLOR_LIGHTGRAY:
+        case COLOR_LIGHTGREY:
             return Color.lightGray;
-        } else if (colorName.equalsIgnoreCase(COLOR_GREEN)) {
+        case COLOR_GREEN:
             return Color.green;
-        } else if (colorName.equalsIgnoreCase(COLOR_MAGENTA)) {
+        case COLOR_MAGENTA:
             return Color.magenta;
-        } else if (colorName.equalsIgnoreCase(COLOR_ORANGE)) {
+        case COLOR_ORANGE:
             return Color.orange;
-        } else if (colorName.equalsIgnoreCase(COLOR_PINK)) {
+        case COLOR_PINK:
             return Color.pink;
-        } else if (colorName.equalsIgnoreCase(COLOR_RED)) {
+        case COLOR_RED:
             return Color.red;
-        } else if (colorName.equalsIgnoreCase(COLOR_WHITE)) {
+        case COLOR_WHITE:
             return Color.white;
-        } else if (colorName.equalsIgnoreCase(COLOR_YELLOW)) {
+        case COLOR_YELLOW:
             return Color.yellow;
+        case COLOR_BLACK:
+        default:
+            return Color.black;
         }
-        return Color.black;
+    }
+
+    /** private constructor for Utility class */
+    private ColorMapper() {
     }
 
 }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/optional/image/Draw.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/optional/image/Draw.java 
b/src/main/org/apache/tools/ant/types/optional/image/Draw.java
index 2f097d5..b2cfab9 100644
--- a/src/main/org/apache/tools/ant/types/optional/image/Draw.java
+++ b/src/main/org/apache/tools/ant/types/optional/image/Draw.java
@@ -49,11 +49,13 @@ public class Draw extends TransformOperation {
     }
 
     /** {@inheritDoc}. */
+    @Override
     public void addRectangle(Rectangle rect) {
         instructions.add(rect);
     }
 
     /** {@inheritDoc}. */
+    @Override
     public void addText(Text text) {
         instructions.add(text);
     }
@@ -75,13 +77,12 @@ public class Draw extends TransformOperation {
     }
 
     /** {@inheritDoc}. */
+    @Override
     public PlanarImage executeTransformOperation(PlanarImage image) {
         BufferedImage bi = image.getAsBufferedImage();
-        Graphics2D graphics = (Graphics2D) bi.getGraphics();
+        Graphics2D graphics = bi.createGraphics();
 
-        final int size = instructions.size();
-        for (int i = 0; i < size; i++) {
-            ImageOperation instr = ((ImageOperation) 
instructions.elementAt(i));
+        for (ImageOperation instr : instructions) {
             if (instr instanceof DrawOperation) {
                 PlanarImage op = ((DrawOperation) 
instr).executeDrawOperation();
                 log("\tDrawing to x=" + xloc + " y=" + yloc);
@@ -92,11 +93,8 @@ public class Draw extends TransformOperation {
                 BufferedImage child = op.getAsBufferedImage();
                 log("\tDrawing to x=" + xloc + " y=" + yloc);
                 graphics.drawImage(child, null, xloc, yloc);
-                PlanarImage.wrapRenderedImage(bi);
             }
         }
-        image = PlanarImage.wrapRenderedImage(bi);
-
-        return image;
+        return PlanarImage.wrapRenderedImage(bi);
     }
 }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/optional/image/Ellipse.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/optional/image/Ellipse.java 
b/src/main/org/apache/tools/ant/types/optional/image/Ellipse.java
index 9924d90..46a3b8b 100644
--- a/src/main/org/apache/tools/ant/types/optional/image/Ellipse.java
+++ b/src/main/org/apache/tools/ant/types/optional/image/Ellipse.java
@@ -51,35 +51,33 @@ public class Ellipse extends BasicShape implements 
DrawOperation {
     }
 
     /** {@inheritDoc}. */
+    @Override
     public PlanarImage executeDrawOperation() {
         BufferedImage bi = new BufferedImage(width, height, 
BufferedImage.TYPE_4BYTE_ABGR_PRE);
 
-        Graphics2D graphics = (Graphics2D) bi.getGraphics();
+        Graphics2D graphics = bi.createGraphics();
 
-        if (!stroke.equals("transparent")) {
+        if (!"transparent".equalsIgnoreCase(stroke)) {
             BasicStroke bStroke = new BasicStroke(stroke_width);
             graphics.setColor(ColorMapper.getColorByName(stroke));
             graphics.setStroke(bStroke);
             graphics.draw(new Ellipse2D.Double(0, 0, width, height));
         }
 
-        if (!fill.equals("transparent")) {
+        if (!"transparent".equalsIgnoreCase(fill)) {
             graphics.setColor(ColorMapper.getColorByName(fill));
             graphics.fill(new Ellipse2D.Double(0, 0, width, height));
         }
 
-
-        final int size = instructions.size();
-        for (int i = 0; i < size; i++) {
-            ImageOperation instr = ((ImageOperation) 
instructions.elementAt(i));
+        for (ImageOperation instr : instructions) {
             if (instr instanceof DrawOperation) {
                 PlanarImage img = ((DrawOperation) 
instr).executeDrawOperation();
                 graphics.drawImage(img.getAsBufferedImage(), null, 0, 0);
             } else if (instr instanceof TransformOperation) {
-                graphics = (Graphics2D) bi.getGraphics();
                 PlanarImage image = ((TransformOperation) instr)
                     
.executeTransformOperation(PlanarImage.wrapRenderedImage(bi));
                 bi = image.getAsBufferedImage();
+                graphics = bi.createGraphics();
             }
         }
         return PlanarImage.wrapRenderedImage(bi);

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/optional/image/ImageOperation.java
----------------------------------------------------------------------
diff --git 
a/src/main/org/apache/tools/ant/types/optional/image/ImageOperation.java 
b/src/main/org/apache/tools/ant/types/optional/image/ImageOperation.java
index d72fe04..7ff6af8 100644
--- a/src/main/org/apache/tools/ant/types/optional/image/ImageOperation.java
+++ b/src/main/org/apache/tools/ant/types/optional/image/ImageOperation.java
@@ -27,7 +27,7 @@ import org.apache.tools.ant.types.DataType;
  */
 public abstract class ImageOperation extends DataType {
      // CheckStyle:VisibilityModifier OFF - bc
-    protected Vector<ImageOperation> instructions = new 
Vector<ImageOperation>();
+    protected Vector<ImageOperation> instructions = new Vector<>();
      // CheckStyle:VisibilityModifier ON
 
     /**

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/optional/image/Rectangle.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/optional/image/Rectangle.java 
b/src/main/org/apache/tools/ant/types/optional/image/Rectangle.java
index e2d5bb1..b15272f 100644
--- a/src/main/org/apache/tools/ant/types/optional/image/Rectangle.java
+++ b/src/main/org/apache/tools/ant/types/optional/image/Rectangle.java
@@ -68,41 +68,39 @@ public class Rectangle extends BasicShape implements 
DrawOperation {
     }
 
     /** {@inheritDoc}. */
+    @Override
     public PlanarImage executeDrawOperation() {
         log("\tCreating Rectangle w=" + width + " h=" + height + " arcw="
             + arcwidth + " arch=" + archeight);
         BufferedImage bi = new BufferedImage(width, height, 
BufferedImage.TYPE_4BYTE_ABGR_PRE);
 
-        Graphics2D graphics = (Graphics2D) bi.getGraphics();
+        Graphics2D graphics = bi.createGraphics();
 
-        if (!stroke.equals("transparent")) {
+        if (!"transparent".equalsIgnoreCase(stroke)) {
             BasicStroke bStroke = new BasicStroke(stroke_width);
             graphics.setColor(ColorMapper.getColorByName(stroke));
             graphics.setStroke(bStroke);
 
-            if ((arcwidth != 0) || (archeight != 0)) {
-                graphics.drawRoundRect(0, 0, width, height, arcwidth, 
archeight);
-            } else {
+            if (arcwidth == 0 && archeight == 0) {
                 graphics.drawRect(0, 0, width, height);
+            } else {
+                graphics.drawRoundRect(0, 0, width, height, arcwidth, 
archeight);
             }
         }
 
-        if (!fill.equals("transparent")) {
+        if (!"transparent".equalsIgnoreCase(fill)) {
             graphics.setColor(ColorMapper.getColorByName(fill));
-            if ((arcwidth != 0) || (archeight != 0)) {
+            if (arcwidth == 0 && archeight == 0) {
+                graphics.fillRect(stroke_width, stroke_width,
+                    width - (stroke_width * 2), height - (stroke_width * 2));
+            } else {
                 graphics.fillRoundRect(stroke_width, stroke_width,
                     width - (stroke_width * 2), height - (stroke_width * 2),
                     arcwidth, archeight);
-            } else {
-                graphics.fillRect(stroke_width, stroke_width,
-                    width - (stroke_width * 2), height - (stroke_width * 2));
             }
         }
 
-
-        final int size = instructions.size();
-        for (int i = 0; i < size; i++) {
-            ImageOperation instr = ((ImageOperation) 
instructions.elementAt(i));
+        for (ImageOperation instr : instructions) {
             if (instr instanceof DrawOperation) {
                 PlanarImage img = ((DrawOperation) 
instr).executeDrawOperation();
                 graphics.drawImage(img.getAsBufferedImage(), null, 0, 0);

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/optional/image/Rotate.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/optional/image/Rotate.java 
b/src/main/org/apache/tools/ant/types/optional/image/Rotate.java
index 3013bde..0904ba2 100644
--- a/src/main/org/apache/tools/ant/types/optional/image/Rotate.java
+++ b/src/main/org/apache/tools/ant/types/optional/image/Rotate.java
@@ -67,24 +67,21 @@ public class Rotate extends TransformOperation implements 
DrawOperation {
      * @param image The image to perform the transformation on.
      * @return the transformed image.
      */
+    @Override
     public PlanarImage executeTransformOperation(PlanarImage image) {
-        BufferedImage bi = null;
-        final int size = instructions.size();
-        for (int i = 0; i < size; i++) {
-            ImageOperation instr = ((ImageOperation) 
instructions.elementAt(i));
+        for (ImageOperation instr : instructions) {
             if (instr instanceof DrawOperation) {
                 // If this TransformOperation has DrawOperation children
                 // then Rotate the first child and return.
                 System.out.println("Execing Draws");
                 PlanarImage op = ((DrawOperation) 
instr).executeDrawOperation();
-                image = performRotate(op);
-                return image;
-            } else if (instr instanceof TransformOperation) {
-                bi = image.getAsBufferedImage();
+                return performRotate(op);
+            }
+            if (instr instanceof TransformOperation) {
+                BufferedImage bi = image.getAsBufferedImage();
                 System.out.println("Execing Transforms");
                 image = ((TransformOperation) instr)
                     
.executeTransformOperation(PlanarImage.wrapRenderedImage(bi));
-                bi = image.getAsBufferedImage();
             }
         }
         System.out.println("Execing as TransformOperation");
@@ -100,16 +97,14 @@ public class Rotate extends TransformOperation implements 
DrawOperation {
      *  ONE image.
      * @return the image.
      */
+    @Override
     public PlanarImage executeDrawOperation() {
-        final int size = instructions.size();
-        for (int i = 0; i < size; i++) {
-            ImageOperation instr = ((ImageOperation) 
instructions.elementAt(i));
+        for (ImageOperation instr : instructions) {
             if (instr instanceof DrawOperation) {
                 // If this TransformOperation has DrawOperation children
                 // then Rotate the first child and return.
                 PlanarImage op = ((DrawOperation) 
instr).executeDrawOperation();
-                op = performRotate(op);
-                return op;
+                return performRotate(op);
             }
         }
         return null;

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/optional/image/Scale.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/optional/image/Scale.java 
b/src/main/org/apache/tools/ant/types/optional/image/Scale.java
index 532694d..156e47f 100644
--- a/src/main/org/apache/tools/ant/types/optional/image/Scale.java
+++ b/src/main/org/apache/tools/ant/types/optional/image/Scale.java
@@ -41,8 +41,9 @@ public class Scale extends TransformOperation implements 
DrawOperation {
     /** Enumerated class for proportions attribute. */
     public static class ProportionsAttribute extends EnumeratedAttribute {
         /** {@inheritDoc}. */
+        @Override
         public String[] getValues() {
-            return new String[] {"ignore", "width", "height", "cover", "fit"};
+            return new String[] { "ignore", "width", "height", "cover", "fit" 
};
         }
     }
 
@@ -76,16 +77,14 @@ public class Scale extends TransformOperation implements 
DrawOperation {
      * @return the value converted from the width string.
      */
     public float getWidth() {
-        float width = 0.0F;
         int percIndex = widthStr.indexOf('%');
         if (percIndex > 0) {
-            width = Float.parseFloat(widthStr.substring(0, percIndex));
             xPercent = true;
+            float width = Float.parseFloat(widthStr.substring(0, percIndex));
             return width / HUNDRED;
-        } else {
-            xPercent = false;
-            return Float.parseFloat(widthStr);
         }
+        xPercent = false;
+        return Float.parseFloat(widthStr);
     }
 
     /**
@@ -95,13 +94,12 @@ public class Scale extends TransformOperation implements 
DrawOperation {
     public float getHeight() {
         int percIndex = heightStr.indexOf('%');
         if (percIndex > 0) {
-            float height = Float.parseFloat(heightStr.substring(0, percIndex));
             yPercent = true;
+            float height = Float.parseFloat(heightStr.substring(0, percIndex));
             return height / HUNDRED;
-        } else {
-            yPercent = false;
-            return Float.parseFloat(heightStr);
         }
+        yPercent = false;
+        return Float.parseFloat(heightStr);
     }
 
     /**
@@ -116,10 +114,10 @@ public class Scale extends TransformOperation implements 
DrawOperation {
         float yFl = getHeight();
 
         if (!xPercent) {
-            xFl = (xFl / image.getWidth());
+            xFl = xFl / image.getWidth();
         }
         if (!yPercent) {
-            yFl = (yFl / image.getHeight());
+            yFl = yFl / image.getHeight();
         }
 
         if ("width".equals(proportions)) {
@@ -134,8 +132,8 @@ public class Scale extends TransformOperation implements 
DrawOperation {
             xFl = yFl;
         }
 
-        pb.add(new Float(xFl));
-        pb.add(new Float(yFl));
+        pb.add(Float.valueOf(xFl));
+        pb.add(Float.valueOf(yFl));
 
         log("\tScaling to " + (xFl * HUNDRED) + "% x "
             + (yFl * HUNDRED) + "%");
@@ -145,18 +143,16 @@ public class Scale extends TransformOperation implements 
DrawOperation {
 
 
     /** {@inheritDoc}. */
+    @Override
     public PlanarImage executeTransformOperation(PlanarImage image) {
-        BufferedImage bi = null;
-        final int size = instructions.size();
-        for (int i = 0; i < size; i++) {
-            ImageOperation instr = ((ImageOperation) 
instructions.elementAt(i));
+        for (ImageOperation instr : instructions) {
             if (instr instanceof DrawOperation) {
                 return performScale(image);
-            } else if (instr instanceof TransformOperation) {
-                bi = image.getAsBufferedImage();
+            }
+            if (instr instanceof TransformOperation) {
+                BufferedImage bi = image.getAsBufferedImage();
                 image = ((TransformOperation) instr)
                     
.executeTransformOperation(PlanarImage.wrapRenderedImage(bi));
-                bi = image.getAsBufferedImage();
             }
         }
         return performScale(image);
@@ -164,10 +160,9 @@ public class Scale extends TransformOperation implements 
DrawOperation {
 
 
     /** {@inheritDoc}. */
+    @Override
     public PlanarImage executeDrawOperation() {
-        final int size = instructions.size();
-        for (int i = 0; i < size; i++) {
-            ImageOperation instr = ((ImageOperation) 
instructions.elementAt(i));
+        for (ImageOperation instr : instructions) {
             if (instr instanceof DrawOperation) {
                 PlanarImage image = null;
                 // If this TransformOperation has DrawOperation children

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/optional/image/Text.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/optional/image/Text.java 
b/src/main/org/apache/tools/ant/types/optional/image/Text.java
index 869fbac..d862459 100644
--- a/src/main/org/apache/tools/ant/types/optional/image/Text.java
+++ b/src/main/org/apache/tools/ant/types/optional/image/Text.java
@@ -92,6 +92,7 @@ public class Text extends ImageOperation implements 
DrawOperation {
      * Draw the text.
      * @return the resultant image.
      */
+    @Override
     public PlanarImage executeDrawOperation() {
         log("\tCreating Text \"" + strText + "\"");
 
@@ -100,19 +101,18 @@ public class Text extends ImageOperation implements 
DrawOperation {
         int height = 1;
 
         BufferedImage bi = new BufferedImage(width, height, 
BufferedImage.TYPE_4BYTE_ABGR_PRE);
-        Graphics2D graphics = (Graphics2D) bi.getGraphics();
+        Graphics2D graphics = bi.createGraphics();
         graphics.setRenderingHint(
             RenderingHints.KEY_ANTIALIASING, 
RenderingHints.VALUE_ANTIALIAS_ON);
         graphics.setRenderingHint(
             RenderingHints.KEY_FRACTIONALMETRICS, 
RenderingHints.VALUE_FRACTIONALMETRICS_ON);
-        Font f = new Font(font, Font.PLAIN, point);
+        Font f = createFont();
         FontMetrics fmetrics = graphics.getFontMetrics(f);
         height = fmetrics.getMaxAscent() + fmetrics.getMaxDescent();
         width = fmetrics.stringWidth(strText);
 
-
         bi = new BufferedImage(width, height, 
BufferedImage.TYPE_4BYTE_ABGR_PRE);
-        graphics = (Graphics2D) bi.getGraphics();
+        graphics = bi.createGraphics();
 
         graphics.setRenderingHint(
             RenderingHints.KEY_ANTIALIASING, 
RenderingHints.VALUE_ANTIALIAS_ON);
@@ -122,7 +122,17 @@ public class Text extends ImageOperation implements 
DrawOperation {
         graphics.setFont(f);
         graphics.setColor(couloir);
         graphics.drawString(strText, 0, height - fmetrics.getMaxDescent());
-        PlanarImage image = PlanarImage.wrapRenderedImage(bi);
-        return image;
+        return PlanarImage.wrapRenderedImage(bi);
+    }
+
+    private Font createFont() {
+        int style = Font.PLAIN;
+        if (bold) {
+            style |= Font.BOLD;
+        }
+        if (italic) {
+            style |= Font.ITALIC;
+        }
+        return new Font(font, style, point);
     }
 }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/optional/image/TransformOperation.java
----------------------------------------------------------------------
diff --git 
a/src/main/org/apache/tools/ant/types/optional/image/TransformOperation.java 
b/src/main/org/apache/tools/ant/types/optional/image/TransformOperation.java
index 896e5d1..3429ba7 100644
--- a/src/main/org/apache/tools/ant/types/optional/image/TransformOperation.java
+++ b/src/main/org/apache/tools/ant/types/optional/image/TransformOperation.java
@@ -32,6 +32,7 @@ public abstract class TransformOperation extends 
ImageOperation {
     public abstract PlanarImage executeTransformOperation(PlanarImage img);
 
      /** {@inheritDoc}. */
+    @Override
     public void addRectangle(Rectangle instr) {
         instructions.add(instr);
     }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/optional/xz/XzResource.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/optional/xz/XzResource.java 
b/src/main/org/apache/tools/ant/types/optional/xz/XzResource.java
index dfd02e7..8f2908e 100644
--- a/src/main/org/apache/tools/ant/types/optional/xz/XzResource.java
+++ b/src/main/org/apache/tools/ant/types/optional/xz/XzResource.java
@@ -20,6 +20,8 @@ package org.apache.tools.ant.types.optional.xz;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+
+import org.apache.tools.ant.types.ResourceCollection;
 import org.apache.tools.ant.types.resources.CompressedResource;
 import org.tukaani.xz.LZMA2Options;
 import org.tukaani.xz.XZInputStream;
@@ -43,7 +45,7 @@ public class XzResource extends CompressedResource {
      * Constructor with another resource to wrap.
      * @param other the resource to wrap.
      */
-    public XzResource(org.apache.tools.ant.types.ResourceCollection other) {
+    public XzResource(ResourceCollection other) {
         super(other);
     }
 
@@ -53,6 +55,7 @@ public class XzResource extends CompressedResource {
      * @return the wrapped stream.
      * @throws IOException if there is a problem.
      */
+    @Override
     protected InputStream wrapStream(InputStream in) throws IOException {
         return new XZInputStream(in);
     }
@@ -63,7 +66,8 @@ public class XzResource extends CompressedResource {
      * @return the wrapped stream.
      * @throws IOException if there is a problem.
      */
-     protected OutputStream wrapStream(OutputStream out) throws IOException {
+     @Override
+    protected OutputStream wrapStream(OutputStream out) throws IOException {
         return new XZOutputStream(out, new LZMA2Options());
     }
 
@@ -71,6 +75,7 @@ public class XzResource extends CompressedResource {
      * Get the name of the compression method.
      * @return the string "XZ".
      */
+    @Override
     protected String getCompressionName() {
         return "XZ";
     }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/resolver/ApacheCatalog.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/resolver/ApacheCatalog.java 
b/src/main/org/apache/tools/ant/types/resolver/ApacheCatalog.java
index cbf3f3f..6097b83 100644
--- a/src/main/org/apache/tools/ant/types/resolver/ApacheCatalog.java
+++ b/src/main/org/apache/tools/ant/types/resolver/ApacheCatalog.java
@@ -54,6 +54,7 @@ public class ApacheCatalog extends Catalog {
      *  will be a total of two ApacheCatalog instances, and so on.</p>
      * @return the catalog.
      */
+    @Override
     protected Catalog newCatalog() {
         final ApacheCatalog cat = (ApacheCatalog) super.newCatalog();
         cat.setResolver(resolver);
@@ -85,6 +86,7 @@ public class ApacheCatalog extends Catalog {
      *
      * @param entry The CatalogEntry to process.
      */
+    @Override
     public void addEntry(final CatalogEntry entry) {
 
         final int type = entry.getEntryType();

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/resolver/ApacheCatalogResolver.java
----------------------------------------------------------------------
diff --git 
a/src/main/org/apache/tools/ant/types/resolver/ApacheCatalogResolver.java 
b/src/main/org/apache/tools/ant/types/resolver/ApacheCatalogResolver.java
index 2312d3d..1a7b44c 100644
--- a/src/main/org/apache/tools/ant/types/resolver/ApacheCatalogResolver.java
+++ b/src/main/org/apache/tools/ant/types/resolver/ApacheCatalogResolver.java
@@ -19,7 +19,6 @@
 package org.apache.tools.ant.types.resolver;
 
 import java.io.IOException;
-import java.net.MalformedURLException;
 import java.net.URL;
 
 import org.apache.tools.ant.BuildException;
@@ -104,7 +103,7 @@ public class ApacheCatalogResolver extends CatalogResolver {
 
         final Catalog catalog = getCatalog();
         if (!(catalog instanceof ApacheCatalog)) {
-            throw new BuildException("Wrong catalog type found: " + 
catalog.getClass().getName());
+            throw new BuildException("Wrong catalog type found: %s", 
catalog.getClass().getName());
         }
         final ApacheCatalog apacheCatalog = (ApacheCatalog) catalog;
 
@@ -113,9 +112,7 @@ public class ApacheCatalogResolver extends CatalogResolver {
 
         try {
             apacheCatalog.parseCatalog(file);
-        } catch (final MalformedURLException ex) {
-            throw new BuildException(ex);
-        } catch (final IOException ex) {
+        } catch (IOException ex) {
             throw new BuildException(ex);
         }
     }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/resources/AbstractClasspathResource.java
----------------------------------------------------------------------
diff --git 
a/src/main/org/apache/tools/ant/types/resources/AbstractClasspathResource.java 
b/src/main/org/apache/tools/ant/types/resources/AbstractClasspathResource.java
index 417da9a..d37e5ee 100644
--- 
a/src/main/org/apache/tools/ant/types/resources/AbstractClasspathResource.java
+++ 
b/src/main/org/apache/tools/ant/types/resources/AbstractClasspathResource.java
@@ -151,14 +151,10 @@ public abstract class AbstractClasspathResource extends 
Resource {
             return  ((Resource) getCheckedRef()).isExists();
         }
         dieOnCircularReference();
-        InputStream is = null;
-        try {
-            is = getInputStream();
+        try (InputStream is = getInputStream()) {
             return is != null;
         } catch (IOException ex) {
             return false;
-        } finally {
-            FileUtils.close(is);
         }
     }
 
@@ -177,18 +173,21 @@ public abstract class AbstractClasspathResource extends 
Resource {
         return !classLoader.needsCleanup()
             ? openInputStream(classLoader.getLoader())
             : new FilterInputStream(openInputStream(classLoader.getLoader())) {
-                    public void close() throws IOException {
-                        FileUtils.close(in);
-                        classLoader.cleanup();
-                    }
-                    protected void finalize() throws Throwable {
-                        try {
-                            close();
-                        } finally {
-                            super.finalize();
-                        }
+                @Override
+                public void close() throws IOException {
+                    FileUtils.close(in);
+                    classLoader.cleanup();
+                }
+
+                @Override
+                protected void finalize() throws Throwable {
+                    try {
+                        close();
+                    } finally {
+                        super.finalize();
                     }
-                };
+                }
+            };
     }
 
     /**
@@ -198,10 +197,10 @@ public abstract class AbstractClasspathResource extends 
Resource {
      */
     protected ClassLoaderWithFlag getClassLoader() {
         ClassLoader cl = null;
-        boolean clNeedsCleanup = false;
         if (loader != null) {
             cl = (ClassLoader) loader.getReferencedObject();
         }
+        boolean clNeedsCleanup = false;
         if (cl == null) {
             if (getClasspath() != null) {
                 Path p = getClasspath().concatSystemClasspath("ignore");
@@ -254,8 +253,15 @@ public abstract class AbstractClasspathResource extends 
Resource {
             loader = l;
             cleanup = needsCleanup && l instanceof AntClassLoader;
         }
-        public ClassLoader getLoader() { return loader; }
-        public boolean needsCleanup() { return cleanup; }
+
+        public ClassLoader getLoader() {
+            return loader;
+        }
+
+        public boolean needsCleanup() {
+            return cleanup;
+        }
+
         public void cleanup() {
             if (cleanup) {
                 ((AntClassLoader) loader).cleanup();

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/resources/AbstractResourceCollectionWrapper.java
----------------------------------------------------------------------
diff --git 
a/src/main/org/apache/tools/ant/types/resources/AbstractResourceCollectionWrapper.java
 
b/src/main/org/apache/tools/ant/types/resources/AbstractResourceCollectionWrapper.java
index 5e4c3a3..b73d99c 100644
--- 
a/src/main/org/apache/tools/ant/types/resources/AbstractResourceCollectionWrapper.java
+++ 
b/src/main/org/apache/tools/ant/types/resources/AbstractResourceCollectionWrapper.java
@@ -20,6 +20,7 @@ package org.apache.tools.ant.types.resources;
 import java.io.File;
 import java.util.Iterator;
 import java.util.Stack;
+import java.util.stream.Collectors;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
@@ -85,6 +86,7 @@ public abstract class AbstractResourceCollectionWrapper
      * Fulfill the ResourceCollection contract.
      * @return an Iterator of Resources.
      */
+    @Override
     public final synchronized Iterator<Resource> iterator() {
         if (isReference()) {
             return ((AbstractResourceCollectionWrapper) 
getCheckedRef()).iterator();
@@ -107,6 +109,7 @@ public abstract class AbstractResourceCollectionWrapper
      * Fulfill the ResourceCollection contract.
      * @return number of elements as int.
      */
+    @Override
     public synchronized int size() {
         if (isReference()) {
             return ((AbstractResourceCollectionWrapper) 
getCheckedRef()).size();
@@ -182,24 +185,19 @@ public abstract class AbstractResourceCollectionWrapper
     }
 
     /**
-     * Format this BaseResourceCollectionWrapper as a String.
+     * Format this AbstractResourceCollectionWrapper as a String.
      * @return a descriptive <code>String</code>.
      */
+    @Override
     public synchronized String toString() {
         if (isReference()) {
             return getCheckedRef().toString();
         }
-        if (getSize() == 0) {
+        if (isEmpty()) {
             return "";
         }
-        StringBuilder sb = new StringBuilder();
-        for (Resource resource : this) {
-            if (sb.length() > 0) {
-                sb.append(File.pathSeparatorChar);
-            }
-            sb.append(resource);
-        }
-        return sb.toString();
+        return stream().map(Object::toString)
+            .collect(Collectors.joining(File.pathSeparator));
     }
 
     private BuildException oneNested() {

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/resources/AllButFirst.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/resources/AllButFirst.java 
b/src/main/org/apache/tools/ant/types/resources/AllButFirst.java
index ffa665f..f6bcf49 100644
--- a/src/main/org/apache/tools/ant/types/resources/AllButFirst.java
+++ b/src/main/org/apache/tools/ant/types/resources/AllButFirst.java
@@ -17,10 +17,8 @@
  */
 package org.apache.tools.ant.types.resources;
 
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
+import java.util.stream.Collectors;
 
 import org.apache.tools.ant.types.Resource;
 
@@ -36,25 +34,15 @@ public class AllButFirst extends SizeLimitCollection {
      * Take all elements except for the first <code>count</code> elements.
      * @return a Collection of Resources.
      */
+    @Override
     protected Collection<Resource> getCollection() {
-        int ct = getValidCount();
-        Iterator<Resource> iter = getResourceCollection().iterator();
-        List<Resource> al = new ArrayList<Resource>();
-        for (int i = 0; i < ct && iter.hasNext(); i++) {
-            // discard
-            iter.next();
-        }
-        while (iter.hasNext()) {
-            al.add(iter.next());
-        }
-        return al;
+        return getResourceCollection().stream().skip(getValidCount())
+            .collect(Collectors.toList());
     }
 
     @Override
     public synchronized int size() {
-        int sz = getResourceCollection().size();
-        int ct = getValidCount();
-        return sz > ct ? sz - ct : 0;
+        return (int) 
getResourceCollection().stream().skip(getValidCount()).count();
     }
 
 }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/resources/AllButLast.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/resources/AllButLast.java 
b/src/main/org/apache/tools/ant/types/resources/AllButLast.java
index a1e6a98..03f665e 100644
--- a/src/main/org/apache/tools/ant/types/resources/AllButLast.java
+++ b/src/main/org/apache/tools/ant/types/resources/AllButLast.java
@@ -18,10 +18,11 @@
 package org.apache.tools.ant.types.resources;
 
 import java.util.Collection;
-import java.util.List;
+import java.util.Collections;
+import java.util.stream.Collectors;
 
 import org.apache.tools.ant.types.Resource;
-import org.apache.tools.ant.util.CollectionUtils;
+import org.apache.tools.ant.types.ResourceCollection;
 
 /**
  * ResourceCollection that contains all resources of another
@@ -35,19 +36,20 @@ public class AllButLast extends SizeLimitCollection {
      * Take all elements except for the last <code>count</code> elements.
      * @return a Collection of Resources.
      */
+    @Override
     protected Collection<Resource> getCollection() {
         int ct = getValidCount();
-        List<Resource> result =
-            (List<Resource>) 
CollectionUtils.asCollection(getResourceCollection()
-                                                          .iterator());
-        return result.subList(0, result.size() - ct);
+        ResourceCollection nested = getResourceCollection();
+        if (ct > nested.size()) {
+            return Collections.emptyList();
+        }
+        return nested.stream().limit((long) nested.size() - ct)
+            .collect(Collectors.toList());
     }
 
     @Override
     public synchronized int size() {
-        int sz = getResourceCollection().size();
-        int ct = getValidCount();
-        return sz > ct ? sz - ct : 0;
+        return Math.max(getResourceCollection().size() - getValidCount(), 0);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/resources/ArchiveResource.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/resources/ArchiveResource.java 
b/src/main/org/apache/tools/ant/types/resources/ArchiveResource.java
index 09ce032..9fe16ab 100644
--- a/src/main/org/apache/tools/ant/types/resources/ArchiveResource.java
+++ b/src/main/org/apache/tools/ant/types/resources/ArchiveResource.java
@@ -103,12 +103,12 @@ public abstract class ArchiveResource extends Resource {
     public void addConfigured(ResourceCollection a) {
         checkChildrenAllowed();
         if (archive != null) {
-            throw new BuildException("you must not specify more than one"
-                                     + " archive");
+            throw new BuildException(
+                "you must not specify more than one archive");
         }
         if (a.size() != 1) {
-            throw new BuildException("only single argument resource 
collections"
-                                     + " are supported as archives");
+            throw new BuildException(
+                "only single argument resource collections are supported as 
archives");
         }
         archive = a.iterator().next();
     }
@@ -118,17 +118,17 @@ public abstract class ArchiveResource extends Resource {
      * @return the archive as a Resource.
      */
     public Resource getArchive() {
-        return isReference()
-            ? ((ArchiveResource) getCheckedRef()).getArchive() : archive;
+        return isReference() ? getCheckedRef().getArchive() : archive;
     }
 
     /**
      * Get the last modified date of this Resource.
      * @return the last modification date.
      */
+    @Override
     public long getLastModified() {
         if (isReference()) {
-            return ((Resource) getCheckedRef()).getLastModified();
+            return getCheckedRef().getLastModified();
         }
         checkEntry();
         return super.getLastModified();
@@ -138,9 +138,10 @@ public abstract class ArchiveResource extends Resource {
      * Get the size of this Resource.
      * @return the long size of this Resource.
      */
+    @Override
     public long getSize() {
         if (isReference()) {
-            return ((Resource) getCheckedRef()).getSize();
+            return getCheckedRef().getSize();
         }
         checkEntry();
         return super.getSize();
@@ -150,9 +151,10 @@ public abstract class ArchiveResource extends Resource {
      * Learn whether this Resource represents a directory.
      * @return boolean flag indicating whether the entry is a directory.
      */
+    @Override
     public boolean isDirectory() {
         if (isReference()) {
-            return ((Resource) getCheckedRef()).isDirectory();
+            return getCheckedRef().isDirectory();
         }
         checkEntry();
         return super.isDirectory();
@@ -162,9 +164,10 @@ public abstract class ArchiveResource extends Resource {
      * Find out whether this Resource represents an existing Resource.
      * @return boolean existence flag.
      */
+    @Override
     public boolean isExists() {
         if (isReference()) {
-            return ((Resource) getCheckedRef()).isExists();
+            return getCheckedRef().isExists();
         }
         checkEntry();
         return super.isExists();
@@ -176,7 +179,7 @@ public abstract class ArchiveResource extends Resource {
      */
     public int getMode() {
         if (isReference()) {
-            return ((ArchiveResource) getCheckedRef()).getMode();
+            return getCheckedRef().getMode();
         }
         checkEntry();
         return mode;
@@ -186,6 +189,7 @@ public abstract class ArchiveResource extends Resource {
      * Overrides the super version.
      * @param r the Reference to set.
      */
+    @Override
     public void setRefid(Reference r) {
         if (archive != null || modeSet) {
             throw tooManyAttributes();
@@ -199,6 +203,7 @@ public abstract class ArchiveResource extends Resource {
      * @return a negative integer, zero, or a positive integer as this Resource
      *         is less than, equal to, or greater than the specified Resource.
      */
+    @Override
     public int compareTo(Resource another) {
         return this.equals(another) ? 0 : super.compareTo(another);
     }
@@ -209,6 +214,7 @@ public abstract class ArchiveResource extends Resource {
      * @return true if another is a Resource representing
      *              the same entry in the same archive.
      */
+    @Override
     public boolean equals(Object another) {
         if (this == another) {
             return true;
@@ -216,7 +222,7 @@ public abstract class ArchiveResource extends Resource {
         if (isReference()) {
             return getCheckedRef().equals(another);
         }
-        if (another == null || another.getClass() != getClass()) {
+        if (another == null || !another.getClass().equals(getClass())) {
             return false;
         }
         ArchiveResource r = (ArchiveResource) another;
@@ -228,6 +234,7 @@ public abstract class ArchiveResource extends Resource {
      * Get the hash code for this Resource.
      * @return hash code as int.
      */
+    @Override
     public int hashCode() {
         return super.hashCode()
             * (getArchive() == null ? NULL_ARCHIVE : getArchive().hashCode());
@@ -237,6 +244,7 @@ public abstract class ArchiveResource extends Resource {
      * Format this Resource as a String.
      * @return String representatation of this Resource.
      */
+    @Override
     public String toString() {
         return isReference() ? getCheckedRef().toString()
             : getArchive().toString() + ':' + getName();
@@ -260,10 +268,10 @@ public abstract class ArchiveResource extends Resource {
             throw new BuildException("archive attribute not set");
         }
         if (!r.isExists()) {
-            throw new BuildException(r.toString() + " does not exist.");
+            throw new BuildException("%s does not exist.", r);
         }
         if (r.isDirectory()) {
-            throw new BuildException(r + " denotes a directory.");
+            throw new BuildException("%s denotes a directory.", r);
         }
         fetchEntry();
         haveEntry = true;
@@ -277,6 +285,7 @@ public abstract class ArchiveResource extends Resource {
     /**
      * {@inheritDoc}
      */
+    @Override
     protected synchronized void dieOnCircularReference(Stack<Object> stk, 
Project p) {
         if (isChecked()) {
             return;
@@ -290,4 +299,9 @@ public abstract class ArchiveResource extends Resource {
             setChecked(true);
         }
     }
+
+    @Override
+    protected ArchiveResource getCheckedRef() {
+        return (ArchiveResource) super.getCheckedRef();
+    }
 }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/resources/Archives.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/resources/Archives.java 
b/src/main/org/apache/tools/ant/types/resources/Archives.java
index 4b0d51c..f47676f 100644
--- a/src/main/org/apache/tools/ant/types/resources/Archives.java
+++ b/src/main/org/apache/tools/ant/types/resources/Archives.java
@@ -21,6 +21,7 @@ import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Stack;
+import java.util.stream.Stream;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
@@ -31,7 +32,6 @@ import org.apache.tools.ant.types.Resource;
 import org.apache.tools.ant.types.ResourceCollection;
 import org.apache.tools.ant.types.TarFileSet;
 import org.apache.tools.ant.types.ZipFileSet;
-import org.apache.tools.ant.util.CollectionUtils;
 
 /**
  * A resource collection that treats all nested resources as archives
@@ -72,16 +72,13 @@ public class Archives extends DataType
     /**
      * Sums the sizes of nested archives.
      */
+    @Override
     public int size() {
         if (isReference()) {
-            return ((Archives) getCheckedRef()).size();
+            return getCheckedRef().size();
         }
         dieOnCircularReference();
-        int total = 0;
-        for (final Iterator<ArchiveFileSet> i = grabArchives(); i.hasNext();) {
-            total += i.next().size();
-        }
-        return total;
+        return streamArchives().mapToInt(ArchiveFileSet::size).sum();
     }
 
     /**
@@ -89,15 +86,11 @@ public class Archives extends DataType
      */
     public Iterator<Resource> iterator() {
         if (isReference()) {
-            return ((Archives) getCheckedRef()).iterator();
+            return getCheckedRef().iterator();
         }
         dieOnCircularReference();
-        final List<Resource> l = new LinkedList<Resource>();
-        for (final Iterator<ArchiveFileSet> i = grabArchives(); i.hasNext();) {
-            l.addAll(CollectionUtils
-                     .asCollection(i.next().iterator()));
-        }
-        return l.iterator();
+        return streamArchives().flatMap(ResourceCollection::stream)
+            .map(Resource.class::cast).iterator();
     }
 
     /**
@@ -105,9 +98,10 @@ public class Archives extends DataType
      */
     public boolean isFilesystemOnly() {
         if (isReference()) {
-            return ((Archives) getCheckedRef()).isFilesystemOnly();
+            return getCheckedRef().isFilesystemOnly();
         }
         dieOnCircularReference();
+        // TODO check each archive in turn?
         return false;
     }
 
@@ -117,8 +111,8 @@ public class Archives extends DataType
      */
     @Override
     public void setRefid(final Reference r) {
-        if (zips.getResourceCollections().size() > 0
-            || tars.getResourceCollections().size() > 0) {
+        if (!(zips.getResourceCollections().isEmpty()
+            && tars.getResourceCollections().isEmpty())) {
             throw tooManyAttributes();
         }
         super.setRefid(r);
@@ -130,7 +124,7 @@ public class Archives extends DataType
      * @return a cloned instance.
      */
     @Override
-    public Object clone() {
+    public Archives clone() {
         try {
             final Archives a = (Archives) super.clone();
             a.zips = (Union) zips.clone();
@@ -148,14 +142,20 @@ public class Archives extends DataType
      * and returns an iterator over the collected archives.
      */
     protected Iterator<ArchiveFileSet> grabArchives() {
-        final List<ArchiveFileSet> l = new LinkedList<ArchiveFileSet>();
+        return streamArchives().iterator();
+    }
+
+    // TODO this is a pretty expensive operation and so the result
+    // should be cached.
+    private Stream<ArchiveFileSet> streamArchives() {
+        final List<ArchiveFileSet> l = new LinkedList<>();
         for (final Resource r : zips) {
             l.add(configureArchive(new ZipFileSet(), r));
         }
         for (final Resource r : tars) {
             l.add(configureArchive(new TarFileSet(), r));
         }
-        return l.iterator();
+        return l.stream();
     }
 
     /**
@@ -190,5 +190,10 @@ public class Archives extends DataType
             setChecked(true);
         }
     }
+    
+    @Override
+    protected Archives getCheckedRef() {
+        return (Archives) super.getCheckedRef();
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/resources/BCFileSet.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/resources/BCFileSet.java 
b/src/main/org/apache/tools/ant/types/resources/BCFileSet.java
index aa99a4a..6d8aaf8 100644
--- a/src/main/org/apache/tools/ant/types/resources/BCFileSet.java
+++ b/src/main/org/apache/tools/ant/types/resources/BCFileSet.java
@@ -47,6 +47,7 @@ public class BCFileSet extends FileSet {
      * @return an Iterator of Resources.
      * @since Ant 1.7
      */
+    @Override
     public Iterator<Resource> iterator() {
         if (isReference()) {
             return ((FileSet) getRef(getProject())).iterator();
@@ -62,6 +63,7 @@ public class BCFileSet extends FileSet {
      * @return number of elements as int.
      * @since Ant 1.7
      */
+    @Override
     public int size() {
         if (isReference()) {
             return ((FileSet) getRef(getProject())).size();

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/resources/BZip2Resource.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/resources/BZip2Resource.java 
b/src/main/org/apache/tools/ant/types/resources/BZip2Resource.java
index 0c2dd4b..787407b 100644
--- a/src/main/org/apache/tools/ant/types/resources/BZip2Resource.java
+++ b/src/main/org/apache/tools/ant/types/resources/BZip2Resource.java
@@ -53,6 +53,7 @@ public class BZip2Resource extends CompressedResource {
      * @return the wrapped stream.
      * @throws IOException if there is a problem.
      */
+    @Override
     protected InputStream wrapStream(InputStream in) throws IOException {
         for (int i = 0; i < MAGIC.length; i++) {
             if (in.read() != MAGIC[i]) {
@@ -68,6 +69,7 @@ public class BZip2Resource extends CompressedResource {
      * @return the wrapped stream.
      * @throws IOException if there is a problem.
      */
+    @Override
     protected OutputStream wrapStream(OutputStream out) throws IOException {
         for (int i = 0; i < MAGIC.length; i++) {
             out.write(MAGIC[i]);
@@ -79,6 +81,7 @@ public class BZip2Resource extends CompressedResource {
      * Get the name of the compression method.
      * @return the string "Bzip2".
      */
+    @Override
     protected String getCompressionName() {
         return "Bzip2";
     }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionContainer.java
----------------------------------------------------------------------
diff --git 
a/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionContainer.java
 
b/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionContainer.java
index 281fa0f..e394ba9 100644
--- 
a/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionContainer.java
+++ 
b/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionContainer.java
@@ -24,6 +24,7 @@ import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Stack;
+import java.util.stream.Collectors;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
@@ -37,7 +38,7 @@ import org.apache.tools.ant.types.ResourceCollection;
  */
 public abstract class BaseResourceCollectionContainer
         extends DataType implements ResourceCollection, Cloneable {
-    private List<ResourceCollection> rc = new ArrayList<ResourceCollection>();
+    private List<ResourceCollection> rc = new ArrayList<>();
     private Collection<Resource> coll = null;
     private boolean cache = true;
 
@@ -45,7 +46,6 @@ public abstract class BaseResourceCollectionContainer
      * Create a new BaseResourceCollectionContainer.
      */
     public BaseResourceCollectionContainer() {
-        // TODO Auto-generated constructor stub
     }
 
     /**
@@ -120,9 +120,7 @@ public abstract class BaseResourceCollectionContainer
             throw noChildrenAllowed();
         }
         try {
-            for (ResourceCollection resourceCollection : c) {
-                add(resourceCollection);
-            }
+            c.forEach(this::add);
         } catch (ClassCastException e) {
             throw new BuildException(e);
         }
@@ -134,9 +132,10 @@ public abstract class BaseResourceCollectionContainer
      * are added to this container while the Iterator is in use.
      * @return a "fail-fast" Iterator.
      */
+    @Override
     public final synchronized Iterator<Resource> iterator() {
         if (isReference()) {
-            return ((BaseResourceCollectionContainer) 
getCheckedRef()).iterator();
+            return getCheckedRef().iterator();
         }
         dieOnCircularReference();
         return new FailFast(this, cacheCollection().iterator());
@@ -146,9 +145,11 @@ public abstract class BaseResourceCollectionContainer
      * Fulfill the ResourceCollection contract.
      * @return number of elements as int.
      */
+    @Override
     public synchronized int size() {
         if (isReference()) {
-            return getCheckedRef(BaseResourceCollectionContainer.class, 
getDataTypeName()).size();
+            return getCheckedRef(BaseResourceCollectionContainer.class,
+                getDataTypeName()).size();
         }
         dieOnCircularReference();
         return cacheCollection().size();
@@ -158,27 +159,20 @@ public abstract class BaseResourceCollectionContainer
      * Fulfill the ResourceCollection contract.
      * @return whether this is a filesystem-only resource collection.
      */
+    @Override
     public synchronized boolean isFilesystemOnly() {
         if (isReference()) {
-            return ((BaseResourceCollectionContainer) 
getCheckedRef()).isFilesystemOnly();
+            return getCheckedRef().isFilesystemOnly();
         }
         dieOnCircularReference();
         //first the easy way, if all children are filesystem-only, return true:
-        boolean goEarly = true;
-        for (Iterator<ResourceCollection> i = rc.iterator(); goEarly && 
i.hasNext();) {
-            goEarly = i.next().isFilesystemOnly();
-        }
-        if (goEarly) {
+        if (rc.stream().allMatch(ResourceCollection::isFilesystemOnly)) {
             return true;
         }
         /* now check each Resource in case the child only
            lets through files from any children IT may have: */
-        for (Resource r : cacheCollection()) {
-            if (r.as(FileProvider.class) == null) {
-                return false;
-            }
-        }
-        return true;
+        return cacheCollection().stream()
+            .allMatch(r -> r.asOptional(FileProvider.class).isPresent());
     }
 
     /**
@@ -225,11 +219,12 @@ public abstract class BaseResourceCollectionContainer
      * collections is shallowly cloned.
      * @return a cloned instance.
      */
-    public Object clone() {
+    @Override
+    public BaseResourceCollectionContainer clone() {
         try {
             BaseResourceCollectionContainer c
                 = (BaseResourceCollectionContainer) super.clone();
-            c.rc = new ArrayList<ResourceCollection>(rc);
+            c.rc = new ArrayList<>(rc);
             c.coll = null;
             return c;
         } catch (CloneNotSupportedException e) {
@@ -241,21 +236,21 @@ public abstract class BaseResourceCollectionContainer
      * Format this BaseResourceCollectionContainer as a String.
      * @return a descriptive <code>String</code>.
      */
+    @Override
     public synchronized String toString() {
         if (isReference()) {
             return getCheckedRef().toString();
         }
-        if (cacheCollection().size() == 0) {
+        if (cacheCollection().isEmpty()) {
             return "";
         }
-        StringBuilder sb = new StringBuilder();
-        for (Resource resource : coll) {
-            if (sb.length() > 0) {
-                sb.append(File.pathSeparatorChar);
-            }
-            sb.append(resource);
-        }
-        return sb.toString();
+        return coll.stream().map(Object::toString)
+            .collect(Collectors.joining(File.pathSeparator));
+    }
+    
+    @Override
+    protected BaseResourceCollectionContainer getCheckedRef() {
+        return (BaseResourceCollectionContainer) super.getCheckedRef();
     }
 
     private synchronized Collection<Resource> cacheCollection() {

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionWrapper.java
----------------------------------------------------------------------
diff --git 
a/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionWrapper.java
 
b/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionWrapper.java
index 78ba95e..0bec29f 100644
--- 
a/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionWrapper.java
+++ 
b/src/main/org/apache/tools/ant/types/resources/BaseResourceCollectionWrapper.java
@@ -32,10 +32,12 @@ public abstract class BaseResourceCollectionWrapper
 
     private Collection<Resource> coll = null;
 
+    @Override
     protected Iterator<Resource> createIterator() {
         return cacheCollection().iterator();
     }
 
+    @Override
        protected int getSize() {
         return cacheCollection().size();
     }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/resources/CompressedResource.java
----------------------------------------------------------------------
diff --git 
a/src/main/org/apache/tools/ant/types/resources/CompressedResource.java 
b/src/main/org/apache/tools/ant/types/resources/CompressedResource.java
index 2c72c26..d77c16c 100644
--- a/src/main/org/apache/tools/ant/types/resources/CompressedResource.java
+++ b/src/main/org/apache/tools/ant/types/resources/CompressedResource.java
@@ -47,6 +47,7 @@ public abstract class CompressedResource extends 
ContentTransformingResource {
      * @return this Resource formatted as a String.
      * @since Ant 1.7
      */
+    @Override
     public String toString() {
         return getCompressionName() + " compressed " + super.toString();
     }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/resources/ContentTransformingResource.java
----------------------------------------------------------------------
diff --git 
a/src/main/org/apache/tools/ant/types/resources/ContentTransformingResource.java
 
b/src/main/org/apache/tools/ant/types/resources/ContentTransformingResource.java
index 79445bf..2a00872 100644
--- 
a/src/main/org/apache/tools/ant/types/resources/ContentTransformingResource.java
+++ 
b/src/main/org/apache/tools/ant/types/resources/ContentTransformingResource.java
@@ -23,7 +23,6 @@ import java.io.OutputStream;
 
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.types.ResourceCollection;
-import org.apache.tools.ant.util.FileUtils;
 
 /**
  * A resource that transforms the content of another resource.
@@ -58,9 +57,7 @@ public abstract class ContentTransformingResource extends 
ResourceDecorator {
     @Override
     public long getSize() {
         if (isExists()) {
-            InputStream in = null;
-            try {
-                in = getInputStream();
+            try (InputStream in = getInputStream()) {
                 final byte[] buf = new byte[BUFFER_SIZE];
                 int size = 0;
                 int readNow;
@@ -69,14 +66,11 @@ public abstract class ContentTransformingResource extends 
ResourceDecorator {
                 }
                 return size;
             } catch (final IOException ex) {
-                throw new BuildException("caught exception while reading "
-                                         + getName(), ex);
-            } finally {
-                FileUtils.close(in);
+                throw new BuildException(
+                    "caught exception while reading " + getName(), ex);
             }
-        } else {
-            return 0;
         }
+        return 0;
     }
 
     /**
@@ -120,24 +114,16 @@ public abstract class ContentTransformingResource extends 
ResourceDecorator {
     public <T> T as(final Class<T> clazz) {
         if (Appendable.class.isAssignableFrom(clazz)) {
             if (isAppendSupported()) {
-                final Appendable a =
-                    getResource().as(Appendable.class);
+                final Appendable a = getResource().as(Appendable.class);
                 if (a != null) {
-                    return clazz.cast(new Appendable() {
-                        public OutputStream getAppendOutputStream()
-                                throws IOException {
-                            OutputStream out = a.getAppendOutputStream();
-                            if (out != null) {
-                                out = wrapStream(out);
-                            }
-                            return out;
-                        }
+                    return clazz.cast((Appendable) () -> {
+                        OutputStream out = a.getAppendOutputStream();
+                        return out == null ? null : wrapStream(out);
                     });
                 }
             }
             return null;
         }
-
         return FileProvider.class.isAssignableFrom(clazz)
             ? null : getResource().as(clazz);
     }

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/resources/Difference.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/resources/Difference.java 
b/src/main/org/apache/tools/ant/types/resources/Difference.java
index 3f3c983..920f9bc 100644
--- a/src/main/org/apache/tools/ant/types/resources/Difference.java
+++ b/src/main/org/apache/tools/ant/types/resources/Difference.java
@@ -38,16 +38,17 @@ public class Difference extends 
BaseResourceCollectionContainer {
      * Calculate the difference of the nested ResourceCollections.
      * @return a Collection of Resources.
      */
+    @Override
     protected Collection<Resource> getCollection() {
         List<ResourceCollection> rcs = getResourceCollections();
         int size = rcs.size();
         if (size < 2) {
-            throw new BuildException("The difference of " + size
-                + " resource collection" + ((size == 1) ? "" : "s")
-                + " is undefined.");
+            throw new BuildException(
+                "The difference of %d resource %s is undefined.", size,
+                size == 1 ? "collection" : "collections");
         }
-        Set<Resource> hs = new HashSet<Resource>();
-        List<Resource> al = new ArrayList<Resource>();
+        Set<Resource> hs = new HashSet<>();
+        List<Resource> al = new ArrayList<>();
         for (ResourceCollection rc : rcs) {
             for (Resource r : rc) {
                 if (hs.add(r)) {

http://git-wip-us.apache.org/repos/asf/ant/blob/b7d1e9bd/src/main/org/apache/tools/ant/types/resources/FailFast.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/types/resources/FailFast.java 
b/src/main/org/apache/tools/ant/types/resources/FailFast.java
index dc962bb..f8da1b9 100644
--- a/src/main/org/apache/tools/ant/types/resources/FailFast.java
+++ b/src/main/org/apache/tools/ant/types/resources/FailFast.java
@@ -32,7 +32,7 @@ import org.apache.tools.ant.types.Resource;
  * @since Ant 1.7
  */
 /*package-private*/ class FailFast implements Iterator<Resource> {
-    private static final WeakHashMap<Object, Set<FailFast>> MAP = new 
WeakHashMap<Object, Set<FailFast>>();
+    private static final WeakHashMap<Object, Set<FailFast>> MAP = new 
WeakHashMap<>();
 
     /**
      * Invalidate any in-use Iterators from the specified Object.
@@ -46,12 +46,7 @@ import org.apache.tools.ant.types.Resource;
     }
 
     private static synchronized void add(FailFast f) {
-        Set<FailFast> s = MAP.get(f.parent);
-        if (s == null) {
-            s = new HashSet<FailFast>();
-            MAP.put(f.parent, s);
-        }
-        s.add(f);
+        MAP.computeIfAbsent(f.parent, k -> new HashSet<>()).add(f);
     }
 
     private static synchronized void remove(FailFast f) {
@@ -95,6 +90,7 @@ import org.apache.tools.ant.types.Resource;
      * Fulfill the Iterator contract.
      * @return true if there are more elements.
      */
+    @Override
     public boolean hasNext() {
         if (wrapped == null) {
             return false;
@@ -108,6 +104,7 @@ import org.apache.tools.ant.types.Resource;
      * @return the next element.
      * @throws NoSuchElementException if no more elements.
      */
+    @Override
     public Resource next() {
         if (wrapped == null || !wrapped.hasNext()) {
             throw new NoSuchElementException();
@@ -127,6 +124,7 @@ import org.apache.tools.ant.types.Resource;
      * Fulfill the Iterator contract.
      * @throws UnsupportedOperationException always.
      */
+    @Override
     public void remove() {
         throw new UnsupportedOperationException();
     }

Reply via email to