This is an automated email from the ASF dual-hosted git repository.

daim pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 92a32b1847 OAK-11666 : removed usage of Iterators.concat with 
oak-commons util (#2241)
92a32b1847 is described below

commit 92a32b18473fb7776e10adf78c2c45d2d380e267
Author: Rishabh Kumar <rishabhdaim1...@gmail.com>
AuthorDate: Wed Apr 23 09:38:13 2025 +0530

    OAK-11666 : removed usage of Iterators.concat with oak-commons util (#2241)
    
    Co-authored-by: Rishabh Kumar <d...@adobe.com>
---
 .../security/authentication/external/impl/DefaultSyncHandler.java   | 3 ++-
 .../external/impl/principal/AutoMembershipPrincipals.java           | 3 ++-
 .../external/impl/principal/AutoMembershipProvider.java             | 3 ++-
 .../jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java | 3 ++-
 .../apache/jackrabbit/oak/plugins/identifier/IdentifierManager.java | 3 ++-
 .../jackrabbit/oak/plugins/index/aggregate/AggregationCursor.java   | 3 ++-
 .../main/java/org/apache/jackrabbit/oak/query/UnionQueryImpl.java   | 2 +-
 .../authorization/composite/CompositeAccessControlManager.java      | 5 +++--
 .../security/authorization/permission/CompiledPermissionImpl.java   | 6 +++---
 .../apache/jackrabbit/oak/security/principal/EveryoneFilter.java    | 3 ++-
 .../apache/jackrabbit/oak/security/user/AuthorizableIterator.java   | 3 ++-
 .../jackrabbit/oak/security/user/DynamicMembershipTracker.java      | 5 +++--
 .../org/apache/jackrabbit/oak/security/user/MembershipProvider.java | 2 +-
 .../org/apache/jackrabbit/oak/security/user/MembershipWriter.java   | 5 +++--
 .../jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java    | 3 ++-
 .../oak/index/indexer/document/flatfile/FlatFileStoreIterator.java  | 4 ++--
 .../oak/spi/security/principal/CompositePrincipalProvider.java      | 2 +-
 .../apache/jackrabbit/oak/plugins/document/DocumentNodeState.java   | 3 ++-
 .../jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java   | 5 +++--
 19 files changed, 40 insertions(+), 26 deletions(-)

diff --git 
a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DefaultSyncHandler.java
 
b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DefaultSyncHandler.java
index 9d24a042a0..e47aee7a25 100644
--- 
a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DefaultSyncHandler.java
+++ 
b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DefaultSyncHandler.java
@@ -17,6 +17,7 @@
 package org.apache.jackrabbit.oak.spi.security.authentication.external.impl;
 
 import org.apache.jackrabbit.guava.common.collect.Iterators;
+import org.apache.jackrabbit.oak.commons.collections.IteratorUtils;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Deactivate;
@@ -226,7 +227,7 @@ public class DefaultSyncHandler implements SyncHandler, 
AutoMembershipAware {
         
         @Override
         public Iterator<Authorizable> getAutoMembers(@NotNull UserManager 
userManager, @NotNull Group group) {
-            return 
Iterators.concat(getServices().stream().map(autoMembershipConfig -> 
autoMembershipConfig.getAutoMembers(userManager, group)).iterator());
+            return 
IteratorUtils.chainedIterator(getServices().stream().map(autoMembershipConfig 
-> autoMembershipConfig.getAutoMembers(userManager, group)).iterator());
         }
     }
 }
diff --git 
a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/AutoMembershipPrincipals.java
 
b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/AutoMembershipPrincipals.java
index 28be75b0bc..fec44266bf 100644
--- 
a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/AutoMembershipPrincipals.java
+++ 
b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/AutoMembershipPrincipals.java
@@ -20,6 +20,7 @@ import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.Group;
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.guava.common.collect.Iterators;
+import org.apache.jackrabbit.oak.commons.collections.IteratorUtils;
 import org.apache.jackrabbit.oak.commons.collections.SetUtils;
 import 
org.apache.jackrabbit.oak.spi.security.authentication.external.basic.AutoMembershipConfig;
 import org.apache.jackrabbit.oak.spi.security.principal.GroupPrincipals;
@@ -96,7 +97,7 @@ final class AutoMembershipPrincipals {
     Iterator<Authorizable> getMembersFromAutoMembershipConfig(@NotNull Group 
group) {
         List<Iterator<? extends Authorizable>> results = new ArrayList<>();
         autoMembershipConfigMap.values().forEach(autoMembershipConfig -> 
results.add(autoMembershipConfig.getAutoMembers(userManager, group)));
-        return Iterators.concat(results.iterator());
+        return IteratorUtils.chainedIterator(results.iterator());
     }
 
     /**
diff --git 
a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/AutoMembershipProvider.java
 
b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/AutoMembershipProvider.java
index dd7bacbcdb..2305d45ab4 100644
--- 
a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/AutoMembershipProvider.java
+++ 
b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/AutoMembershipProvider.java
@@ -26,6 +26,7 @@ import org.apache.jackrabbit.oak.api.QueryEngine;
 import org.apache.jackrabbit.oak.api.Result;
 import org.apache.jackrabbit.oak.api.ResultRow;
 import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.commons.collections.IteratorUtils;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.plugins.memory.PropertyValues;
 import 
org.apache.jackrabbit.oak.spi.security.authentication.external.basic.AutoMembershipConfig;
@@ -95,7 +96,7 @@ class AutoMembershipProvider implements 
DynamicMembershipProvider {
         searchGlobalMembers(group, results);
         // add members from conditional automembership mapping
         
results.add(autoMembershipPrincipals.getMembersFromAutoMembershipConfig(group));
-        return Iterators.concat(results.iterator());
+        return IteratorUtils.chainedIterator(results.iterator());
     }
 
     @Override
diff --git 
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java
 
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java
index 8e1fc4767c..9abbe60171 100644
--- 
a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java
+++ 
b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java
@@ -39,6 +39,7 @@ import java.util.concurrent.TimeUnit;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.io.IOUtils;
+import org.apache.jackrabbit.oak.commons.collections.IteratorUtils;
 import org.apache.jackrabbit.oak.commons.time.Stopwatch;
 import org.apache.jackrabbit.core.data.AbstractDataStore;
 import org.apache.jackrabbit.core.data.DataIdentifier;
@@ -273,7 +274,7 @@ public abstract class AbstractSharedCachingDataStore 
extends AbstractDataStore
      */
     @Override
     public Iterator<DataIdentifier> getAllIdentifiers() throws 
DataStoreException {
-        return 
Iterators.concat(Iterators.transform(cache.getStagingCache().getAllIdentifiers(),
+        return 
IteratorUtils.chainedIterator(Iterators.transform(cache.getStagingCache().getAllIdentifiers(),
             id -> new DataIdentifier(id)), backend.getAllIdentifiers());
     }
 
diff --git 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/identifier/IdentifierManager.java
 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/identifier/IdentifierManager.java
index dab06589ca..858c51c03b 100644
--- 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/identifier/IdentifierManager.java
+++ 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/identifier/IdentifierManager.java
@@ -39,6 +39,7 @@ import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.commons.QueryUtils;
 import org.apache.jackrabbit.oak.commons.UUIDUtils;
 import org.apache.jackrabbit.oak.commons.collections.IterableUtils;
+import org.apache.jackrabbit.oak.commons.collections.IteratorUtils;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.plugins.memory.PropertyValues;
 import org.apache.jackrabbit.oak.plugins.memory.StringPropertyState;
@@ -237,7 +238,7 @@ public class IdentifierManager {
         return new Iterable<String>() {
             @Override
             public Iterator<String> iterator() {
-                return Iterators.concat(transform(result.getRows().iterator(), 
new RowToPaths()::apply));
+                return 
IteratorUtils.chainedIterator(transform(result.getRows().iterator(), new 
RowToPaths()::apply));
             }
 
             class RowToPaths implements Function<ResultRow, Iterator<String>> {
diff --git 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/aggregate/AggregationCursor.java
 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/aggregate/AggregationCursor.java
index 186b4f9a69..2900f77851 100644
--- 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/aggregate/AggregationCursor.java
+++ 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/aggregate/AggregationCursor.java
@@ -23,6 +23,7 @@ import java.util.Set;
 
 import org.apache.jackrabbit.oak.api.PropertyValue;
 import org.apache.jackrabbit.oak.api.Result.SizePrecision;
+import org.apache.jackrabbit.oak.commons.collections.IteratorUtils;
 import org.apache.jackrabbit.oak.plugins.index.cursor.AbstractCursor;
 import org.apache.jackrabbit.oak.spi.query.Cursor;
 import org.apache.jackrabbit.oak.spi.query.IndexRow;
@@ -89,7 +90,7 @@ class AggregationCursor extends AbstractCursor {
             currentRow = cursor.next();
             if (!currentRow.isVirtualRow()) {
                 String path = currentRow.getPath();
-                aggregates = Iterators.filter(Iterators.concat(
+                aggregates = Iterators.filter(IteratorUtils.chainedIterator(
                         Iterators.singletonIterator(path),
                         aggregator.getParents(rootState, path)),
                         x -> !seenPaths.contains(x));
diff --git 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/query/UnionQueryImpl.java 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/query/UnionQueryImpl.java
index 2ae273356f..4647cbdd5a 100644
--- a/oak-core/src/main/java/org/apache/jackrabbit/oak/query/UnionQueryImpl.java
+++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/query/UnionQueryImpl.java
@@ -325,7 +325,7 @@ public class UnionQueryImpl implements Query {
             rightIter = ((MeasuringIterator) rightRows).getDelegate();
         }
         if (orderBy == null) {
-            it = Iterators.concat(leftIter, rightIter);
+            it = IteratorUtils.chainedIterator(leftIter, rightIter);
         } else {
             // This would suggest either the sub queries are sorted by index 
or explicitly by QueryImpl (in case of traversing index)
             // So use mergeSorted here.
diff --git 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAccessControlManager.java
 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAccessControlManager.java
index 85d6c5b449..9dc11b000d 100644
--- 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAccessControlManager.java
+++ 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/composite/CompositeAccessControlManager.java
@@ -38,6 +38,7 @@ import 
org.apache.jackrabbit.api.security.JackrabbitAccessControlManager;
 import org.apache.jackrabbit.api.security.JackrabbitAccessControlPolicy;
 import 
org.apache.jackrabbit.commons.iterator.AccessControlPolicyIteratorAdapter;
 import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.commons.collections.IteratorUtils;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
 import 
org.apache.jackrabbit.oak.spi.security.authorization.accesscontrol.AbstractAccessControlManager;
@@ -109,7 +110,7 @@ class CompositeAccessControlManager extends 
AbstractAccessControlManager {
                 l.add(acMgr.getApplicablePolicies(absPath));
             }
         }
-        return new 
AccessControlPolicyIteratorAdapter(Iterators.concat(l.toArray(new 
AccessControlPolicyIterator[0])));
+        return new 
AccessControlPolicyIteratorAdapter(IteratorUtils.chainedIterator(l.toArray(new 
AccessControlPolicyIterator[0])));
     }
 
     @Override
@@ -190,6 +191,6 @@ class CompositeAccessControlManager extends 
AbstractAccessControlManager {
                 }
             }
         }
-        return Iterators.concat(iterators.build().toArray(new Iterator[0]));
+        return IteratorUtils.chainedIterator(iterators.build().toArray(new 
Iterator[0]));
     }
 }
diff --git 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java
 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java
index a9e7483995..eab7f64338 100644
--- 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java
+++ 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/permission/CompiledPermissionImpl.java
@@ -32,6 +32,7 @@ import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.commons.PathUtils;
+import org.apache.jackrabbit.oak.commons.collections.IteratorUtils;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.plugins.tree.TreeType;
 import org.apache.jackrabbit.oak.plugins.tree.TreeTypeProvider;
@@ -54,7 +55,6 @@ import org.jetbrains.annotations.Nullable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static org.apache.jackrabbit.guava.common.collect.Iterators.concat;
 import static 
org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission.ALL;
 import static 
org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission.EMPTY;
 
@@ -441,7 +441,7 @@ final class CompiledPermissionImpl implements 
CompiledPermissions, PermissionCon
         if (groupStore != null) {
             groupEntries = groupStore.getEntryIterator(predicate);
         }
-        return concat(userEntries, groupEntries);
+        return IteratorUtils.chainedIterator(userEntries, groupEntries);
     }
 
     @Nullable
@@ -605,7 +605,7 @@ final class CompiledPermissionImpl implements 
CompiledPermissions, PermissionCon
             if (groupStore != null) {
                 groupIt = new LazyIterator(this, false, predicate);
             }
-            return concat(userIt, groupIt);
+            return IteratorUtils.chainedIterator(userIt, groupIt);
         }
 
         @NotNull
diff --git 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/EveryoneFilter.java
 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/EveryoneFilter.java
index 580c21e44a..e2e5c0bdfe 100644
--- 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/EveryoneFilter.java
+++ 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/principal/EveryoneFilter.java
@@ -18,6 +18,7 @@ package org.apache.jackrabbit.oak.security.principal;
 
 import org.apache.jackrabbit.guava.common.collect.Iterators;
 import org.apache.jackrabbit.api.security.principal.PrincipalManager;
+import org.apache.jackrabbit.oak.commons.collections.IteratorUtils;
 import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
@@ -47,7 +48,7 @@ public final class EveryoneFilter {
     public static Iterator<Principal> filter(@NotNull Iterator<Principal> 
resultPrincipals, @Nullable String nameHint, int searchType, long offset, long 
limit) {
         boolean noRange = offset == 0 && limit == Long.MAX_VALUE;
         if (noRange && matchesEveryone(nameHint, searchType)) {
-            Iterator<Principal> principals = 
Iterators.concat(resultPrincipals, 
Iterators.singletonIterator(EveryonePrincipal.getInstance()));
+            Iterator<Principal> principals = 
IteratorUtils.chainedIterator(resultPrincipals, 
Iterators.singletonIterator(EveryonePrincipal.getInstance()));
             return Iterators.filter(principals, new EveryonePredicate()::test);
         } else {
             return resultPrincipals;
diff --git 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableIterator.java
 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableIterator.java
index 9179bcfd7d..66b742f32a 100644
--- 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableIterator.java
+++ 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/AuthorizableIterator.java
@@ -20,6 +20,7 @@ import org.apache.jackrabbit.guava.common.collect.Iterators;
 import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.commons.LongUtils;
+import org.apache.jackrabbit.oak.commons.collections.IteratorUtils;
 import org.apache.jackrabbit.oak.spi.security.user.AuthorizableType;
 import org.jetbrains.annotations.NotNull;
 import org.slf4j.Logger;
@@ -74,7 +75,7 @@ final class AuthorizableIterator implements 
Iterator<Authorizable> {
                 size = LongUtils.safeAdd(size, l);
             }
         }
-        return new AuthorizableIterator(Iterators.concat(it1, it2), size, 
filterDuplicates);
+        return new AuthorizableIterator(IteratorUtils.chainedIterator(it1, 
it2), size, filterDuplicates);
     }
 
     private AuthorizableIterator(Iterator<? extends Authorizable> 
authorizables, long size, boolean filterDuplicates) {
diff --git 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/DynamicMembershipTracker.java
 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/DynamicMembershipTracker.java
index fb3473f37e..ca34a96df2 100644
--- 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/DynamicMembershipTracker.java
+++ 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/DynamicMembershipTracker.java
@@ -21,6 +21,7 @@ import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.Group;
 import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.commons.collections.IteratorUtils;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.spi.security.user.DynamicMembershipProvider;
 import org.apache.jackrabbit.oak.spi.security.user.DynamicMembershipService;
@@ -101,7 +102,7 @@ public class DynamicMembershipTracker extends 
AbstractServiceTracker<DynamicMemb
             for (int i = 0; i < size; i++) {
                 members[i] = providers.get(i).getMembers(group, 
includeInherited);
             }
-            return Iterators.concat(members);
+            return IteratorUtils.chainedIterator(members);
         }
 
         @Override
@@ -121,7 +122,7 @@ public class DynamicMembershipTracker extends 
AbstractServiceTracker<DynamicMemb
             for (int i = 0; i < size; i++) {
                 groups[i] = providers.get(i).getMembership(authorizable, 
includeInherited);
             }
-            return Iterators.concat(groups);
+            return IteratorUtils.chainedIterator(groups);
         }
     }
 }
diff --git 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipProvider.java
 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipProvider.java
index 3159df00d0..aa9c856162 100644
--- 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipProvider.java
+++ 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipProvider.java
@@ -354,7 +354,7 @@ class MembershipProvider extends AuthorizableBaseProvider {
         private Iterator<String> propertyValues;
 
         private MemberReferenceIterator(@NotNull Tree groupTree) {
-            this.trees = Iterators.concat(
+            this.trees = IteratorUtils.chainedIterator(
                     Iterators.singletonIterator(groupTree),
                     
groupTree.getChild(REP_MEMBERS_LIST).getChildren().iterator()
             );
diff --git 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipWriter.java
 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipWriter.java
index 107f824454..5d33e2bc3f 100644
--- 
a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipWriter.java
+++ 
b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/MembershipWriter.java
@@ -26,6 +26,7 @@ import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.api.Type;
+import org.apache.jackrabbit.oak.commons.collections.IteratorUtils;
 import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
 import org.apache.jackrabbit.oak.plugins.memory.PropertyBuilder;
 import org.jetbrains.annotations.NotNull;
@@ -74,7 +75,7 @@ public class MembershipWriter {
     Set<String> addMembers(@NotNull Tree groupTree, @NotNull Map<String, 
String> memberIds) {
         // check all possible rep:members properties for the new member and 
also find the one with the least values
         Tree membersList = groupTree.getChild(UserConstants.REP_MEMBERS_LIST);
-        Iterator<Tree> trees = Iterators.concat(
+        Iterator<Tree> trees = IteratorUtils.chainedIterator(
                 Iterators.singletonIterator(groupTree),
                 membersList.getChildren().iterator()
         );
@@ -203,7 +204,7 @@ public class MembershipWriter {
     @NotNull
     Set<String> removeMembers(@NotNull Tree groupTree, @NotNull Map<String, 
String> memberIds) {
         Tree membersList = groupTree.getChild(UserConstants.REP_MEMBERS_LIST);
-        Iterator<Tree> trees = Iterators.concat(
+        Iterator<Tree> trees = IteratorUtils.chainedIterator(
                 Iterators.singletonIterator(groupTree),
                 membersList.getChildren().iterator()
         );
diff --git 
a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
 
b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
index a27890a6b1..be0bcb19fe 100644
--- 
a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
+++ 
b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
@@ -45,6 +45,7 @@ import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.commons.PerfLogger;
 import org.apache.jackrabbit.oak.commons.collections.IterableUtils;
+import org.apache.jackrabbit.oak.commons.collections.IteratorUtils;
 import org.apache.jackrabbit.oak.commons.collections.StreamUtils;
 import org.apache.jackrabbit.oak.commons.conditions.Validate;
 import org.apache.jackrabbit.oak.commons.properties.SystemPropertySupplier;
@@ -1618,7 +1619,7 @@ public class LucenePropertyIndex extends FulltextIndex {
                 .transform(path -> new FulltextResultRow(path, 0, null, null, 
null));
 
         //Property index itr should come first
-        return Iterators.concat(propIndex.iterator(), itr);
+        return IteratorUtils.chainedIterator(propIndex.iterator(), itr);
     }
 
     class DelayedLuceneFacetProvider implements FacetProvider {
diff --git 
a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreIterator.java
 
b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreIterator.java
index f73afb0a66..96eb9c4f62 100644
--- 
a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreIterator.java
+++ 
b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/flatfile/FlatFileStoreIterator.java
@@ -21,6 +21,7 @@ package 
org.apache.jackrabbit.oak.index.indexer.document.flatfile;
 
 import org.apache.jackrabbit.guava.common.collect.AbstractIterator;
 import org.apache.jackrabbit.oak.commons.IOUtils;
+import org.apache.jackrabbit.oak.commons.collections.IteratorUtils;
 import org.apache.jackrabbit.oak.index.indexer.document.NodeStateEntry;
 import 
org.apache.jackrabbit.oak.index.indexer.document.flatfile.linkedList.FlatFileBufferLinkedList;
 import 
org.apache.jackrabbit.oak.index.indexer.document.flatfile.linkedList.NodeStateEntryList;
@@ -36,7 +37,6 @@ import java.io.Closeable;
 import java.util.Iterator;
 import java.util.Set;
 
-import static org.apache.jackrabbit.guava.common.collect.Iterators.concat;
 import static 
org.apache.jackrabbit.guava.common.collect.Iterators.singletonIterator;
 
 class FlatFileStoreIterator extends AbstractIterator<NodeStateEntry> 
implements Iterator<NodeStateEntry>, Closeable {
@@ -149,7 +149,7 @@ class FlatFileStoreIterator extends 
AbstractIterator<NodeStateEntry> implements
     }
 
     private Iterable<NodeStateEntry> getEntries() {
-        return () -> concat(singletonIterator(current), queueIterator());
+        return () -> IteratorUtils.chainedIterator(singletonIterator(current), 
queueIterator());
     }
 
     private Iterator<NodeStateEntry> queueIterator() {
diff --git 
a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProvider.java
 
b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProvider.java
index 11c50a562c..8bed2926ec 100644
--- 
a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProvider.java
+++ 
b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/principal/CompositePrincipalProvider.java
@@ -119,7 +119,7 @@ public class CompositePrincipalProvider implements 
PrincipalProvider {
                 iterators[i++] = provider.findPrincipals(nameHint, searchType);
             }
         }
-        return Iterators.concat(iterators);
+        return IteratorUtils.chainedIterator(iterators);
     }
 
     @NotNull
diff --git 
a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java
 
b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java
index ea24d3abcd..2bbefdef6a 100644
--- 
a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java
+++ 
b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java
@@ -28,6 +28,7 @@ import 
org.apache.jackrabbit.guava.common.collect.TreeTraverser;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.cache.CacheValue;
 import org.apache.jackrabbit.oak.commons.collections.IterableUtils;
+import org.apache.jackrabbit.oak.commons.collections.IteratorUtils;
 import org.apache.jackrabbit.oak.commons.conditions.Validate;
 import org.apache.jackrabbit.oak.commons.json.JsopBuilder;
 import org.apache.jackrabbit.oak.commons.json.JsopReader;
@@ -364,7 +365,7 @@ public class DocumentNodeState extends 
AbstractDocumentNodeState implements Cach
                     if (bundlingContext.hasOnlyBundledChildren()){
                         return getBundledChildren();
                     }
-                    return Iterators.concat(getBundledChildren(), new 
ChildNodeEntryIterator());
+                    return IteratorUtils.chainedIterator(getBundledChildren(), 
new ChildNodeEntryIterator());
                 }
 
                 return new ChildNodeEntryIterator();
diff --git 
a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
 
b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
index 2bb2c6b0e0..4314fa9932 100644
--- 
a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
+++ 
b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
@@ -61,6 +61,7 @@ import 
org.apache.jackrabbit.guava.common.util.concurrent.UncheckedExecutionExce
 import org.apache.jackrabbit.oak.cache.CacheStats;
 import org.apache.jackrabbit.oak.cache.CacheValue;
 import org.apache.jackrabbit.oak.commons.collections.IterableUtils;
+import org.apache.jackrabbit.oak.commons.collections.IteratorUtils;
 import org.apache.jackrabbit.oak.commons.collections.ListUtils;
 import org.apache.jackrabbit.oak.commons.collections.MapUtils;
 import org.apache.jackrabbit.oak.commons.collections.SetUtils;
@@ -1266,7 +1267,7 @@ public class MongoDocumentStore implements DocumentStore {
             }
 
             // if there are some changes left, we'll apply them one after 
another i.e. failed ones
-            final Iterator<UpdateOp> it = 
Iterators.concat(operationsToCover.values().iterator(), duplicates.iterator());
+            final Iterator<UpdateOp> it = 
IteratorUtils.chainedIterator(operationsToCover.values().iterator(), 
duplicates.iterator());
             while (it.hasNext()) {
                 UpdateOp op = it.next();
                 it.remove();
@@ -1364,7 +1365,7 @@ public class MongoDocumentStore implements DocumentStore {
             }
 
             // if there are some changes left, we'll apply them one after 
another
-            Iterator<UpdateOp> it = 
Iterators.concat(operationsToCover.values().iterator(), duplicates.iterator());
+            Iterator<UpdateOp> it = 
IteratorUtils.chainedIterator(operationsToCover.values().iterator(), 
duplicates.iterator());
             while (it.hasNext()) {
                 UpdateOp op = it.next();
                 it.remove();

Reply via email to