@@ -90,24 +90,32 @@ private List<TreeEntry> handleDirectoryChildren(int depth, Path dir, Predicate<P
9090
9191 // Loop has early exit?
9292 if (pathIterator .hasNext ()) {
93- if (filter == null ) {
94- var skippedChildren = new ArrayList <Path >();
95- pathIterator .forEachRemaining (skippedChildren ::add );
93+ childEntries .addAll (handleLeftOverChildren (depth , filter , pathIterator ));
94+ }
95+
96+ return childEntries ;
97+ }
98+
99+ private List <TreeEntry > handleLeftOverChildren (int depth , Predicate <Path > filter , Iterator <Path > pathIterator ) {
100+ var childEntries = new ArrayList <TreeEntry >();
101+
102+ if (filter == null ) {
103+ var skippedChildren = new ArrayList <Path >();
104+ pathIterator .forEachRemaining (skippedChildren ::add );
105+ var childrenSkippedEntry = new SkippedChildrenEntry (skippedChildren );
106+ childEntries .add (childrenSkippedEntry );
107+ } else {
108+ var skippedChildren = new ArrayList <Path >();
109+ while (pathIterator .hasNext ()) {
110+ var child = pathIterator .next ();
111+ var childEntry = handle (depth + 1 , child , filter );
112+ if (childEntry != null ) { // Is null if no children file is retained by filter
113+ skippedChildren .add (child );
114+ }
115+ }
116+ if (!skippedChildren .isEmpty ()) {
96117 var childrenSkippedEntry = new SkippedChildrenEntry (skippedChildren );
97118 childEntries .add (childrenSkippedEntry );
98- } else {
99- var skippedChildren = new ArrayList <Path >();
100- while (pathIterator .hasNext ()) {
101- var child = pathIterator .next ();
102- var childEntry = handle (depth + 1 , child , filter );
103- if (childEntry != null ) { // Is null if no children file is retained by filter
104- skippedChildren .add (child );
105- }
106- }
107- if (!skippedChildren .isEmpty ()) {
108- var childrenSkippedEntry = new SkippedChildrenEntry (skippedChildren );
109- childEntries .add (childrenSkippedEntry );
110- }
111119 }
112120 }
113121
0 commit comments