Browse Source

remove abuse of the Touch task (that I would have missed if t had not

been for Magesh's patch).


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269977 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 23 years ago
parent
commit
29c2017667
2 changed files with 44 additions and 40 deletions
  1. +41
    -37
      src/main/org/apache/tools/ant/taskdefs/Expand.java
  2. +3
    -3
      src/main/org/apache/tools/ant/taskdefs/Untar.java

+ 41
- 37
src/main/org/apache/tools/ant/taskdefs/Expand.java View File

@@ -59,6 +59,7 @@ import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.Project; import org.apache.tools.ant.Project;
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.util.FileUtils;
import java.io.BufferedWriter; import java.io.BufferedWriter;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
@@ -97,7 +98,6 @@ public class Expand extends MatchingTask {
* *
* @exception BuildException Thrown in unrecoverable error. * @exception BuildException Thrown in unrecoverable error.
*/ */
// XXX move it to util or tools
public void execute() throws BuildException { public void execute() throws BuildException {
if ("expand".equals(taskType)) { if ("expand".equals(taskType)) {
log("!! expand is deprecated. Use unzip instead. !!"); log("!! expand is deprecated. Use unzip instead. !!");
@@ -123,10 +123,7 @@ public class Expand extends MatchingTask {
"specified"); "specified");
} }


Touch touch = (Touch) project.createTask("touch");
touch.setOwningTarget(target);
touch.setTaskName(getTaskName());
touch.setLocation(getLocation());
FileUtils fileUtils = FileUtils.newFileUtils();


try { try {
if (outFile != null) { if (outFile != null) {
@@ -158,11 +155,11 @@ public class Expand extends MatchingTask {
String[] files = ds.getIncludedFiles(); String[] files = ds.getIncludedFiles();
for (int i = 0; i < files.length; ++i) { for (int i = 0; i < files.length; ++i) {
File file = new File(source, files[i]); File file = new File(source, files[i]);
expandFile(touch, file, dest);
expandFile(fileUtils, file, dest);
} }
} }
else { else {
expandFile(touch, source, dest);
expandFile(fileUtils, source, dest);
} }
} }
if (filesets.size() > 0) { if (filesets.size() > 0) {
@@ -174,29 +171,31 @@ public class Expand extends MatchingTask {
String[] files = ds.getIncludedFiles(); String[] files = ds.getIncludedFiles();
for (int i = 0; i < files.length; ++i) { for (int i = 0; i < files.length; ++i) {
File file = new File(fromDir, files[i]); File file = new File(fromDir, files[i]);
expandFile(touch, file, dest);
expandFile(fileUtils, file, dest);
} }
} }
} }
try {
if (pw != null) {
pw.close();
}
if (bw != null) {
if (pw != null) {
pw.close();
}
if (bw != null) {
try {
bw.close(); bw.close();
}
if (fw != null) {
} catch (IOException ioe1) {}
}
if (fw != null) {
try {
fw.close(); fw.close();
} catch (IOException ioe1) {
//Oh, well! We did our best
} }
} catch (IOException ioe1) {
//Oh, well! We did our best
} }
} }


/* /*
* This method is to be overridden by extending unarchival tasks. * This method is to be overridden by extending unarchival tasks.
*/ */
protected void expandFile(Touch touch, File srcF, File dir) {
protected void expandFile(FileUtils fileUtils, File srcF, File dir) {
ZipInputStream zis = null; ZipInputStream zis = null;
try { try {
// code from WarExpand // code from WarExpand
@@ -204,7 +203,7 @@ public class Expand extends MatchingTask {
ZipEntry ze = null; ZipEntry ze = null;


while ((ze = zis.getNextEntry()) != null) { while ((ze = zis.getNextEntry()) != null) {
extractFile(touch, srcF, dir, zis,
extractFile(fileUtils, srcF, dir, zis,
ze.getName(), ze.getSize(), ze.getName(), ze.getSize(),
new Date(ze.getTime()), new Date(ze.getTime()),
ze.isDirectory()); ze.isDirectory());
@@ -226,18 +225,18 @@ public class Expand extends MatchingTask {
} }
} }


protected void extractFile(Touch touch, File srcF, File dir,
protected void extractFile(FileUtils fileUtils, File srcF, File dir,
InputStream compressedInputStream, InputStream compressedInputStream,
String entryName, long entrySize, String entryName, long entrySize,
Date entryDate, boolean isDirectory) Date entryDate, boolean isDirectory)
throws IOException { throws IOException {
extractFile(touch, srcF, dir, compressedInputStream,
extractFile(fileUtils, srcF, dir, compressedInputStream,
entryName, entrySize, entryDate, isDirectory, entryName, entrySize, entryDate, isDirectory,
null, null); null, null);


} }


protected void extractFile(Touch touch, File srcF, File dir,
protected void extractFile(FileUtils fileUtils, File srcF, File dir,
InputStream compressedInputStream, InputStream compressedInputStream,
String entryName, long entrySize, String entryName, long entrySize,
Date entryDate, boolean isDirectory, Date entryDate, boolean isDirectory,
@@ -307,7 +306,7 @@ public class Expand extends MatchingTask {
} }
} }
if (dest != null) { if (dest != null) {
File f = new File(dir, project.translatePath(entryName));
File f = fileUtils.resolveFile(dir, entryName);
try { try {
if (!overwrite && f.exists() if (!overwrite && f.exists()
&& f.lastModified() >= entryDate.getTime()) { && f.lastModified() >= entryDate.getTime()) {
@@ -319,7 +318,7 @@ public class Expand extends MatchingTask {
log("expanding " + entryName + " to "+ f, log("expanding " + entryName + " to "+ f,
Project.MSG_VERBOSE); Project.MSG_VERBOSE);
// create intermediary directories - sometimes zip don't add them // create intermediary directories - sometimes zip don't add them
File dirF=new File(f.getParent());
File dirF= fileUtils.getParentFile(f);
dirF.mkdirs(); dirF.mkdirs();


if (isDirectory) { if (isDirectory) {
@@ -327,22 +326,27 @@ public class Expand extends MatchingTask {
} else { } else {
byte[] buffer = new byte[1024]; byte[] buffer = new byte[1024];
int length = 0; int length = 0;
FileOutputStream fos = new FileOutputStream(f);

while ((length =
FileOutputStream fos = null;
try {
fos = new FileOutputStream(f);
while ((length =
compressedInputStream.read(buffer)) >= 0) { compressedInputStream.read(buffer)) >= 0) {
fos.write(buffer, 0, length);
fos.write(buffer, 0, length);
}
fos.close();
fos = null;
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {}
}
} }

fos.close();
} }

if (project.getJavaVersion() != Project.JAVA_1_1) {
touch.setFile(f);
touch.setMillis(entryDate.getTime());
touch.touch();
}

fileUtils.setFileLastModified(f, entryDate.getTime());
} catch( FileNotFoundException ex ) { } catch( FileNotFoundException ex ) {
log("Unable to expand to file " + f.getPath(), Project.MSG_WARN); log("Unable to expand to file " + f.getPath(), Project.MSG_WARN);
} }


+ 3
- 3
src/main/org/apache/tools/ant/taskdefs/Untar.java View File

@@ -56,9 +56,9 @@ package org.apache.tools.ant.taskdefs;


import org.apache.tools.ant.BuildException; import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project; import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Expand;
import org.apache.tools.tar.TarInputStream; import org.apache.tools.tar.TarInputStream;
import org.apache.tools.tar.TarEntry; import org.apache.tools.tar.TarEntry;
import org.apache.tools.ant.util.FileUtils;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
@@ -97,7 +97,7 @@ public class Untar extends Expand {
private final static int S_IWOTH = 00002; private final static int S_IWOTH = 00002;
private final static int S_IXOTH = 00001; private final static int S_IXOTH = 00001;


protected void expandFile(Touch touch, File srcF, File dir) {
protected void expandFile(FileUtils fileUtils, File srcF, File dir) {
TarInputStream tis = null; TarInputStream tis = null;
try { try {
if (dest != null) { if (dest != null) {
@@ -108,7 +108,7 @@ public class Untar extends Expand {
TarEntry te = null; TarEntry te = null;


while ((te = tis.getNextEntry()) != null) { while ((te = tis.getNextEntry()) != null) {
extractFile(touch, srcF, dir, tis,
extractFile(fileUtils, srcF, dir, tis,
te.getName(), te.getSize(), te.getName(), te.getSize(),
te.getModTime(), te.isDirectory(), te.getModTime(), te.isDirectory(),
mode2str(te.getMode()), mode2str(te.getMode()),


Loading…
Cancel
Save