This is an automated email from the ASF dual-hosted git repository.
pvillard31 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 8e3732ea1f9 NIFI-16439 Fixed non-recursive listing of folders in
SmbjClientService (#11779)
8e3732ea1f9 is described below
commit 8e3732ea1f9fd48800d2ae457425d2bebbfb5a05
Author: Peter Turcsanyi <[email protected]>
AuthorDate: Wed Oct 7 17:23:35 2026 +0200
NIFI-16439 Fixed non-recursive listing of folders in SmbjClientService
(#11779)
---
.../apache/nifi/services/smb/SmbjClientService.java | 13 +++++++++++--
.../nifi/services/smb/SmbjClientServiceTest.java | 18 +++++++++++++++++-
2 files changed, 28 insertions(+), 3 deletions(-)
diff --git
a/nifi-extension-bundles/nifi-smb-bundle/nifi-smb-smbj-common/src/main/java/org/apache/nifi/services/smb/SmbjClientService.java
b/nifi-extension-bundles/nifi-smb-bundle/nifi-smb-smbj-common/src/main/java/org/apache/nifi/services/smb/SmbjClientService.java
index 2abe6ac1f8b..8abf06a6480 100644
---
a/nifi-extension-bundles/nifi-smb-bundle/nifi-smb-smbj-common/src/main/java/org/apache/nifi/services/smb/SmbjClientService.java
+++
b/nifi-extension-bundles/nifi-smb-bundle/nifi-smb-smbj-common/src/main/java/org/apache/nifi/services/smb/SmbjClientService.java
@@ -121,8 +121,17 @@ class SmbjClientService implements SmbClientService {
return stream(directory::spliterator, 0, false)
.map(entity -> buildSmbListableEntity(entity, path,
serviceLocation))
.filter(entity -> !specialDirectory(entity))
- .flatMap(listable -> listable.isDirectory() && recursive ?
listFiles(listable.getPathWithName(), recursive)
- : Stream.of(listable))
+ .flatMap(listable -> {
+ if (listable.isDirectory()) {
+ if (recursive) {
+ return listFiles(listable.getPathWithName(),
true);
+ } else {
+ return Stream.empty();
+ }
+ } else {
+ return Stream.of(listable);
+ }
+ })
.onClose(directory::close);
});
}
diff --git
a/nifi-extension-bundles/nifi-smb-bundle/nifi-smb-smbj-common/src/test/java/org/apache/nifi/services/smb/SmbjClientServiceTest.java
b/nifi-extension-bundles/nifi-smb-bundle/nifi-smb-smbj-common/src/test/java/org/apache/nifi/services/smb/SmbjClientServiceTest.java
index eff40254579..ef38b3587da 100644
---
a/nifi-extension-bundles/nifi-smb-bundle/nifi-smb-smbj-common/src/test/java/org/apache/nifi/services/smb/SmbjClientServiceTest.java
+++
b/nifi-extension-bundles/nifi-smb-bundle/nifi-smb-smbj-common/src/test/java/org/apache/nifi/services/smb/SmbjClientServiceTest.java
@@ -193,7 +193,23 @@ class SmbjClientServiceTest {
setupFileInfo(fileInfo, "file.txt", 0L);
when(subDirectory.spliterator()).thenReturn(List.of(fileInfo).spliterator());
- assertEquals(1, underTest.listFiles("root", true).count());
+ List<SmbListableEntity> listedFiles = underTest.listFiles("root",
true).toList();
+ assertEquals(1, listedFiles.size());
+ assertEquals("file.txt", listedFiles.getFirst().getName());
+ }
+
+ @Test
+ void listFilesShouldSkipSubdirectoriesWhenNonRecursive() {
+ when(share.openDirectory(eq("root"), any(), any(), any(), any(),
any())).thenReturn(directory);
+ setupFileInfo(subdirInfo, "subdir",
FileAttributes.FILE_ATTRIBUTE_DIRECTORY.getValue());
+ setupFileInfo(fileInfo, "file.txt", 0L);
+ when(directory.spliterator()).thenReturn(List.of(subdirInfo,
fileInfo).spliterator());
+
+ List<SmbListableEntity> listedFiles = underTest.listFiles("root",
false).toList();
+ assertEquals(1, listedFiles.size());
+ assertEquals("file.txt", listedFiles.getFirst().getName());
+
+ verify(share, never()).openDirectory(eq("root/subdir"), any(), any(),
any(), any(), any());
}
@Test