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

Reply via email to