git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269478 13f79535-47bb-0310-9956-ffa450edef68master
@@ -59,6 +59,7 @@ import java.util.*; | |||||
import java.text.*; | import java.text.*; | ||||
import org.apache.tools.ant.types.FilterSet; | import org.apache.tools.ant.types.FilterSet; | ||||
import org.apache.tools.ant.util.FileUtils; | |||||
/** | /** | ||||
* Central representation of an Ant project. This class defines a | * Central representation of an Ant project. This class defines a | ||||
@@ -140,7 +141,10 @@ public class Project { | |||||
} | } | ||||
} | } | ||||
private FileUtils fileUtils; | |||||
public Project() { | public Project() { | ||||
fileUtils = FileUtils.getFileUtils(); | |||||
} | } | ||||
/** | /** | ||||
@@ -690,7 +694,7 @@ public class Project { | |||||
* @deprecated | * @deprecated | ||||
*/ | */ | ||||
public void copyFile(String sourceFile, String destFile) throws IOException { | public void copyFile(String sourceFile, String destFile) throws IOException { | ||||
FileUtils.copyFile(sourceFile, destFile); | |||||
fileUtils.copyFile(sourceFile, destFile); | |||||
} | } | ||||
/** | /** | ||||
@@ -703,7 +707,7 @@ public class Project { | |||||
*/ | */ | ||||
public void copyFile(String sourceFile, String destFile, boolean filtering) | public void copyFile(String sourceFile, String destFile, boolean filtering) | ||||
throws IOException { | throws IOException { | ||||
FileUtils.copyFile(sourceFile, destFile, filtering ? globalFilterSet : null); | |||||
fileUtils.copyFile(sourceFile, destFile, filtering ? globalFilterSet : null); | |||||
} | } | ||||
/** | /** | ||||
@@ -717,7 +721,7 @@ public class Project { | |||||
*/ | */ | ||||
public void copyFile(String sourceFile, String destFile, boolean filtering, | public void copyFile(String sourceFile, String destFile, boolean filtering, | ||||
boolean overwrite) throws IOException { | boolean overwrite) throws IOException { | ||||
FileUtils.copyFile(sourceFile, destFile, filtering ? globalFilterSet : null, overwrite); | |||||
fileUtils.copyFile(sourceFile, destFile, filtering ? globalFilterSet : null, overwrite); | |||||
} | } | ||||
/** | /** | ||||
@@ -734,7 +738,7 @@ public class Project { | |||||
public void copyFile(String sourceFile, String destFile, boolean filtering, | public void copyFile(String sourceFile, String destFile, boolean filtering, | ||||
boolean overwrite, boolean preserveLastModified) | boolean overwrite, boolean preserveLastModified) | ||||
throws IOException { | throws IOException { | ||||
FileUtils.copyFile(sourceFile, destFile, filtering ? globalFilterSet : null, | |||||
fileUtils.copyFile(sourceFile, destFile, filtering ? globalFilterSet : null, | |||||
overwrite, preserveLastModified); | overwrite, preserveLastModified); | ||||
} | } | ||||
@@ -747,7 +751,7 @@ public class Project { | |||||
* @deprecated | * @deprecated | ||||
*/ | */ | ||||
public void copyFile(File sourceFile, File destFile) throws IOException { | public void copyFile(File sourceFile, File destFile) throws IOException { | ||||
FileUtils.copyFile(sourceFile, destFile); | |||||
fileUtils.copyFile(sourceFile, destFile); | |||||
} | } | ||||
/** | /** | ||||
@@ -760,7 +764,7 @@ public class Project { | |||||
*/ | */ | ||||
public void copyFile(File sourceFile, File destFile, boolean filtering) | public void copyFile(File sourceFile, File destFile, boolean filtering) | ||||
throws IOException { | throws IOException { | ||||
FileUtils.copyFile(sourceFile, destFile, filtering ? globalFilterSet : null); | |||||
fileUtils.copyFile(sourceFile, destFile, filtering ? globalFilterSet : null); | |||||
} | } | ||||
/** | /** | ||||
@@ -774,7 +778,7 @@ public class Project { | |||||
*/ | */ | ||||
public void copyFile(File sourceFile, File destFile, boolean filtering, | public void copyFile(File sourceFile, File destFile, boolean filtering, | ||||
boolean overwrite) throws IOException { | boolean overwrite) throws IOException { | ||||
FileUtils.copyFile(sourceFile, destFile, filtering ? globalFilterSet : null, overwrite); | |||||
fileUtils.copyFile(sourceFile, destFile, filtering ? globalFilterSet : null, overwrite); | |||||
} | } | ||||
/** | /** | ||||
@@ -791,7 +795,7 @@ public class Project { | |||||
public void copyFile(File sourceFile, File destFile, boolean filtering, | public void copyFile(File sourceFile, File destFile, boolean filtering, | ||||
boolean overwrite, boolean preserveLastModified) | boolean overwrite, boolean preserveLastModified) | ||||
throws IOException { | throws IOException { | ||||
FileUtils.copyFile(sourceFile, destFile, filtering ? globalFilterSet : null, | |||||
fileUtils.copyFile(sourceFile, destFile, filtering ? globalFilterSet : null, | |||||
overwrite, preserveLastModified); | overwrite, preserveLastModified); | ||||
} | } | ||||
@@ -806,7 +810,7 @@ public class Project { | |||||
+ " in JDK 1.1", Project.MSG_WARN); | + " in JDK 1.1", Project.MSG_WARN); | ||||
return; | return; | ||||
} | } | ||||
FileUtils.setFileLastModified(file, time); | |||||
fileUtils.setFileLastModified(file, time); | |||||
log("Setting modification time for " + file, MSG_VERBOSE); | log("Setting modification time for " + file, MSG_VERBOSE); | ||||
} | } | ||||
@@ -93,7 +93,14 @@ public class Copy extends Task { | |||||
protected Mapper mapperElement = null; | protected Mapper mapperElement = null; | ||||
private Vector filterSets = new Vector(); | private Vector filterSets = new Vector(); | ||||
private FileUtils fileUtils; | |||||
public Copy() { | |||||
fileUtils = FileUtils.getFileUtils(); | |||||
} | |||||
protected FileUtils getFileUtils() {return fileUtils;} | |||||
/** | /** | ||||
* Sets a single source file to copy. | * Sets a single source file to copy. | ||||
*/ | */ | ||||
@@ -365,7 +372,7 @@ public class Copy extends Task { | |||||
for (Enumeration filterEnum = filterSets.elements(); filterEnum.hasMoreElements();) { | for (Enumeration filterEnum = filterSets.elements(); filterEnum.hasMoreElements();) { | ||||
executionFilterSet.addFilterSet((FilterSet)filterEnum.nextElement()); | executionFilterSet.addFilterSet((FilterSet)filterEnum.nextElement()); | ||||
} | } | ||||
FileUtils.copyFile(fromFile, toFile, executionFilterSet, | |||||
fileUtils.copyFile(fromFile, toFile, executionFilterSet, | |||||
forceOverwrite, preserveLastModified); | forceOverwrite, preserveLastModified); | ||||
} catch (IOException ioe) { | } catch (IOException ioe) { | ||||
String msg = "Failed to copy " + fromFile + " to " + toFile | String msg = "Failed to copy " + fromFile + " to " + toFile | ||||
@@ -108,8 +108,8 @@ public class Move extends Copy { | |||||
for (Enumeration filterEnum = getFilterSets().elements(); filterEnum.hasMoreElements();) { | for (Enumeration filterEnum = getFilterSets().elements(); filterEnum.hasMoreElements();) { | ||||
executionFilterSet.addFilterSet((FilterSet)filterEnum.nextElement()); | executionFilterSet.addFilterSet((FilterSet)filterEnum.nextElement()); | ||||
} | } | ||||
FileUtils.copyFile(fromFile, toFile, executionFilterSet, | |||||
forceOverwrite); | |||||
getFileUtils().copyFile(fromFile, toFile, executionFilterSet, | |||||
forceOverwrite); | |||||
File f = new File(fromFile); | File f = new File(fromFile); | ||||
if (!f.delete()) { | if (!f.delete()) { | ||||
@@ -89,6 +89,11 @@ public class Touch extends Task { | |||||
private long millis = -1; | private long millis = -1; | ||||
private String dateTime; | private String dateTime; | ||||
private Vector filesets = new Vector(); | private Vector filesets = new Vector(); | ||||
private FileUtils fileUtils; | |||||
public Touch() { | |||||
fileUtils = FileUtils.getFileUtils(); | |||||
} | |||||
/** | /** | ||||
* Sets a single source file to touch. If the file does not exist | * Sets a single source file to touch. If the file does not exist | ||||
@@ -204,9 +209,9 @@ public class Touch extends Task { | |||||
} | } | ||||
if (millis < 0) { | if (millis < 0) { | ||||
project.setFileLastModified(file, System.currentTimeMillis()); | |||||
fileUtils.setFileLastModified(file, System.currentTimeMillis()); | |||||
} else { | } else { | ||||
project.setFileLastModified(file, millis); | |||||
fileUtils.setFileLastModified(file, millis); | |||||
} | } | ||||
} | } | ||||
@@ -52,11 +52,13 @@ | |||||
* <http://www.apache.org/>. | * <http://www.apache.org/>. | ||||
*/ | */ | ||||
package org.apache.tools.ant; | |||||
package org.apache.tools.ant.util; | |||||
import java.io.*; | import java.io.*; | ||||
import java.util.*; | |||||
import java.lang.reflect.Method; | |||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.Project; | |||||
import org.apache.tools.ant.types.FilterSet; | import org.apache.tools.ant.types.FilterSet; | ||||
/** | /** | ||||
@@ -76,13 +78,25 @@ public class FileUtils { | |||||
private static Object lockReflection = new Object(); | private static Object lockReflection = new Object(); | ||||
private static java.lang.reflect.Method setLastModified = null; | private static java.lang.reflect.Method setLastModified = null; | ||||
/** | |||||
* Factory method. | |||||
*/ | |||||
public static FileUtils getFileUtils() { | |||||
return new FileUtils(); | |||||
} | |||||
/** | |||||
* Empty constructor. | |||||
*/ | |||||
protected FileUtils() {} | |||||
/** | /** | ||||
* Convienence method to copy a file from a source to a destination. | * Convienence method to copy a file from a source to a destination. | ||||
* No filtering is performed. | * No filtering is performed. | ||||
* | * | ||||
* @throws IOException | * @throws IOException | ||||
*/ | */ | ||||
public static void copyFile(String sourceFile, String destFile) throws IOException { | |||||
public void copyFile(String sourceFile, String destFile) throws IOException { | |||||
copyFile(new File(sourceFile), new File(destFile), null, false, false); | copyFile(new File(sourceFile), new File(destFile), null, false, false); | ||||
} | } | ||||
@@ -92,7 +106,7 @@ public class FileUtils { | |||||
* | * | ||||
* @throws IOException | * @throws IOException | ||||
*/ | */ | ||||
public static void copyFile(String sourceFile, String destFile, FilterSet filterSet) | |||||
public void copyFile(String sourceFile, String destFile, FilterSet filterSet) | |||||
throws IOException | throws IOException | ||||
{ | { | ||||
copyFile(new File(sourceFile), new File(destFile), filterSet, false, false); | copyFile(new File(sourceFile), new File(destFile), filterSet, false, false); | ||||
@@ -105,7 +119,7 @@ public class FileUtils { | |||||
* | * | ||||
* @throws IOException | * @throws IOException | ||||
*/ | */ | ||||
public static void copyFile(String sourceFile, String destFile, FilterSet filterSet, | |||||
public void copyFile(String sourceFile, String destFile, FilterSet filterSet, | |||||
boolean overwrite) throws IOException { | boolean overwrite) throws IOException { | ||||
copyFile(new File(sourceFile), new File(destFile), filterSet, | copyFile(new File(sourceFile), new File(destFile), filterSet, | ||||
overwrite, false); | overwrite, false); | ||||
@@ -120,7 +134,7 @@ public class FileUtils { | |||||
* | * | ||||
* @throws IOException | * @throws IOException | ||||
*/ | */ | ||||
public static void copyFile(String sourceFile, String destFile, FilterSet filterSet, | |||||
public void copyFile(String sourceFile, String destFile, FilterSet filterSet, | |||||
boolean overwrite, boolean preserveLastModified) | boolean overwrite, boolean preserveLastModified) | ||||
throws IOException { | throws IOException { | ||||
copyFile(new File(sourceFile), new File(destFile), filterSet, | copyFile(new File(sourceFile), new File(destFile), filterSet, | ||||
@@ -133,7 +147,7 @@ public class FileUtils { | |||||
* | * | ||||
* @throws IOException | * @throws IOException | ||||
*/ | */ | ||||
public static void copyFile(File sourceFile, File destFile) throws IOException { | |||||
public void copyFile(File sourceFile, File destFile) throws IOException { | |||||
copyFile(sourceFile, destFile, null, false, false); | copyFile(sourceFile, destFile, null, false, false); | ||||
} | } | ||||
@@ -143,7 +157,7 @@ public class FileUtils { | |||||
* | * | ||||
* @throws IOException | * @throws IOException | ||||
*/ | */ | ||||
public static void copyFile(File sourceFile, File destFile, FilterSet filterSet) | |||||
public void copyFile(File sourceFile, File destFile, FilterSet filterSet) | |||||
throws IOException { | throws IOException { | ||||
copyFile(sourceFile, destFile, filterSet, false, false); | copyFile(sourceFile, destFile, filterSet, false, false); | ||||
} | } | ||||
@@ -155,7 +169,7 @@ public class FileUtils { | |||||
* | * | ||||
* @throws IOException | * @throws IOException | ||||
*/ | */ | ||||
public static void copyFile(File sourceFile, File destFile, FilterSet filterSet, | |||||
public void copyFile(File sourceFile, File destFile, FilterSet filterSet, | |||||
boolean overwrite) throws IOException { | boolean overwrite) throws IOException { | ||||
copyFile(sourceFile, destFile, filterSet, overwrite, false); | copyFile(sourceFile, destFile, filterSet, overwrite, false); | ||||
} | } | ||||
@@ -169,7 +183,7 @@ public class FileUtils { | |||||
* | * | ||||
* @throws IOException | * @throws IOException | ||||
*/ | */ | ||||
public static void copyFile(File sourceFile, File destFile, FilterSet filterSet, | |||||
public void copyFile(File sourceFile, File destFile, FilterSet filterSet, | |||||
boolean overwrite, boolean preserveLastModified) | boolean overwrite, boolean preserveLastModified) | ||||
throws IOException { | throws IOException { | ||||
@@ -229,11 +243,11 @@ public class FileUtils { | |||||
} | } | ||||
/** | /** | ||||
* Calls File.setLastModified(long time) in a Java 1.1 compatible way. | |||||
* see whether we have a setLastModified method in File and return it. | |||||
*/ | */ | ||||
public static void setFileLastModified(File file, long time) throws BuildException { | |||||
protected final Method getSetLastModified() { | |||||
if (Project.getJavaVersion() == Project.JAVA_1_1) { | if (Project.getJavaVersion() == Project.JAVA_1_1) { | ||||
return; | |||||
return null; | |||||
} | } | ||||
if (setLastModified == null) { | if (setLastModified == null) { | ||||
synchronized (lockReflection) { | synchronized (lockReflection) { | ||||
@@ -249,14 +263,25 @@ public class FileUtils { | |||||
} | } | ||||
} | } | ||||
} | } | ||||
return setLastModified; | |||||
} | |||||
/** | |||||
* Calls File.setLastModified(long time) in a Java 1.1 compatible way. | |||||
*/ | |||||
public void setFileLastModified(File file, long time) throws BuildException { | |||||
if (Project.getJavaVersion() == Project.JAVA_1_1) { | |||||
return; | |||||
} | |||||
Long[] times = new Long[1]; | Long[] times = new Long[1]; | ||||
if (time < 0) { | if (time < 0) { | ||||
times[0] = new Long(System.currentTimeMillis()); | times[0] = new Long(System.currentTimeMillis()); | ||||
} else { | } else { | ||||
times[0] = new Long(time); | times[0] = new Long(time); | ||||
} | } | ||||
try { | try { | ||||
setLastModified.invoke(file, times); | |||||
getSetLastModified().invoke(file, times); | |||||
} catch (java.lang.reflect.InvocationTargetException ite) { | } catch (java.lang.reflect.InvocationTargetException ite) { | ||||
Throwable nested = ite.getTargetException(); | Throwable nested = ite.getTargetException(); | ||||
throw new BuildException("Exception setting the modification time " | throw new BuildException("Exception setting the modification time " |