diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 3672d801a..c209a5810 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -74,6 +74,7 @@ Dan Armbrust Daniel Henrique Daniel Ribagnac Daniel Spilker +Daniel Trebbien Danno Ferrin Danny Yates Dante Briones diff --git a/WHATSNEW b/WHATSNEW index bcab2c871..09905e746 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -62,6 +62,10 @@ Fixed bugs: * ssh tasks prompt for kerberos username/password under Java 7 Bugzilla Report 53437. + * Zip task on that excludes certain files by way of the mapper resulted in a NullPointerException + Bugzilla Report 54026 + + Other changes: -------------- diff --git a/contributors.xml b/contributors.xml index 9e970355a..f726989c6 100644 --- a/contributors.xml +++ b/contributors.xml @@ -319,6 +319,10 @@ Daniel Spilker + + Daniel + Trebbien + Danno Ferrin diff --git a/src/main/org/apache/tools/ant/taskdefs/Zip.java b/src/main/org/apache/tools/ant/taskdefs/Zip.java index c20027220..a58ac1bf5 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Zip.java +++ b/src/main/org/apache/tools/ant/taskdefs/Zip.java @@ -1068,22 +1068,27 @@ public class Zip extends MatchingTask { return; } for (int i = 0; i < resources.length; i++) { - String name = resources[i].getName().replace(File.separatorChar, - '/'); + final Resource resource = resources[i]; + String name = resource.getName(); + if (name == null) { + continue; + } + name = name.replace(File.separatorChar, '/'); + if ("".equals(name)) { continue; } - if (resources[i].isDirectory() && doFilesonly) { + if (resource.isDirectory() && doFilesonly) { continue; } File base = null; - FileProvider fp = resources[i].as(FileProvider.class); + FileProvider fp = resource.as(FileProvider.class); if (fp != null) { base = ResourceUtils.asFileResource(fp).getBaseDir(); } - if (resources[i].isDirectory()) { - addDirectoryResource(resources[i], name, "", base, zOut, + if (resource.isDirectory()) { + addDirectoryResource(resource, name, "", base, zOut, ArchiveFileSet.DEFAULT_DIR_MODE, ArchiveFileSet.DEFAULT_DIR_MODE); @@ -1095,7 +1100,7 @@ public class Zip extends MatchingTask { File f = (fp).getFile(); zipFile(f, zOut, name, ArchiveFileSet.DEFAULT_FILE_MODE); } else { - addResource(resources[i], name, "", zOut, + addResource(resource, name, "", zOut, ArchiveFileSet.DEFAULT_FILE_MODE, null, null); } diff --git a/src/tests/antunit/taskdefs/zip-test.xml b/src/tests/antunit/taskdefs/zip-test.xml index e64b679b1..682ac95f8 100644 --- a/src/tests/antunit/taskdefs/zip-test.xml +++ b/src/tests/antunit/taskdefs/zip-test.xml @@ -45,6 +45,21 @@ actual="${output}/out/bar.txt"/> + + + + + + + + + + + + + + +