previous state. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270487 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -72,7 +72,6 @@ import org.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.taskdefs.condition.Condition; | import org.apache.tools.ant.taskdefs.condition.Condition; | ||||
| import org.apache.tools.ant.taskdefs.MatchingTask; | import org.apache.tools.ant.taskdefs.MatchingTask; | ||||
| import org.apache.tools.ant.types.FileSet; | import org.apache.tools.ant.types.FileSet; | ||||
| import org.apache.tools.ant.types.SrcFile; | |||||
| /** | /** | ||||
| * This task can be used to create checksums for files. | * This task can be used to create checksums for files. | ||||
| @@ -130,8 +129,8 @@ public class Checksum extends MatchingTask implements Condition { | |||||
| /** | /** | ||||
| * Sets the file for which the checksum is to be calculated. | * Sets the file for which the checksum is to be calculated. | ||||
| */ | */ | ||||
| public void setFile(SrcFile file) { | |||||
| this.file = file.getFile(); | |||||
| public void setFile(File file) { | |||||
| this.file = file; | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -220,6 +219,11 @@ public class Checksum extends MatchingTask implements Condition { | |||||
| "Specify at least one source - a file or a fileset."); | "Specify at least one source - a file or a fileset."); | ||||
| } | } | ||||
| if (file != null && file.exists() && file.isDirectory()) { | |||||
| throw new BuildException( | |||||
| "Checksum cannot be generated for directories"); | |||||
| } | |||||
| if (property != null && fileext != null) { | if (property != null && fileext != null) { | ||||
| throw new BuildException( | throw new BuildException( | ||||
| "Property and FileExt cannot co-exist."); | "Property and FileExt cannot co-exist."); | ||||
| @@ -57,10 +57,8 @@ package org.apache.tools.ant.taskdefs; | |||||
| import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
| import org.apache.tools.ant.DirectoryScanner; | import org.apache.tools.ant.DirectoryScanner; | ||||
| import org.apache.tools.ant.Project; | import org.apache.tools.ant.Project; | ||||
| import org.apache.tools.ant.types.DestDir; | |||||
| import org.apache.tools.ant.types.FileSet; | import org.apache.tools.ant.types.FileSet; | ||||
| import org.apache.tools.ant.types.PatternSet; | import org.apache.tools.ant.types.PatternSet; | ||||
| import org.apache.tools.ant.types.SrcFile; | |||||
| import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
| import java.io.File; | import java.io.File; | ||||
| import java.io.FileInputStream; | import java.io.FileInputStream; | ||||
| @@ -106,10 +104,19 @@ public class Expand extends MatchingTask { | |||||
| "Dest attribute must be specified"); | "Dest attribute must be specified"); | ||||
| } | } | ||||
| if (dest.exists() && !dest.isDirectory()) { | |||||
| throw new BuildException("Dest must be a directory.", location); | |||||
| } | |||||
| FileUtils fileUtils = FileUtils.newFileUtils(); | FileUtils fileUtils = FileUtils.newFileUtils(); | ||||
| if (source != null) { | if (source != null) { | ||||
| expandFile(fileUtils, source, dest); | |||||
| if (source.isDirectory()) { | |||||
| throw new BuildException("Src must not be a directory." + | |||||
| " Use nested filesets instead.", location); | |||||
| } else { | |||||
| expandFile(fileUtils, source, dest); | |||||
| } | |||||
| } | } | ||||
| if (filesets.size() > 0) { | if (filesets.size() > 0) { | ||||
| for (int j=0; j < filesets.size(); j++) { | for (int j=0; j < filesets.size(); j++) { | ||||
| @@ -246,49 +253,18 @@ public class Expand extends MatchingTask { | |||||
| * destination directory. | * destination directory. | ||||
| * | * | ||||
| * @param d Path to the directory. | * @param d Path to the directory. | ||||
| * @deprecated setDest(File) is deprecated and is replaced with | |||||
| * setDest(DestDir) to let Ant's core perform validation | |||||
| */ | */ | ||||
| public void setDest(File d) { | public void setDest(File d) { | ||||
| log("DEPRECATED - The setDest(File) method has been deprecated." | |||||
| + " Use setDest(DestDir) instead."); | |||||
| DestDir dd = new DestDir(); | |||||
| dd.setFile(d); | |||||
| setDest(dd); | |||||
| } | |||||
| /** | |||||
| * Set the destination directory. File will be unzipped into the | |||||
| * destination directory. | |||||
| * | |||||
| * @param d Path to the directory. | |||||
| */ | |||||
| public void setDest(DestDir d) { | |||||
| this.dest=d.getFile(); | |||||
| this.dest=d; | |||||
| } | } | ||||
| /** | /** | ||||
| * Set the path to zip-file. | * Set the path to zip-file. | ||||
| * | * | ||||
| * @param s Path to zip-file. | * @param s Path to zip-file. | ||||
| * @deprecated setSrc(File) is deprecated and is replaced with | |||||
| * setSrc(SrcFile) to let Ant's core perform validation | |||||
| */ | */ | ||||
| public void setSrc(File s) { | public void setSrc(File s) { | ||||
| log("DEPRECATED - The setSrc(File) method has been deprecated." | |||||
| + " Use setSrc(SrcFile) instead."); | |||||
| SrcFile sf = new SrcFile(); | |||||
| sf.setFile(s); | |||||
| setSrc(sf); | |||||
| } | |||||
| /** | |||||
| * Set the path to zip-file. | |||||
| * | |||||
| * @param s Path to zip-file. | |||||
| */ | |||||
| public void setSrc(SrcFile s) { | |||||
| this.source = s.getFile(); | |||||
| this.source = s; | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -58,7 +58,7 @@ import org.apache.tools.ant.Project; | |||||
| import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
| import org.apache.tools.ant.ProjectHelper; | import org.apache.tools.ant.ProjectHelper; | ||||
| import org.apache.tools.ant.types.EnumeratedAttribute; | import org.apache.tools.ant.types.EnumeratedAttribute; | ||||
| import org.apache.tools.ant.types.SrcFile; | |||||
| import java.io.File; | import java.io.File; | ||||
| import java.io.FileInputStream; | import java.io.FileInputStream; | ||||
| import java.io.InputStreamReader; | import java.io.InputStreamReader; | ||||
| @@ -67,7 +67,7 @@ import java.io.BufferedInputStream; | |||||
| /** | /** | ||||
| * Load a file into a property | * Load a file into a property | ||||
| * @since 1.5 | |||||
| * | |||||
| * @author Steve Loughran | * @author Steve Loughran | ||||
| * @created 10 December 2001 | * @created 10 December 2001 | ||||
| */ | */ | ||||
| @@ -126,8 +126,8 @@ public class LoadFile extends Task { | |||||
| * | * | ||||
| * @param srcFile The new SrcFile value | * @param srcFile The new SrcFile value | ||||
| */ | */ | ||||
| public void setSrcFile(SrcFile srcFile) { | |||||
| this.srcFile = srcFile.getFile(); | |||||
| public void setSrcFile(File srcFile) { | |||||
| this.srcFile = srcFile; | |||||
| } | } | ||||
| @@ -182,7 +182,7 @@ public class LoadFile extends Task { | |||||
| project.setNewProperty(property, text); | project.setNewProperty(property, text); | ||||
| log("loaded "+buffer.length+" characters",Project.MSG_VERBOSE); | log("loaded "+buffer.length+" characters",Project.MSG_VERBOSE); | ||||
| log(property+" := "+text,Project.MSG_DEBUG); | log(property+" := "+text,Project.MSG_DEBUG); | ||||
| } catch (IOException ioe) { | } catch (IOException ioe) { | ||||
| String message = "Unable to load file: " + ioe.toString(); | String message = "Unable to load file: " + ioe.toString(); | ||||
| if (failOnError) { | if (failOnError) { | ||||
| @@ -203,4 +203,3 @@ public class LoadFile extends Task { | |||||
| //end class | //end class | ||||
| } | } | ||||
| @@ -54,11 +54,9 @@ | |||||
| package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
| import java.io.File; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.Task; | import org.apache.tools.ant.Task; | ||||
| import org.apache.tools.ant.types.DestDir; | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import java.io.File; | |||||
| /** | /** | ||||
| * Creates a given directory. | * Creates a given directory. | ||||
| @@ -75,6 +73,10 @@ public class Mkdir extends Task { | |||||
| throw new BuildException("dir attribute is required", location); | throw new BuildException("dir attribute is required", location); | ||||
| } | } | ||||
| if (dir.isFile()) { | |||||
| throw new BuildException("Unable to create directory as a file already exists with that name: " + dir.getAbsolutePath()); | |||||
| } | |||||
| if (!dir.exists()) { | if (!dir.exists()) { | ||||
| boolean result = dir.mkdirs(); | boolean result = dir.mkdirs(); | ||||
| if (result == false) { | if (result == false) { | ||||
| @@ -86,19 +88,8 @@ public class Mkdir extends Task { | |||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| * @deprecated setDir(File) is deprecated and is replaced with | |||||
| * setDir(DestDir) to let Ant's core perform validation | |||||
| */ | |||||
| public void setDir(File dir) { | public void setDir(File dir) { | ||||
| log("DEPRECATED - The setDir(File) method has been deprecated." | |||||
| + " Use setDir(DestDir) instead."); | |||||
| DestDir destDir = new DestDir(); | |||||
| destDir.setFile(dir); | |||||
| setDir(destDir); | |||||
| } | |||||
| public void setDir(DestDir destDir) { | |||||
| this.dir = destDir.getFile(); | |||||
| this.dir = dir; | |||||
| } | } | ||||
| } | } | ||||
| @@ -59,7 +59,6 @@ import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.Project; | import org.apache.tools.ant.Project; | ||||
| import org.apache.tools.ant.AntClassLoader; | import org.apache.tools.ant.AntClassLoader; | ||||
| import org.apache.tools.ant.ProjectHelper; | import org.apache.tools.ant.ProjectHelper; | ||||
| import org.apache.tools.ant.types.DestFile; | |||||
| import org.apache.tools.ant.types.Path; | import org.apache.tools.ant.types.Path; | ||||
| import org.apache.tools.ant.types.Reference; | import org.apache.tools.ant.types.Reference; | ||||
| import java.io.File; | import java.io.File; | ||||
| @@ -118,20 +117,8 @@ public class Property extends Task { | |||||
| return value; | return value; | ||||
| } | } | ||||
| /** | |||||
| * @deprecated setFile(File) is deprecated and is replaced with | |||||
| * setFile(DestFile) to let Ant's core perform validation | |||||
| */ | |||||
| public void setFile(File file) { | public void setFile(File file) { | ||||
| log("DEPRECATED - The setFile(File) method has been deprecated." | |||||
| + " Use setFile(DestFile) instead."); | |||||
| DestFile destFile = new DestFile(); | |||||
| destFile.setFile(file); | |||||
| setFile(destFile); | |||||
| } | |||||
| public void setFile(DestFile file) { | |||||
| this.file = file.getFile(); | |||||
| this.file = file; | |||||
| } | } | ||||
| public File getFile() { | public File getFile() { | ||||
| @@ -58,7 +58,6 @@ package org.apache.tools.ant.taskdefs; | |||||
| import java.io.File; | import java.io.File; | ||||
| import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
| import org.apache.tools.ant.Task; | import org.apache.tools.ant.Task; | ||||
| import org.apache.tools.ant.types.SrcFile; | |||||
| /** | /** | ||||
| * Abstract Base class for unpack tasks. | * Abstract Base class for unpack tasks. | ||||
| @@ -73,16 +72,14 @@ public abstract class Unpack extends Task { | |||||
| /** | /** | ||||
| * @deprecated setSrc(String) is deprecated and is replaced with | * @deprecated setSrc(String) is deprecated and is replaced with | ||||
| * setSrc(SrcFile) to make Ant's Introspection | |||||
| * setSrc(File) to make Ant's Introspection | |||||
| * mechanism do the work and also to encapsulate operations on | * mechanism do the work and also to encapsulate operations on | ||||
| * the type in its own class. | * the type in its own class. | ||||
| */ | */ | ||||
| public void setSrc(String src) { | public void setSrc(String src) { | ||||
| log("DEPRECATED - The setSrc(String) method has been deprecated." | log("DEPRECATED - The setSrc(String) method has been deprecated." | ||||
| + " Use setSrc(SrcFile) instead."); | |||||
| SrcFile sf = new SrcFile(); | |||||
| sf.setFile(project.resolveFile(src)); | |||||
| setSrc(sf); | |||||
| + " Use setSrc(File) instead."); | |||||
| setSrc(project.resolveFile(src)); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -97,8 +94,8 @@ public abstract class Unpack extends Task { | |||||
| setDest(project.resolveFile(dest)); | setDest(project.resolveFile(dest)); | ||||
| } | } | ||||
| public void setSrc(SrcFile srcFile) { | |||||
| source = srcFile.getFile(); | |||||
| public void setSrc(File src) { | |||||
| source = src; | |||||
| } | } | ||||
| public void setDest(File dest) { | public void setDest(File dest) { | ||||
| @@ -110,6 +107,14 @@ public abstract class Unpack extends Task { | |||||
| throw new BuildException("No Src specified", location); | throw new BuildException("No Src specified", location); | ||||
| } | } | ||||
| if (!source.exists()) { | |||||
| throw new BuildException("Src doesn't exist", location); | |||||
| } | |||||
| if (source.isDirectory()) { | |||||
| throw new BuildException("Cannot expand a directory", location); | |||||
| } | |||||
| if (dest == null) { | if (dest == null) { | ||||
| dest = new File(source.getParent()); | dest = new File(source.getParent()); | ||||
| } | } | ||||
| @@ -116,32 +116,25 @@ public class LoadFileTest extends BuildFileTest { | |||||
| public void testNoSourcefilefound() { | public void testNoSourcefilefound() { | ||||
| expectBuildExceptionContaining("testNoSourcefilefound", | expectBuildExceptionContaining("testNoSourcefilefound", | ||||
| "File not found", | "File not found", | ||||
| "does not exist"); | |||||
| "Unable to load file"); | |||||
| } | } | ||||
| /** | /** | ||||
| * A unit test for JUnit | * A unit test for JUnit | ||||
| */ | */ | ||||
| /* turned off as the move to SrcFile changed where the check | |||||
| * for existence went. | |||||
| * we need to think of an alternate way to generate a file which | |||||
| * cant be opened for reading | |||||
| */ | |||||
| /* | |||||
| public void testFailOnError() | |||||
| public void testFailOnError() | |||||
| throws BuildException { | throws BuildException { | ||||
| executeTarget("testFailOnError"); | executeTarget("testFailOnError"); | ||||
| if(project.getProperty("testFailOnError")!=null) { | if(project.getProperty("testFailOnError")!=null) { | ||||
| fail("property should not have been defined"); | |||||
| fail("property should not have been defined"); | |||||
| } | } | ||||
| } | } | ||||
| */ | |||||
| /** | /** | ||||
| * A unit test for JUnit | * A unit test for JUnit | ||||
| */ | */ | ||||
| public void testLoadAFile() | |||||
| public void testLoadAFile() | |||||
| throws BuildException { | throws BuildException { | ||||
| executeTarget("testLoadAFile"); | executeTarget("testLoadAFile"); | ||||
| if(project.getProperty("testLoadAFile").indexOf("eh?")<0) { | if(project.getProperty("testLoadAFile").indexOf("eh?")<0) { | ||||
| @@ -153,7 +146,7 @@ public class LoadFileTest extends BuildFileTest { | |||||
| /** | /** | ||||
| * A unit test for JUnit | * A unit test for JUnit | ||||
| */ | */ | ||||
| public void testLoadAFileEnc() | |||||
| public void testLoadAFileEnc() | |||||
| throws BuildException { | throws BuildException { | ||||
| executeTarget("testLoadAFileEnc"); | executeTarget("testLoadAFileEnc"); | ||||
| if(project.getProperty("testLoadAFileEnc")==null) { | if(project.getProperty("testLoadAFileEnc")==null) { | ||||
| @@ -164,3 +157,4 @@ public class LoadFileTest extends BuildFileTest { | |||||
| } | } | ||||