From 3e101e28a9f0e3a7b08a79fcf979f8d12e3bdbb5 Mon Sep 17 00:00:00 2001 From: Kui LIU Date: Wed, 11 Oct 2017 14:42:46 +0200 Subject: [PATCH] Fix the inefficient use of keySet iterator with entrySet iterator. The current source code accesses the key and value of a Hashtable entry, using a key that is retrieved from a keySet iterator. It is more efficient to use an iterator on the entrySet of the Hashtable, to avoid the Map.get(key) lookup. http://findbugs.sourceforge.net/bugDescriptions.html#WMI_WRONG_MAP_ITERATOR --- src/main/org/apache/tools/ant/taskdefs/Move.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/org/apache/tools/ant/taskdefs/Move.java b/src/main/org/apache/tools/ant/taskdefs/Move.java index 47d40e06b..37ef1c767 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Move.java +++ b/src/main/org/apache/tools/ant/taskdefs/Move.java @@ -105,8 +105,9 @@ public class Move extends Copy { protected void doFileOperations() { //Attempt complete directory renames, if any, first. if (completeDirMap.size() > 0) { - for (File fromDir : completeDirMap.keySet()) { - File toDir = completeDirMap.get(fromDir); + for (Map.Entry entry : completeDirMap.entrySet()) { + File fromDir = entry.getKey(); + File toDir = entry.getValue(); boolean renamed = false; try { log("Attempting to rename dir: " + fromDir + " to " + toDir, verbosity); @@ -133,11 +134,12 @@ public class Move extends Copy { log("Moving " + moveCount + " file" + ((moveCount == 1) ? "" : "s") + " to " + destDir.getAbsolutePath()); - for (String fromFile : fileCopyMap.keySet()) { + for (Map.Entry entry : fileCopyMap.entrySet) { + String fromFile = entry.getKey(); File f = new File(fromFile); boolean selfMove = false; if (f.exists()) { //Is this file still available to be moved? - String[] toFiles = fileCopyMap.get(fromFile); + String[] toFiles = entry.getValue(); for (int i = 0; i < toFiles.length; i++) { String toFile = toFiles[i]; @@ -164,8 +166,9 @@ public class Move extends Copy { if (includeEmpty) { int createCount = 0; - for (String fromDirName : dirCopyMap.keySet()) { - String[] toDirNames = dirCopyMap.get(fromDirName); + for (Map entry : dirCopyMap.entrySet()) { + String fromDirName = entry.getKey(); + String[] toDirNames = entry.getValue();; boolean selfMove = false; for (int i = 0; i < toDirNames.length; i++) { if (fromDirName.equals(toDirNames[i])) {