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-io.git
The following commit(s) were added to refs/heads/master by this push:
new b2ea4fa [IO-632] Add PathUtils for operations on NIO Path.
b2ea4fa is described below
commit b2ea4fabfc9c749b2e11805300b1cfb45e4289f6
Author: Gary Gregory <[email protected]>
AuthorDate: Sat Oct 12 16:05:35 2019 -0400
[IO-632] Add PathUtils for operations on NIO Path.
Add PathUtils.cleanDirectory(Path).
---
.../java/org/apache/commons/io/file/Counters.java | 2 +-
.../commons/io/file/CountingPathVisitor.java | 2 +-
.../java/org/apache/commons/io/file/PathUtils.java | 17 +++++-
.../commons/io/file/CleaningPathVisitorTest.java | 10 +--
.../commons/io/file/DeletingPathVisitorTest.java | 10 +--
...rTest.java => PathUtilsCleanDirectoryTest.java} | 71 ++++++----------------
.../org/apache/commons/io/file/TestArguments.java | 18 +++---
7 files changed, 52 insertions(+), 78 deletions(-)
diff --git a/src/main/java/org/apache/commons/io/file/Counters.java
b/src/main/java/org/apache/commons/io/file/Counters.java
index f0a32b3..4d1c33a 100644
--- a/src/main/java/org/apache/commons/io/file/Counters.java
+++ b/src/main/java/org/apache/commons/io/file/Counters.java
@@ -37,7 +37,7 @@ public class Counters {
/**
* Constructs a new instance.
- *
+ *
* @param byteCounter the byte counter.
* @param directoryCounter the directory counter.
* @param fileCounter the file counter.
diff --git a/src/main/java/org/apache/commons/io/file/CountingPathVisitor.java
b/src/main/java/org/apache/commons/io/file/CountingPathVisitor.java
index 2ca589b..a205dea 100644
--- a/src/main/java/org/apache/commons/io/file/CountingPathVisitor.java
+++ b/src/main/java/org/apache/commons/io/file/CountingPathVisitor.java
@@ -87,7 +87,7 @@ public class CountingPathVisitor extends SimplePathVisitor {
/**
* Updates the counters for visiting the given file.
- *
+ *
* @param file the visited file.
* @param attrs the visited file attributes.
*/
diff --git a/src/main/java/org/apache/commons/io/file/PathUtils.java
b/src/main/java/org/apache/commons/io/file/PathUtils.java
index 1dc5705..17b30da 100644
--- a/src/main/java/org/apache/commons/io/file/PathUtils.java
+++ b/src/main/java/org/apache/commons/io/file/PathUtils.java
@@ -36,6 +36,17 @@ import org.apache.commons.io.file.Counters.PathCounters;
public final class PathUtils {
/**
+ * Cleans a directory including sub-directories without deleting
directories.
+ *
+ * @param directory directory to clean.
+ * @return The visitor used to clean the given directory.
+ * @throws IOException if an I/O error is thrown by a visitor method.
+ */
+ public static PathCounters cleanDirectory(final Path directory) throws
IOException {
+ return visitFileTree(CleaningPathVisitor.withLongCounters(),
directory).getPathCounters();
+ }
+
+ /**
* Counts aspects of a directory including sub-directories.
*
* @param directory directory to delete.
@@ -74,7 +85,7 @@ public final class PathUtils {
* @throws IOException if an I/O error is thrown by a visitor method.
*/
public static PathCounters deleteDirectory(final Path directory) throws
IOException {
- return visitFileTree(new
DeletingPathVisitor(Counters.longPathCounters()), directory).getPathCounters();
+ return visitFileTree(DeletingPathVisitor.withLongCounters(),
directory).getPathCounters();
}
/**
@@ -168,8 +179,8 @@ public final class PathUtils {
*
* @throws IOException if an I/O error is thrown by a visitor method
*/
- public static <T extends FileVisitor<? super Path>> T visitFileTree(final
T visitor, final String first, final String... more)
- throws IOException {
+ public static <T extends FileVisitor<? super Path>> T visitFileTree(final
T visitor, final String first,
+ final String... more) throws IOException {
return visitFileTree(visitor, Paths.get(first, more));
}
diff --git
a/src/test/java/org/apache/commons/io/file/CleaningPathVisitorTest.java
b/src/test/java/org/apache/commons/io/file/CleaningPathVisitorTest.java
index a6dfdcb..62802c8 100644
--- a/src/test/java/org/apache/commons/io/file/CleaningPathVisitorTest.java
+++ b/src/test/java/org/apache/commons/io/file/CleaningPathVisitorTest.java
@@ -50,6 +50,11 @@ public class CleaningPathVisitorTest extends TestArguments {
}
}
+ private void applyCleanEmptyDirectory(final CleaningPathVisitor visitor)
throws IOException {
+ Files.walkFileTree(tempDir, visitor);
+ assertCounts(1, 0, 0, visitor);
+ }
+
@BeforeEach
public void beforeEach() throws IOException {
tempDir = Files.createTempDirectory(getClass().getCanonicalName());
@@ -64,11 +69,6 @@ public class CleaningPathVisitorTest extends TestArguments {
applyCleanEmptyDirectory(visitor);
}
- private void applyCleanEmptyDirectory(final CleaningPathVisitor visitor)
throws IOException {
- Files.walkFileTree(tempDir, visitor);
- assertCounts(1, 0, 0, visitor);
- }
-
/**
* Tests an empty folder.
*/
diff --git
a/src/test/java/org/apache/commons/io/file/DeletingPathVisitorTest.java
b/src/test/java/org/apache/commons/io/file/DeletingPathVisitorTest.java
index b31c614..0a56831 100644
--- a/src/test/java/org/apache/commons/io/file/DeletingPathVisitorTest.java
+++ b/src/test/java/org/apache/commons/io/file/DeletingPathVisitorTest.java
@@ -47,6 +47,11 @@ public class DeletingPathVisitorTest extends TestArguments {
}
}
+ private void applyDeleteEmptyDirectory(final DeletingPathVisitor visitor)
throws IOException {
+ Files.walkFileTree(tempDir, visitor);
+ assertCounts(1, 0, 0, visitor);
+ }
+
@BeforeEach
public void beforeEach() throws IOException {
tempDir = Files.createTempDirectory(getClass().getCanonicalName());
@@ -63,11 +68,6 @@ public class DeletingPathVisitorTest extends TestArguments {
Files.deleteIfExists(tempDir);
}
- private void applyDeleteEmptyDirectory(final DeletingPathVisitor visitor)
throws IOException {
- Files.walkFileTree(tempDir, visitor);
- assertCounts(1, 0, 0, visitor);
- }
-
/**
* Tests an empty folder.
*/
diff --git
a/src/test/java/org/apache/commons/io/file/CleaningPathVisitorTest.java
b/src/test/java/org/apache/commons/io/file/PathUtilsCleanDirectoryTest.java
similarity index 50%
copy from src/test/java/org/apache/commons/io/file/CleaningPathVisitorTest.java
copy to
src/test/java/org/apache/commons/io/file/PathUtilsCleanDirectoryTest.java
index a6dfdcb..dd0cb13 100644
--- a/src/test/java/org/apache/commons/io/file/CleaningPathVisitorTest.java
+++ b/src/test/java/org/apache/commons/io/file/PathUtilsCleanDirectoryTest.java
@@ -26,17 +26,14 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.file.Counters.PathCounters;
import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.MethodSource;
+import org.junit.jupiter.api.Test;
/**
* Tests {@link DeletingPathVisitor}.
*/
-public class CleaningPathVisitorTest extends TestArguments {
+public class PathUtilsCleanDirectoryTest {
private Path tempDir;
@@ -56,74 +53,40 @@ public class CleaningPathVisitorTest extends TestArguments {
}
/**
- * Tests an empty folder.
- */
- @ParameterizedTest
- @MethodSource("cleaningPathVisitors")
- public void testCleanEmptyDirectory(final CleaningPathVisitor visitor)
throws IOException {
- applyCleanEmptyDirectory(visitor);
- }
-
- private void applyCleanEmptyDirectory(final CleaningPathVisitor visitor)
throws IOException {
- Files.walkFileTree(tempDir, visitor);
- assertCounts(1, 0, 0, visitor);
- }
-
- /**
- * Tests an empty folder.
- */
- @ParameterizedTest
- @MethodSource("pathCounters")
- public void testCleanEmptyDirectoryNullCtorArg(final PathCounters
pathCounters) throws IOException {
- applyCleanEmptyDirectory(new CleaningPathVisitor(pathCounters,
(String[]) null));
- }
-
- /**
* Tests a directory with one file of size 0.
*/
- @ParameterizedTest
- @MethodSource("cleaningPathVisitors")
- public void testCleanFolders1FileSize0(final CleaningPathVisitor visitor)
throws IOException {
+ @Test
+ public void testCleanDirectory1FileSize0() throws IOException {
FileUtils.copyDirectory(Paths.get("src/test/resources/org/apache/commons/io/dirs-1-file-size-0").toFile(),
tempDir.toFile());
- assertCounts(1, 1, 0, PathUtils.visitFileTree(visitor, tempDir));
+ assertCounts(1, 1, 0, PathUtils.cleanDirectory(tempDir));
}
/**
* Tests a directory with one file of size 1.
*/
- @ParameterizedTest
- @MethodSource("cleaningPathVisitors")
- public void testCleanFolders1FileSize1(final CleaningPathVisitor visitor)
throws IOException {
+ @Test
+ public void testCleanDirectory1FileSize1() throws IOException {
FileUtils.copyDirectory(Paths.get("src/test/resources/org/apache/commons/io/dirs-1-file-size-1").toFile(),
tempDir.toFile());
- assertCounts(1, 1, 1, PathUtils.visitFileTree(visitor, tempDir));
+ assertCounts(1, 1, 1, PathUtils.cleanDirectory(tempDir));
}
/**
- * Tests a directory with one file of size 1 but skip that file.
+ * Tests a directory with two subdirectorys, each containing one file of
size 1.
*/
- @ParameterizedTest
- @MethodSource("pathCounters")
- public void testCleanFolders1FileSize1Skip(final PathCounters
pathCounters) throws IOException {
-
FileUtils.copyDirectory(Paths.get("src/test/resources/org/apache/commons/io/dirs-1-file-size-1").toFile(),
+ @Test
+ public void testCleanDirectory2FileSize2() throws IOException {
+
FileUtils.copyDirectory(Paths.get("src/test/resources/org/apache/commons/io/dirs-2-file-size-2").toFile(),
tempDir.toFile());
- final String skipFileName = "file-size-1.bin";
- final CountingPathVisitor visitor = new
CleaningPathVisitor(pathCounters, skipFileName);
- assertCounts(1, 1, 1, PathUtils.visitFileTree(visitor, tempDir));
- final Path skippedFile = tempDir.resolve(skipFileName);
- Assertions.assertTrue(Files.exists(skippedFile));
- Files.delete(skippedFile);
+ assertCounts(3, 2, 2, PathUtils.cleanDirectory(tempDir));
}
/**
- * Tests a directory with two subdirectorys, each containing one file of
size 1.
+ * Tests an empty folder.
*/
- @ParameterizedTest
- @MethodSource("cleaningPathVisitors")
- public void testCleanFolders2FileSize2(final CleaningPathVisitor visitor)
throws IOException {
-
FileUtils.copyDirectory(Paths.get("src/test/resources/org/apache/commons/io/dirs-2-file-size-2").toFile(),
- tempDir.toFile());
- assertCounts(3, 2, 2, PathUtils.visitFileTree(visitor, tempDir));
+ @Test
+ public void testCleanEmptyDirectory() throws IOException {
+ assertCounts(1, 0, 0, PathUtils.cleanDirectory(tempDir));
}
}
diff --git a/src/test/java/org/apache/commons/io/file/TestArguments.java
b/src/test/java/org/apache/commons/io/file/TestArguments.java
index 428debb..2b9f210 100644
--- a/src/test/java/org/apache/commons/io/file/TestArguments.java
+++ b/src/test/java/org/apache/commons/io/file/TestArguments.java
@@ -23,11 +23,11 @@ import org.junit.jupiter.params.provider.Arguments;
class TestArguments {
- static Stream<Arguments> numberCounters() {
+ static Stream<Arguments> cleaningPathVisitors() {
// @formatter:off
return Stream.of(
- Arguments.of(Counters.longCounter()),
- Arguments.of(Counters.bigIntegerCounter()));
+ Arguments.of(CleaningPathVisitor.withBigIntegerCounters()),
+ Arguments.of(CleaningPathVisitor.withLongCounters()));
// @formatter:on
}
@@ -39,19 +39,19 @@ class TestArguments {
// @formatter:on
}
- static Stream<Arguments> cleaningPathVisitors() {
+ static Stream<Arguments> deletingPathVisitors() {
// @formatter:off
return Stream.of(
- Arguments.of(CleaningPathVisitor.withBigIntegerCounters()),
- Arguments.of(CleaningPathVisitor.withLongCounters()));
+ Arguments.of(DeletingPathVisitor.withBigIntegerCounters()),
+ Arguments.of(DeletingPathVisitor.withLongCounters()));
// @formatter:on
}
- static Stream<Arguments> deletingPathVisitors() {
+ static Stream<Arguments> numberCounters() {
// @formatter:off
return Stream.of(
- Arguments.of(DeletingPathVisitor.withBigIntegerCounters()),
- Arguments.of(DeletingPathVisitor.withLongCounters()));
+ Arguments.of(Counters.longCounter()),
+ Arguments.of(Counters.bigIntegerCounter()));
// @formatter:on
}