You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2020/08/19 19:30:33 UTC

[commons-compress] branch master updated: Refactor some duplication.

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


The following commit(s) were added to refs/heads/master by this push:
     new aba9018  Refactor some duplication.
aba9018 is described below

commit aba901824c013297eceed7655b24144f28f3f64a
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Aug 19 15:08:23 2020 -0400

    Refactor some duplication.
---
 .../compress/archivers/examples/Archiver.java      | 26 +++++++++-------------
 1 file changed, 10 insertions(+), 16 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 d4c05ae..d87fa2d 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
@@ -34,6 +34,7 @@ import java.nio.file.StandardOpenOption;
 import java.nio.file.attribute.BasicFileAttributes;
 import java.util.EnumSet;
 import java.util.Objects;
+import java.util.function.BiConsumer;
 
 import org.apache.commons.compress.archivers.ArchiveEntry;
 import org.apache.commons.compress.archivers.ArchiveException;
@@ -50,17 +51,18 @@ import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
  */
 public class Archiver {
 
-    private static final class ArchiverFileVisitor extends SimpleFileVisitor<Path> {
+    private static class ArchiverFileVisitor extends SimpleFileVisitor<Path> {
 
+        private static final LinkOption[] EMPTY_LINK_OPTIONS = new LinkOption[0];
         private final ArchiveOutputStream target;
         private final Path directory;
         private final LinkOption[] linkOptions;
 
-        private ArchiverFileVisitor(final ArchiveOutputStream target,
-            final Path directory, final LinkOption... linkOptions /*, BiConsumer<Path,T> fileConsumer */) {
+        private ArchiverFileVisitor(final ArchiveOutputStream target, final Path directory,
+            final LinkOption... linkOptions) {
             this.target = target;
             this.directory = directory;
-            this.linkOptions = linkOptions;
+            this.linkOptions = linkOptions == null ? EMPTY_LINK_OPTIONS : linkOptions.clone();
         }
 
         @Override
@@ -68,7 +70,7 @@ public class Archiver {
             return visit(dir, attrs, false);
         }
 
-        private FileVisitResult visit(final Path path, final BasicFileAttributes attrs, final boolean isFile)
+        protected FileVisitResult visit(final Path path, final BasicFileAttributes attrs, final boolean isFile)
             throws IOException {
             Objects.requireNonNull(path);
             Objects.requireNonNull(attrs);
@@ -159,14 +161,10 @@ public class Archiver {
      */
     public void create(final SevenZOutputFile target, final Path directory) throws IOException {
         // This custom SimpleFileVisitor goes away with Java 8's BiConsumer.
-        Files.walkFileTree(directory, new SimpleFileVisitor<Path>() {
-            @Override
-            public FileVisitResult preVisitDirectory(final Path dir, final BasicFileAttributes attrs)
-                throws IOException {
-                return visit(dir, attrs, false);
-            }
+        Files.walkFileTree(directory, new ArchiverFileVisitor(null, directory) {
 
-            private FileVisitResult visit(final Path path, final BasicFileAttributes attrs, final boolean isFile)
+            @Override
+            protected FileVisitResult visit(final Path path, final BasicFileAttributes attrs, final boolean isFile)
                 throws IOException {
                 Objects.requireNonNull(path);
                 Objects.requireNonNull(attrs);
@@ -184,10 +182,6 @@ public class Archiver {
                 return FileVisitResult.CONTINUE;
             }
 
-            @Override
-            public FileVisitResult visitFile(final Path file, final BasicFileAttributes attrs) throws IOException {
-                return visit(file, attrs, true);
-            }
         });
         target.finish();
     }