You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2022/06/21 21:23:55 UTC
[nifi] branch main updated: NIFI-9996 - ListFile does not list root directory when Recurse Subdirectories is active and Path Filter is specified (#6110)
This is an automated email from the ASF dual-hosted git repository.
markap14 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push:
new f9beb507fd NIFI-9996 - ListFile does not list root directory when Recurse Subdirectories is active and Path Filter is specified (#6110)
f9beb507fd is described below
commit f9beb507fdbde55c62170949393aeb542fe23b39
Author: greyp9 <gr...@users.noreply.github.com>
AuthorDate: Tue Jun 21 17:23:49 2022 -0400
NIFI-9996 - ListFile does not list root directory when Recurse Subdirectories is active and Path Filter is specified (#6110)
---
.../apache/nifi/processors/standard/ListFile.java | 15 ++++------
.../nifi/processors/standard/TestListFile.java | 34 ++++++++++++++++++++++
2 files changed, 39 insertions(+), 10 deletions(-)
diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ListFile.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ListFile.java
index 9cae320a70..28a4694911 100644
--- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ListFile.java
+++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/ListFile.java
@@ -692,21 +692,16 @@ public class ListFile extends AbstractListProcessor<FileInfo> {
return false;
}
- final Path relativePath = basePath.relativize(path).getParent();
- final String relativeDir = relativePath == null ? "" : relativePath.toString();
+ final Path relativePath = basePath.relativize(path);
+ final Path relativePathParent = relativePath.getParent();
+ final String relativeDir = relativePathParent == null ? "" : relativePathParent.toString();
final String filename = path.getFileName().toString();
final TimingInfo timingInfo = performanceTracker.getTimingInfo(relativeDir, filename);
final File file = path.toFile();
- if (pathPattern != null) {
- if (relativePath == null || relativePath.toString().isEmpty()) {
- return false;
- }
-
- if (!pathPattern.matcher(relativePath.toString()).matches()) {
- return false;
- }
+ if ((pathPattern != null) && (!pathPattern.matcher(relativeDir).matches())) {
+ return false;
}
final boolean matchesFilter = filePattern.matcher(filename).matches();
diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestListFile.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestListFile.java
index 88a7189bdb..e10d23cd2c 100644
--- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestListFile.java
+++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/test/java/org/apache/nifi/processors/standard/TestListFile.java
@@ -694,6 +694,40 @@ public class TestListFile {
assertEquals(1, successFiles3.size());
}
+ @Test
+ public void testFilterPathPatternNegative() throws Exception {
+ final long now = getTestModifiedTime();
+
+ final File subdirA = new File(TESTDIR + "/AAA");
+ assertTrue(subdirA.mkdirs());
+
+ final File subdirL = new File(TESTDIR + "/LOG");
+ assertTrue(subdirL.mkdirs());
+
+ final File file1 = new File(TESTDIR + "/file1.txt");
+ assertTrue(file1.createNewFile());
+ assertTrue(file1.setLastModified(now));
+
+ final File file2 = new File(TESTDIR + "/AAA/file2.txt");
+ assertTrue(file2.createNewFile());
+ assertTrue(file2.setLastModified(now));
+
+ final File file3 = new File(TESTDIR + "/LOG/file3.txt");
+ assertTrue(file3.createNewFile());
+ assertTrue(file3.setLastModified(now));
+
+ runner.setProperty(ListFile.DIRECTORY, testDir.getAbsolutePath());
+ runner.setProperty(ListFile.FILE_FILTER, ListFile.FILE_FILTER.getDefaultValue());
+ runner.setProperty(ListFile.PATH_FILTER, "^((?!LOG).)*$");
+ runner.setProperty(ListFile.RECURSE, "true");
+ assertVerificationOutcome(Outcome.SUCCESSFUL, "Successfully listed .* Found 3 objects. Of those, 2 match the filter.");
+ runNext();
+
+ runner.assertAllFlowFilesTransferred(ListFile.REL_SUCCESS);
+ final List<MockFlowFile> successFiles1 = runner.getFlowFilesForRelationship(ListFile.REL_SUCCESS);
+ assertEquals(2, successFiles1.size());
+ }
+
@Test
public void testRecurse() throws Exception {
final long now = getTestModifiedTime();