diff --git a/core/src/main/java/hudson/FilePath.java b/core/src/main/java/hudson/FilePath.java index 30f5cf4687..94947a3059 100644 --- a/core/src/main/java/hudson/FilePath.java +++ b/core/src/main/java/hudson/FilePath.java @@ -1420,7 +1420,7 @@ public final class FilePath implements Serializable { } } - private static abstract class DirScanner { + private static abstract class DirScanner implements Serializable { abstract void scan(File dir, FileVisitor visitor) throws IOException; /** @@ -1440,6 +1440,8 @@ public final class FilePath implements Serializable { void scan(File dir, FileVisitor visitor) throws IOException { scan(dir,"",visitor); } + + private static final long serialVersionUID = 1L; } /** @@ -1456,6 +1458,8 @@ public final class FilePath implements Serializable { void scan(File dir, FileVisitor visitor) throws IOException { super.scan(dir,visitor.with(filter)); } + + private static final long serialVersionUID = 1L; } /** @@ -1486,7 +1490,11 @@ public final class FilePath implements Serializable { } } } + + private static final long serialVersionUID = 1L; } + + private static final long serialVersionUID = 1L; } /** @@ -1538,16 +1546,20 @@ public final class FilePath implements Serializable { Archiver create(OutputStream out); } - private static final class TarArchiverFactory implements ArchiverFactory { + private static final class TarArchiverFactory implements ArchiverFactory, Serializable { public Archiver create(OutputStream out) { return new TarWriter(out); } + + private static final long serialVersionUID = 1L; } - private static final class ZipArchiverFactory implements ArchiverFactory { + private static final class ZipArchiverFactory implements ArchiverFactory, Serializable { public Archiver create(OutputStream out) { return new ZipWriter(out); } + + private static final long serialVersionUID = 1L; } diff --git a/core/src/test/java/hudson/FilePathTest.java b/core/src/test/java/hudson/FilePathTest.java index b3fe47b875..d7210181ee 100644 --- a/core/src/test/java/hudson/FilePathTest.java +++ b/core/src/test/java/hudson/FilePathTest.java @@ -36,6 +36,7 @@ import java.util.concurrent.Callable; import java.util.concurrent.Future; import org.junit.Assert; +import org.apache.commons.io.output.NullOutputStream; /** * @author Kohsuke Kawaguchi @@ -102,4 +103,16 @@ public class FilePathTest extends TestCase { Assert.assertTrue("could not delete target " + tmp2.getPath(), tmp2.delete()); } } + + public void testArchiveBug4039() throws Exception { + File tmp = Util.createTempDir(); + try { + FilePath d = new FilePath(french,tmp.getPath()); + d.child("test").touch(0); + d.zip(new NullOutputStream()); + d.zip(new NullOutputStream(),"**/*"); + } finally { + Util.deleteRecursive(tmp); + } + } }