This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-compress.git
commit 8de9c3978173bbd6157ef3b86184726493ffb3e8 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Sat Aug 8 17:13:46 2020 -0400 - Support passing in LinkOption[] to the Archiver file visitor. --- .../commons/compress/archivers/examples/Archiver.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/apache/commons/compress/archivers/examples/Archiver.java b/src/main/java/org/apache/commons/compress/archivers/examples/Archiver.java index 3bdb55d..d4c05ae 100644 --- a/src/main/java/org/apache/commons/compress/archivers/examples/Archiver.java +++ b/src/main/java/org/apache/commons/compress/archivers/examples/Archiver.java @@ -27,6 +27,7 @@ import java.nio.channels.SeekableByteChannel; import java.nio.file.FileVisitOption; import java.nio.file.FileVisitResult; import java.nio.file.Files; +import java.nio.file.LinkOption; import java.nio.file.Path; import java.nio.file.SimpleFileVisitor; import java.nio.file.StandardOpenOption; @@ -53,11 +54,13 @@ public class Archiver { private final ArchiveOutputStream target; private final Path directory; + private final LinkOption[] linkOptions; private ArchiverFileVisitor(final ArchiveOutputStream target, - final Path directory /* BiConsumer<Path,T> fileConsumer */) { + final Path directory, final LinkOption... linkOptions /*, BiConsumer<Path,T> fileConsumer */) { this.target = target; this.directory = directory; + this.linkOptions = linkOptions; } @Override @@ -72,7 +75,7 @@ public class Archiver { final String name = directory.relativize(path).toString().replace('\\', '/'); if (!name.isEmpty()) { final ArchiveEntry archiveEntry = target.createArchiveEntry(path, - isFile || name.endsWith("/") ? name : name + "/"); + isFile || name.endsWith("/") ? name : name + "/", linkOptions); target.putArchiveEntry(archiveEntry); if (isFile) { // Refactor this as a BiConsumer on Java 8 @@ -111,13 +114,15 @@ public class Archiver { * * @param target the stream to write the new archive to. * @param directory the directory that contains the files to archive. - * @param fileVisitOptions options to configure the traversal of the source {@code directory}. + * @param fileVisitOptions linkOptions to configure the traversal of the source {@code directory}. + * @param linkOptions indicating how symbolic links are handled. * @throws IOException if an I/O error occurs or the archive cannot be created for other reasons. * @since 1.21 */ public void create(final ArchiveOutputStream target, final Path directory, - final EnumSet<FileVisitOption> fileVisitOptions) throws IOException { - Files.walkFileTree(directory, fileVisitOptions, Integer.MAX_VALUE, new ArchiverFileVisitor(target, directory)); + final EnumSet<FileVisitOption> fileVisitOptions, final LinkOption... linkOptions) throws IOException { + Files.walkFileTree(directory, fileVisitOptions, Integer.MAX_VALUE, + new ArchiverFileVisitor(target, directory, linkOptions)); target.finish(); }