Author: bodewig Date: Fri Dec 19 00:37:12 2008 New Revision: 727977 URL: http://svn.apache.org/viewvc?rev=727977&view=rev Log: Avoid slow scan unless it really is required
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Sync.java Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Sync.java URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Sync.java?rev=727977&r1=727976&r2=727977&view=diff ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Sync.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Sync.java Fri Dec 19 00:37:12 2008 @@ -128,18 +128,12 @@ // Get rid of empty directories on the destination side if (!myCopy.getIncludeEmptyDirs() - || (syncTarget != null - && syncTarget.getPreserveEmptyDirs() == Boolean.FALSE)) { + || getExplicitPreserveEmptyDirs() == Boolean.FALSE) { log("PASS#3: Removing empty directories from " + toDir, Project.MSG_DEBUG); int removedDirCount = 0; if (!myCopy.getIncludeEmptyDirs()) { - if (syncTarget != null - && syncTarget.getPreserveEmptyDirs() != Boolean.TRUE) { - preservedDirectories.clear(); - } - removedDirCount = removeEmptyDirectories(toDir, false, preservedDirectories); } else { // must be syncTarget.preserveEmptydirs == FALSE @@ -179,8 +173,8 @@ * @param file the initial file or directory to scan or test. * @param preservedDirectories will be filled with the directories * matched by preserveInTarget - if any. Will not be - * filled unless either preserveEmptyDirs is set or - * includeEmptyDirs is true. + * filled unless preserveEmptyDirs and includeEmptyDirs + * conflict. * @return the number of orphaned files and directories actually removed. * Position 0 of the array is the number of orphaned directories. * Position 1 of the array is the number or orphaned files. @@ -249,13 +243,11 @@ } } - if (syncTarget != null) { - if (syncTarget.getPreserveEmptyDirs() != null - || myCopy.getIncludeEmptyDirs()) { - String[] preservedDirs = ds.getExcludedDirectories(); - for (int i = preservedDirs.length - 1; i >= 0; --i) { - preservedDirectories.add(new File(toDir, preservedDirs[i])); - } + Boolean ped = getExplicitPreserveEmptyDirs(); + if (ped != null && ped.booleanValue() != myCopy.getIncludeEmptyDirs()) { + String[] preservedDirs = ds.getExcludedDirectories(); + for (int i = preservedDirs.length - 1; i >= 0; --i) { + preservedDirectories.add(new File(toDir, preservedDirs[i])); } } @@ -428,6 +420,16 @@ } /** + * The value of preserveTarget's preserveEmptyDirs attribute if + * specified and preserveTarget has been used in the first place. + * + * @since Ant 1.8.0. + */ + private Boolean getExplicitPreserveEmptyDirs() { + return syncTarget == null ? null : syncTarget.getPreserveEmptyDirs(); + } + + /** * Subclass Copy in order to access it's file/dir maps. */ public static class MyCopy extends Copy {