This is an automated email from the ASF dual-hosted git repository. daim pushed a commit to branch OAK-11451 in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
commit b1e2be891e6adb292728f0e809f978e94afcb0c3 Author: Rishabh Kumar <[email protected]> AuthorDate: Sun Feb 2 15:37:55 2025 +0530 OAK-11451 : removed usage of Guava Iterables.concat --- .../authentication/external/impl/ExternalLoginModule.java | 3 ++- .../impl/principal/ExternalGroupPrincipalProvider.java | 2 +- .../impl/PrincipalBasedAccessControlManager.java | 3 ++- .../authorization/principalbased/PrinicipalBasedReadTest.java | 3 ++- .../oak/plugins/index/nodetype/NodeTypeIndexLookup.java | 3 ++- .../oak/plugins/index/property/PropertyIndexLookup.java | 4 +++- .../oak/plugins/index/property/PropertyIndexPlan.java | 4 +++- .../oak/plugins/index/reference/ReferenceIndex.java | 5 ++++- .../oak/plugins/migration/AbstractDecoratedNodeState.java | 4 +++- .../oak/plugins/migration/version/VersionHistoryUtil.java | 4 ++-- .../oak/plugins/nodetype/EffectiveNodeTypeImpl.java | 8 ++++++-- .../apache/jackrabbit/oak/plugins/nodetype/EffectiveType.java | 3 +-- .../oak/security/authentication/token/TokenLoginModule.java | 3 ++- .../oak/security/authentication/user/LoginModuleImpl.java | 3 ++- .../oak/security/authorization/AuthorizationContext.java | 3 ++- .../oak/security/internal/SecurityProviderRegistration.java | 5 ++++- .../oak/plugins/index/lucene/LuceneIndexNodeManager.java | 3 ++- .../oak/plugins/index/lucene/LucenePropertyIndex.java | 3 ++- .../oak/plugins/index/lucene/hybrid/LuceneDocumentHolder.java | 3 ++- .../index/lucene/property/HybridPropertyIndexLookup.java | 3 ++- .../index/lucene/property/UniquenessConstraintValidator.java | 3 ++- .../oak/plugins/index/lucene/util/IndexDefinitionBuilder.java | 3 ++- .../plugins/index/lucene/writer/MultiplexingIndexWriter.java | 4 ++-- .../oak/index/indexer/document/NodeStateEntryTraverser.java | 4 ++-- .../main/java/org/apache/jackrabbit/oak/run/cli/Options.java | 3 ++- .../index/search/spi/editor/FulltextDocumentMaker.java | 3 ++- .../plugins/index/search/spi/editor/FulltextIndexEditor.java | 3 ++- .../oak/plugins/index/search/util/IndexDefinitionBuilder.java | 3 ++- .../jackrabbit/oak/spi/security/CompositeConfiguration.java | 6 ++++-- .../java/org/apache/jackrabbit/oak/segment/MapRecord.java | 10 +++++++--- .../org/apache/jackrabbit/oak/plugins/document/Branch.java | 10 ++++++---- .../apache/jackrabbit/oak/plugins/document/NodeDocument.java | 7 ++++++- .../jackrabbit/oak/plugins/document/TieredDiffCache.java | 3 ++- .../oak/plugins/document/cache/NodeDocumentCache.java | 5 +++-- .../oak/plugins/document/mongo/MongoVersionGCSupport.java | 4 ++-- .../oak/plugins/document/rdb/RDBVersionGCSupport.java | 3 ++- .../jackrabbit/oak/plugins/memory/ModifiedNodeState.java | 11 ++++++----- .../org/apache/jackrabbit/oak/spi/commit/MoveTracker.java | 4 +++- 38 files changed, 106 insertions(+), 55 deletions(-) diff --git a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ExternalLoginModule.java b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ExternalLoginModule.java index 723e4d1030..9239ebdac6 100644 --- a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ExternalLoginModule.java +++ b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/ExternalLoginModule.java @@ -16,6 +16,7 @@ */ package org.apache.jackrabbit.oak.spi.security.authentication.external.impl; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.base.Stopwatch; import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.api.security.user.UserManager; @@ -457,7 +458,7 @@ public class ExternalLoginModule extends AbstractLoginModule { if (creds != null) { attributes.putAll(credentialsSupport.getAttributes(creds)); } - return new AuthInfoImpl(userId, attributes, Iterables.concat(principals, subject.getPrincipals())); + return new AuthInfoImpl(userId, attributes, IterableUtils.chainedIterable(principals, subject.getPrincipals())); } @NotNull diff --git a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalGroupPrincipalProvider.java b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalGroupPrincipalProvider.java index 73642cf86a..38a08b767e 100644 --- a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalGroupPrincipalProvider.java +++ b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalGroupPrincipalProvider.java @@ -166,7 +166,7 @@ class ExternalGroupPrincipalProvider implements PrincipalProvider, ExternalIdent this.hasOnlyDynamicGroups = hasOnlyDynamicGroups; autoMembershipPrincipals = new AutoMembershipPrincipals(userManager, - Collections.singletonMap(idpName, Iterables.toArray(Iterables.concat(syncConfig.user().getAutoMembership(),syncConfig.group().getAutoMembership()), String.class)), + Collections.singletonMap(idpName, Iterables.toArray(IterableUtils.chainedIterable(syncConfig.user().getAutoMembership(),syncConfig.group().getAutoMembership()), String.class)), Collections.singletonMap(idpName, syncConfig.user().getAutoMembershipConfig())); groupAutoMembershipPrincipals = (idpNamesWithDynamicGroups.isEmpty()) ? null : new AutoMembershipPrincipals(userManager, diff --git a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalBasedAccessControlManager.java b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalBasedAccessControlManager.java index 9d55463b5f..929a6ff81d 100644 --- a/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalBasedAccessControlManager.java +++ b/oak-authorization-principalbased/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/principalbased/impl/PrincipalBasedAccessControlManager.java @@ -16,6 +16,7 @@ */ package org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl; +import org.apache.commons.collections4.IterableUtils; import org.apache.commons.lang3.StringUtils; import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.api.security.JackrabbitAccessControlPolicy; @@ -233,7 +234,7 @@ class PrincipalBasedAccessControlManager extends AbstractAccessControlManager im Iterable<PrincipalAccessControlList> acls = Iterables.transform(m.entrySet(), entry -> new ImmutablePrincipalPolicy(entry.getKey(), filter.getOakPath(entry.getKey()), entry.getValue(), mgrProvider.getRestrictionProvider(), getNamePathMapper())); if (ReadPolicy.hasEffectiveReadPolicy(readPaths, oakPath)) { - Iterable<AccessControlPolicy> iterable = Iterables.concat(acls, Collections.singleton(ReadPolicy.INSTANCE)); + Iterable<AccessControlPolicy> iterable = IterableUtils.chainedIterable(acls, Collections.singleton(ReadPolicy.INSTANCE)); return Iterables.toArray(iterable, AccessControlPolicy.class); } else { return Iterables.toArray(acls, PrincipalAccessControlList.class); diff --git a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/principalbased/PrinicipalBasedReadTest.java b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/principalbased/PrinicipalBasedReadTest.java index 8587b57954..8f0cdb44d4 100644 --- a/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/principalbased/PrinicipalBasedReadTest.java +++ b/oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/authorization/principalbased/PrinicipalBasedReadTest.java @@ -16,6 +16,7 @@ */ package org.apache.jackrabbit.oak.benchmark.authorization.principalbased; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.guava.common.collect.Iterators; import org.apache.jackrabbit.api.JackrabbitSession; @@ -159,7 +160,7 @@ public class PrinicipalBasedReadTest extends ReadDeepTreeTest { } added = acl.addAccessControlEntry(principal, privileges); } else { - for (JackrabbitAccessControlPolicy policy : Iterables.concat(Arrays.asList(acMgr.getApplicablePolicies(principal)), + for (JackrabbitAccessControlPolicy policy : IterableUtils.chainedIterable(Arrays.asList(acMgr.getApplicablePolicies(principal)), Arrays.asList(acMgr.getPolicies(principal)))) { if (policy instanceof PrincipalAccessControlList) { acl = (PrincipalAccessControlList) policy; diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/nodetype/NodeTypeIndexLookup.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/nodetype/NodeTypeIndexLookup.java index ad6f961578..c2b0f9efca 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/nodetype/NodeTypeIndexLookup.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/nodetype/NodeTypeIndexLookup.java @@ -18,6 +18,7 @@ package org.apache.jackrabbit.oak.plugins.index.nodetype; import static org.apache.jackrabbit.oak.plugins.memory.PropertyValues.newName; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.JcrConstants; import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexLookup; import org.apache.jackrabbit.oak.spi.mount.MountInfoProvider; @@ -89,7 +90,7 @@ class NodeTypeIndexLookup implements JcrConstants { */ public Iterable<String> query(Filter filter) { PropertyIndexLookup lookup = new PropertyIndexLookup(root, mountInfoProvider); - return Iterables.concat( + return IterableUtils.chainedIterable( lookup.query(filter, JCR_PRIMARYTYPE, newName(filter.getPrimaryTypes())), lookup.query(filter, JCR_MIXINTYPES, newName(filter.getMixinTypes()))); } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexLookup.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexLookup.java index 389bf5e263..4a39124031 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexLookup.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexLookup.java @@ -28,12 +28,14 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.PropertyValue; import org.apache.jackrabbit.oak.api.Type; import org.apache.jackrabbit.oak.commons.PathUtils; +import org.apache.jackrabbit.oak.commons.collections.StreamUtils; import org.apache.jackrabbit.oak.plugins.index.IndexConstants; import org.apache.jackrabbit.oak.plugins.index.property.strategy.IndexStoreStrategy; import org.apache.jackrabbit.oak.spi.mount.MountInfoProvider; @@ -126,7 +128,7 @@ public class PropertyIndexLookup { iterables.add(s.query(filter, propertyName, indexMeta, encode(value, pattern))); } - return Iterables.concat(iterables); + return StreamUtils.toStream(iterables).flatMap(StreamUtils::toStream).collect(Collectors.toList()); } Set<IndexStoreStrategy> getStrategies(NodeState definition) { diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexPlan.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexPlan.java index d03e25a44c..0cf76e39da 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexPlan.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexPlan.java @@ -24,7 +24,9 @@ import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.PROPERTY_NA import java.util.ArrayList; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.commons.collections.SetUtils; import org.apache.jackrabbit.oak.commons.collections.StreamUtils; @@ -216,7 +218,7 @@ public class PropertyIndexPlan { for (IndexStoreStrategy s : strategies) { iterables.add(s.query(filter, name, definition, values)); } - Cursor cursor = Cursors.newPathCursor(Iterables.concat(iterables), + Cursor cursor = Cursors.newPathCursor(StreamUtils.toStream(iterables).flatMap(StreamUtils::toStream).collect(Collectors.toList()), settings); if (depth > 1) { cursor = Cursors.newAncestorCursor(cursor, depth - 1, settings); diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceIndex.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceIndex.java index a4810b12eb..f450fd1ff6 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceIndex.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/reference/ReferenceIndex.java @@ -33,7 +33,10 @@ import static org.apache.jackrabbit.oak.plugins.index.reference.NodeReferenceCon import java.util.ArrayList; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; +import org.apache.commons.collections4.IterableUtils; +import org.apache.jackrabbit.oak.commons.collections.StreamUtils; import org.apache.jackrabbit.oak.plugins.index.property.Multiplexers; import org.apache.jackrabbit.oak.plugins.index.property.strategy.IndexStoreStrategy; import org.apache.jackrabbit.oak.query.SQL2Parser; @@ -133,7 +136,7 @@ class ReferenceIndex implements QueryIndex { iterables.add(s.query(filter, index + "(" + uuid + ")", indexRoot, Set.of(uuid))); } - Iterable<String> paths = Iterables.concat(iterables); + Iterable<String> paths = StreamUtils.toStream(iterables).flatMap(StreamUtils::toStream).collect(Collectors.toList()); if (!"*".equals(name)) { paths = filter(paths, path -> name.equals(getName(path))); diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/AbstractDecoratedNodeState.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/AbstractDecoratedNodeState.java index a284301da4..abc3f2259a 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/AbstractDecoratedNodeState.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/AbstractDecoratedNodeState.java @@ -16,6 +16,7 @@ */ package org.apache.jackrabbit.oak.plugins.migration; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Type; @@ -35,6 +36,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashSet; +import java.util.Objects; import java.util.Set; import static org.apache.jackrabbit.oak.plugins.tree.TreeConstants.OAK_CHILD_ORDER; @@ -171,7 +173,7 @@ public abstract class AbstractDecoratedNodeState extends AbstractNodeState { final Iterable<PropertyState> propertyStates = Iterables.transform( delegate.getProperties(), propertyState -> decorate(propertyState)); - return Iterables.filter(Iterables.concat(propertyStates, getNewPropertyStates()), x -> x != null); + return Iterables.filter(IterableUtils.chainedIterable(propertyStates, getNewPropertyStates()), Objects::nonNull); } /** diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/version/VersionHistoryUtil.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/version/VersionHistoryUtil.java index 4c16650e57..b2194284de 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/version/VersionHistoryUtil.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/migration/version/VersionHistoryUtil.java @@ -16,7 +16,6 @@ */ package org.apache.jackrabbit.oak.plugins.migration.version; -import static org.apache.jackrabbit.guava.common.collect.Iterables.concat; import static java.util.Collections.singleton; import static org.apache.jackrabbit.JcrConstants.JCR_BASEVERSION; import static org.apache.jackrabbit.JcrConstants.JCR_CREATED; @@ -38,6 +37,7 @@ import java.util.Calendar; import java.util.List; import java.util.Set; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.oak.api.Type; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.commons.collections.SetUtils; @@ -55,7 +55,7 @@ public class VersionHistoryUtil { private static final Logger LOG = LoggerFactory.getLogger(VersionHistoryUtil.class); public static String getRelativeVersionHistoryPath(String versionableUuid) { - return String.join("/", concat( + return String.join("/", IterableUtils.chainedIterable( singleton(""), getRelativeVersionHistoryPathSegments(versionableUuid), singleton(versionableUuid))); diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/EffectiveNodeTypeImpl.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/EffectiveNodeTypeImpl.java index a7ffed97b2..6ec4606c32 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/EffectiveNodeTypeImpl.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/EffectiveNodeTypeImpl.java @@ -24,6 +24,7 @@ import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import javax.jcr.PropertyType; import javax.jcr.RepositoryException; @@ -35,8 +36,10 @@ import javax.jcr.nodetype.NodeDefinition; import javax.jcr.nodetype.NodeType; import javax.jcr.nodetype.PropertyDefinition; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Tree; +import org.apache.jackrabbit.oak.commons.collections.StreamUtils; import org.apache.jackrabbit.oak.plugins.value.jcr.PartialValueFactory; import org.apache.jackrabbit.oak.spi.nodetype.EffectiveNodeType; import org.jetbrains.annotations.NotNull; @@ -204,8 +207,9 @@ class EffectiveNodeTypeImpl implements EffectiveNodeType { @NotNull @Override public Iterable<NodeDefinition> getNamedNodeDefinitions(@NotNull final String oakName) { - return Iterables.concat(Iterables.transform(nodeTypes.values(), - input -> input.getDeclaredNamedNodeDefinitions(oakName))); + return StreamUtils.toStream(Iterables.transform(nodeTypes.values(), input -> input.getDeclaredNamedNodeDefinitions(oakName))) + .flatMap(StreamUtils::toStream) + .collect(Collectors.toList()); } /** diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/EffectiveType.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/EffectiveType.java index 44f42457e3..434c778eb4 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/EffectiveType.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/nodetype/EffectiveType.java @@ -31,7 +31,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import static java.util.Objects.requireNonNull; -import static org.apache.jackrabbit.guava.common.collect.Iterables.concat; import static org.apache.jackrabbit.JcrConstants.JCR_DEFAULTPRIMARYTYPE; import static org.apache.jackrabbit.JcrConstants.JCR_MANDATORY; import static org.apache.jackrabbit.JcrConstants.JCR_MIXINTYPES; @@ -243,7 +242,7 @@ class EffectiveType { NodeState residual = type .getChildNode(REP_RESIDUAL_CHILD_NODE_DEFINITIONS); - for (ChildNodeEntry entry : concat( + for (ChildNodeEntry entry : IterableUtils.chainedIterable( named.getChildNodeEntries(), residual.getChildNodeEntries())) { NodeState definition = entry.getNodeState(); diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenLoginModule.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenLoginModule.java index c159845a3d..f7d8434d32 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenLoginModule.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/token/TokenLoginModule.java @@ -31,6 +31,7 @@ import javax.security.auth.callback.Callback; import javax.security.auth.callback.UnsupportedCallbackException; import javax.security.auth.login.LoginException; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.api.security.authentication.token.TokenCredentials; import org.apache.jackrabbit.oak.api.AuthInfo; @@ -157,7 +158,7 @@ public final class TokenLoginModule extends AbstractLoginModule { public boolean commit() throws LoginException { if (tokenCredentials != null && tokenInfo != null) { principals = (principal != null) ? getPrincipals(principal) : getPrincipals(tokenInfo.getUserId()); - authInfo = getAuthInfo(tokenInfo, Iterables.concat(principals, subject.getPrincipals())); + authInfo = getAuthInfo(tokenInfo, IterableUtils.chainedIterable(principals, subject.getPrincipals())); updateSubject(subject, tokenCredentials, authInfo); closeSystemSession(); return true; diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImpl.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImpl.java index 43310e3672..ccd6740283 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImpl.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authentication/user/LoginModuleImpl.java @@ -16,6 +16,7 @@ */ package org.apache.jackrabbit.oak.security.authentication.user; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.oak.api.AuthInfo; import org.apache.jackrabbit.oak.api.Root; @@ -282,6 +283,6 @@ public final class LoginModuleImpl extends AbstractLoginModule { attributes.put(attrName, sc.getAttribute(attrName)); } } - return new AuthInfoImpl(userId, attributes, Iterables.concat(principals, subject.getPrincipals())); + return new AuthInfoImpl(userId, attributes, IterableUtils.chainedIterable(principals, subject.getPrincipals())); } } diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationContext.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationContext.java index 59afaa488e..a85c83c189 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationContext.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/authorization/AuthorizationContext.java @@ -16,6 +16,7 @@ */ package org.apache.jackrabbit.oak.security.authorization; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Tree; @@ -30,7 +31,7 @@ final class AuthorizationContext implements Context, AccessControlConstants, Per private static final String[] NODE_NAMES = POLICY_NODE_NAMES.toArray(new String[0]); private static final String[] PROPERTY_NAMES = ACE_PROPERTY_NAMES.toArray(new String[0]); - private static final String[] NT_NAMES = Iterables.toArray(Iterables.concat(AC_NODETYPE_NAMES, PERMISSION_NODETYPE_NAMES), String.class); + private static final String[] NT_NAMES = Iterables.toArray(IterableUtils.chainedIterable(AC_NODETYPE_NAMES, PERMISSION_NODETYPE_NAMES), String.class); private static final Context INSTANCE = new AuthorizationContext(); diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistration.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistration.java index 00e91753e0..7ab319f36c 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistration.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/security/internal/SecurityProviderRegistration.java @@ -16,10 +16,12 @@ */ package org.apache.jackrabbit.oak.security.internal; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.guava.common.io.Closer; import org.apache.jackrabbit.api.security.JackrabbitAccessControlManager; import org.apache.jackrabbit.oak.commons.PropertiesUtil; +import org.apache.jackrabbit.oak.commons.collections.StreamUtils; import org.apache.jackrabbit.oak.osgi.OsgiWhiteboard; import org.apache.jackrabbit.oak.plugins.tree.RootProvider; import org.apache.jackrabbit.oak.plugins.tree.TreeProvider; @@ -86,6 +88,7 @@ import java.util.Map; import java.util.Set; import java.util.SortedMap; import java.util.TreeMap; +import java.util.stream.Collectors; import static org.apache.jackrabbit.oak.commons.IOUtils.closeQuietly; import static org.apache.jackrabbit.oak.spi.security.ConfigurationParameters.EMPTY; @@ -528,7 +531,7 @@ public class SecurityProviderRegistration { closer = Closer.create(); Iterable<Iterable<Monitor<?>>> monitors = Iterables.transform(securityProvider.getConfigurations(), sc -> sc.getMonitors(statisticsProvider)); - for (Monitor monitor : Iterables.concat(monitors)) { + for (Monitor monitor : StreamUtils.toStream(monitors).flatMap(StreamUtils::toStream).collect(Collectors.toList())) { Registration reg = whiteboard.register(monitor.getMonitorClass(), monitor, monitor.getMonitorProperties()); closer.register(reg::unregister); diff --git a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexNodeManager.java b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexNodeManager.java index 6597c380b0..16ba4d8aa1 100644 --- a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexNodeManager.java +++ b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexNodeManager.java @@ -25,6 +25,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.commons.PerfLogger; @@ -251,7 +252,7 @@ public class LuceneIndexNodeManager { IndexReader[] readerArr = new IndexReader[readers.size() + nrtReaders.size()]; int i = 0; - for (LuceneIndexReader r : Iterables.concat(readers, nrtReaders)){ + for (LuceneIndexReader r : IterableUtils.chainedIterable(readers, nrtReaders)){ readerArr[i++] = r.getReader(); } return new MultiReader(readerArr, false); 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 63b5f99d3a..d2760530d8 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 @@ -37,6 +37,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Predicate; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.collect.AbstractIterator; import org.apache.jackrabbit.guava.common.collect.FluentIterable; import org.apache.jackrabbit.guava.common.collect.Iterables; @@ -1607,7 +1608,7 @@ public class LucenePropertyIndex extends FulltextIndex { } else { Validate.checkState(pr.evaluateSyncNodeTypeRestriction()); //Either of property or nodetype should not be null Filter filter = plan.getFilter(); - paths = FluentIterable.from(Iterables.concat( + paths = FluentIterable.from(IterableUtils.chainedIterable( lookup.query(filter, JCR_PRIMARYTYPE, newName(filter.getPrimaryTypes())), lookup.query(filter, JCR_MIXINTYPES, newName(filter.getMixinTypes())))); } diff --git a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LuceneDocumentHolder.java b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LuceneDocumentHolder.java index ba48e4b690..fe3fa923e9 100644 --- a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LuceneDocumentHolder.java +++ b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LuceneDocumentHolder.java @@ -21,6 +21,7 @@ package org.apache.jackrabbit.oak.plugins.index.lucene.hybrid; import java.util.Collection; import java.util.Map; +import org.apache.commons.collections4.IterableUtils; import org.apache.commons.collections4.ListValuedMap; import org.apache.commons.collections4.multimap.ArrayListValuedHashMap; import org.apache.jackrabbit.guava.common.collect.Iterables; @@ -98,7 +99,7 @@ public class LuceneDocumentHolder implements JournalProperty { * may be directly forwarded to the queue or held in memory for later processing */ Iterable<? extends LuceneDocInfo> getAllLuceneDocInfo(){ - return Iterables.concat(nrtIndexedList.values(), syncIndexedList.values(), + return IterableUtils.chainedIterable(nrtIndexedList.values(), syncIndexedList.values(), asLuceneDocInfo(queuedNrtIndexedPath), queuedSyncIndexedPath.values()); } diff --git a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexLookup.java b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexLookup.java index b211da3b67..babd278252 100644 --- a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexLookup.java +++ b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexLookup.java @@ -22,6 +22,7 @@ package org.apache.jackrabbit.oak.plugins.index.lucene.property; import java.util.Collections; import java.util.Set; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.oak.api.PropertyValue; import org.apache.jackrabbit.oak.api.Type; @@ -121,7 +122,7 @@ public class HybridPropertyIndexLookup { private Iterable<String> querySimple(Filter filter, String indexName, NodeState propIndexNode, Set<String> values) { - return Iterables.concat( + return IterableUtils.chainedIterable( queryBucket(filter, indexName, propIndexNode, PROP_HEAD_BUCKET, values), queryBucket(filter, indexName, propIndexNode, PROP_PREVIOUS_BUCKET, values) ); diff --git a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/UniquenessConstraintValidator.java b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/UniquenessConstraintValidator.java index 634e768b56..f7eb5d16a1 100644 --- a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/UniquenessConstraintValidator.java +++ b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/UniquenessConstraintValidator.java @@ -23,6 +23,7 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.collect.HashMultimap; import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.guava.common.collect.Multimap; @@ -88,7 +89,7 @@ public class UniquenessConstraintValidator { } private Iterable<String> getIndexedPaths(String propertyRelativePath, String value) { - return Iterables.concat( + return IterableUtils.chainedIterable( firstStore.getIndexedPaths(propertyRelativePath, value), secondStore.getIndexedPaths(propertyRelativePath, value) ); diff --git a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java index 7658a11232..36d4ab7c96 100644 --- a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java +++ b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java @@ -29,6 +29,7 @@ import javax.jcr.Node; import javax.jcr.PropertyType; import javax.jcr.RepositoryException; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Tree; @@ -155,7 +156,7 @@ public final class IndexDefinitionBuilder { if (tree.hasProperty(INDEX_TAGS)) { currTags = SetUtils.toSet(tree.getProperty(INDEX_TAGS).getValue(STRINGS)); } - Set<String> tagVals = SetUtils.toSet(Iterables.concat(currTags, asList(additionalTagVals))); + Set<String> tagVals = SetUtils.toSet(IterableUtils.chainedIterable(currTags, asList(additionalTagVals))); boolean noAdditionalTags = currTags.containsAll(tagVals); if (!noAdditionalTags) { tree.removeProperty(INDEX_TAGS); diff --git a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/MultiplexingIndexWriter.java b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/MultiplexingIndexWriter.java index b62a8a00f1..f2e67bf4e3 100644 --- a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/MultiplexingIndexWriter.java +++ b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/writer/MultiplexingIndexWriter.java @@ -24,6 +24,7 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.StreamSupport; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexDefinition; import org.apache.jackrabbit.oak.plugins.index.lucene.directory.DirectoryFactory; import org.apache.jackrabbit.oak.spi.mount.Mount; @@ -31,7 +32,6 @@ import org.apache.jackrabbit.oak.spi.mount.MountInfoProvider; import org.apache.jackrabbit.oak.spi.state.NodeBuilder; import org.apache.lucene.index.IndexableField; -import static org.apache.jackrabbit.guava.common.collect.Iterables.concat; import static java.util.Collections.singleton; class MultiplexingIndexWriter implements LuceneIndexWriter { @@ -81,7 +81,7 @@ class MultiplexingIndexWriter implements LuceneIndexWriter { // explicitly get writers for mounts which haven't got writers even at close. // This essentially ensures we respect DefaultIndexWriters#close's intent to // create empty index even if nothing has been written during re-index. - StreamSupport.stream(concat(singleton(mountInfoProvider.getDefaultMount()), mountInfoProvider.getNonDefaultMounts()) + StreamSupport.stream(IterableUtils.chainedIterable(singleton(mountInfoProvider.getDefaultMount()), mountInfoProvider.getNonDefaultMounts()) .spliterator(), false) .filter(m -> reindex && !m.isReadOnly()) // only needed when re-indexing for read-write mounts. // reindex for ro-mount doesn't make sense in this case anyway. diff --git a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/NodeStateEntryTraverser.java b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/NodeStateEntryTraverser.java index 65bf0a678f..88a46bd4c0 100644 --- a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/NodeStateEntryTraverser.java +++ b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/index/indexer/document/NodeStateEntryTraverser.java @@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.index.indexer.document; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.collect.FluentIterable; import org.apache.jackrabbit.guava.common.io.Closer; import org.apache.jackrabbit.oak.plugins.document.Collection; @@ -40,7 +41,6 @@ import java.util.function.Consumer; import static java.util.Collections.emptyList; import static java.util.Collections.singleton; -import static org.apache.jackrabbit.guava.common.collect.Iterables.concat; import static org.apache.jackrabbit.guava.common.collect.Iterables.transform; public class NodeStateEntryTraverser implements Iterable<NodeStateEntry>, Closeable { @@ -124,7 +124,7 @@ public class NodeStateEntryTraverser implements Iterable<NodeStateEntry>, Closea } return transform( - concat(singleton(nodeState), + IterableUtils.chainedIterable(singleton(nodeState), nodeState.getAllBundledNodesStates()), dns -> { NodeStateEntry.NodeStateEntryBuilder builder = new NodeStateEntry.NodeStateEntryBuilder(dns, dns.getPath().toString()); diff --git a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/run/cli/Options.java b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/run/cli/Options.java index 62b8b94dde..ef20190f9b 100644 --- a/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/run/cli/Options.java +++ b/oak-run-commons/src/main/java/org/apache/jackrabbit/oak/run/cli/Options.java @@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.run.cli; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.collect.Iterables; import joptsimple.OptionParser; import joptsimple.OptionSet; @@ -70,7 +71,7 @@ public class Options { * @return optionSet returned from OptionParser */ public OptionSet parseAndConfigure(OptionParser parser, String[] args, boolean checkNonOptions) throws IOException { - for (OptionsBeanFactory o : Iterables.concat(oakRunOptions, beanFactories)){ + for (OptionsBeanFactory o : IterableUtils.chainedIterable(oakRunOptions, beanFactories)){ OptionsBean bean = o.newInstance(parser); optionBeans.put(bean.getClass(), bean); } diff --git a/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/editor/FulltextDocumentMaker.java b/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/editor/FulltextDocumentMaker.java index 0f5e0e1e72..af78beba4f 100644 --- a/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/editor/FulltextDocumentMaker.java +++ b/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/editor/FulltextDocumentMaker.java @@ -30,6 +30,7 @@ import java.util.regex.Pattern; import javax.jcr.PropertyType; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.oak.api.Blob; import org.apache.jackrabbit.oak.api.PropertyState; @@ -163,7 +164,7 @@ public abstract class FulltextDocumentMaker<D> implements DocumentMaker<D> { //regex for node name indexing PropertyState nodenamePS = new StringPropertyState(FieldNames.NODE_NAME, getName(path)); - for (PropertyState property : Iterables.concat(state.getProperties(), Collections.singleton(nodenamePS))) { + for (PropertyState property : IterableUtils.chainedIterable(state.getProperties(), Collections.singleton(nodenamePS))) { String pname = property.getName(); if (!isVisible(pname) && !FieldNames.NODE_NAME.equals(pname)) { diff --git a/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/editor/FulltextIndexEditor.java b/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/editor/FulltextIndexEditor.java index b6a0e55d73..5118423b13 100644 --- a/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/editor/FulltextIndexEditor.java +++ b/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/editor/FulltextIndexEditor.java @@ -24,6 +24,7 @@ import java.util.Collections; import java.util.List; import java.util.Set; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.api.PropertyState; @@ -287,7 +288,7 @@ public class FulltextIndexEditor<D> implements IndexEditor, Aggregate.AggregateR private MatcherState getMatcherState(String name, NodeState after) { List<Aggregate.Matcher> matched = new ArrayList<>(); List<Aggregate.Matcher> inherited = new ArrayList<>(); - for (Aggregate.Matcher m : Iterables.concat(matcherState.inherited, currentMatchers)) { + for (Aggregate.Matcher m : IterableUtils.chainedIterable(matcherState.inherited, currentMatchers)) { Aggregate.Matcher result = m.match(name, after); if (result.getStatus() == Aggregate.Matcher.Status.MATCH_FOUND){ matched.add(result); diff --git a/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/util/IndexDefinitionBuilder.java b/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/util/IndexDefinitionBuilder.java index 47914275cf..203a22400c 100644 --- a/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/util/IndexDefinitionBuilder.java +++ b/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/util/IndexDefinitionBuilder.java @@ -18,6 +18,7 @@ */ package org.apache.jackrabbit.oak.plugins.index.search.util; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Tree; @@ -168,7 +169,7 @@ public class IndexDefinitionBuilder { if (tree.hasProperty(INDEX_TAGS)) { currTags = SetUtils.toSet(tree.getProperty(INDEX_TAGS).getValue(STRINGS)); } - Set<String> tagVals = SetUtils.toSet(Iterables.concat(currTags, asList(additionalTagVals))); + Set<String> tagVals = SetUtils.toSet(IterableUtils.chainedIterable(currTags, asList(additionalTagVals))); boolean noAdditionalTags = currTags.containsAll(tagVals); if (!noAdditionalTags) { tree.removeProperty(INDEX_TAGS); diff --git a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/CompositeConfiguration.java b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/CompositeConfiguration.java index 6c09270611..39cc6b8e92 100644 --- a/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/CompositeConfiguration.java +++ b/oak-security-spi/src/main/java/org/apache/jackrabbit/oak/spi/security/CompositeConfiguration.java @@ -23,6 +23,7 @@ import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.api.Tree; import org.apache.jackrabbit.oak.commons.collections.SetUtils; +import org.apache.jackrabbit.oak.commons.collections.StreamUtils; import org.apache.jackrabbit.oak.plugins.tree.RootProvider; import org.apache.jackrabbit.oak.plugins.tree.TreeLocation; import org.apache.jackrabbit.oak.plugins.tree.TreeProvider; @@ -262,8 +263,9 @@ public abstract class CompositeConfiguration<T extends SecurityConfiguration> im @NotNull @Override public Iterable<Monitor<?>> getMonitors(@NotNull StatisticsProvider statisticsProvider) { - return Iterables.concat( - Iterables.transform(getConfigurations(), securityConfiguration -> securityConfiguration.getMonitors(statisticsProvider))); + return StreamUtils.toStream(Iterables.transform(getConfigurations(), securityConfiguration -> securityConfiguration.getMonitors(statisticsProvider))) + .flatMap(StreamUtils::toStream) + .collect(Collectors.toSet()); } private static final class Ranking { diff --git a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/MapRecord.java b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/MapRecord.java index 13a03cd091..db7418270a 100644 --- a/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/MapRecord.java +++ b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/MapRecord.java @@ -22,7 +22,6 @@ import static java.lang.Integer.bitCount; import static java.lang.Integer.highestOneBit; import static java.lang.Integer.numberOfTrailingZeros; import static java.util.Objects.requireNonNull; -import static org.apache.jackrabbit.guava.common.collect.Iterables.concat; import static org.apache.jackrabbit.oak.segment.MapEntry.newMapEntry; import java.util.ArrayList; @@ -31,8 +30,11 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; import org.apache.jackrabbit.guava.common.collect.ComparisonChain; +import org.apache.jackrabbit.oak.commons.collections.StreamUtils; import org.apache.jackrabbit.oak.spi.state.DefaultNodeStateDiff; import org.apache.jackrabbit.oak.spi.state.NodeState; import org.apache.jackrabbit.oak.spi.state.NodeStateDiff; @@ -335,7 +337,9 @@ public class MapRecord extends Record { } }); } - return concat(keys); + return keys.stream() + .flatMap(StreamUtils::toStream) + .collect(Collectors.toList()); } RecordId[] ids = new RecordId[size]; @@ -385,7 +389,7 @@ public class MapRecord extends Record { } }); } - return concat(entries); + return entries.stream().flatMap(StreamUtils::toStream).collect(Collectors.toList()); } MapEntry[] entries = new MapEntry[size]; diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/Branch.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/Branch.java index ed49a51f4c..d6073e64fc 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/Branch.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/Branch.java @@ -32,9 +32,12 @@ import java.util.SortedSet; import java.util.TreeMap; import java.util.concurrent.ConcurrentSkipListMap; import java.util.function.Predicate; +import java.util.stream.Collectors; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.collect.Iterables; +import org.apache.jackrabbit.oak.commons.collections.StreamUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -279,7 +282,7 @@ class Branch { && input.getKey().compareRevisionTime(r) <= 0; } }::test), input -> input.getValue().getModifiedPaths()); - return Iterables.concat(paths); + return StreamUtils.toStream(paths).flatMap(StreamUtils::toStream).collect(Collectors.toSet()); } @Override @@ -405,9 +408,8 @@ class Branch { @Override Iterable<Path> getModifiedPaths() { - Iterable<Iterable<Path>> paths = transform(previous.values(), - branchCommit -> branchCommit.getModifiedPaths()); - return Iterables.concat(paths); + Iterable<Iterable<Path>> paths = transform(previous.values(), BranchCommit::getModifiedPaths); + return StreamUtils.toStream(paths).flatMap(StreamUtils::toStream).collect(Collectors.toSet()); } /** diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java index bf66adb160..086f6c0829 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java @@ -51,7 +51,10 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; import java.util.function.Function; import java.util.function.Predicate; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.cache.Cache; import org.apache.jackrabbit.guava.common.collect.AbstractIterator; import org.apache.jackrabbit.guava.common.collect.Iterables; @@ -59,6 +62,7 @@ import org.apache.jackrabbit.guava.common.collect.Ordering; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.commons.collections.DequeUtils; +import org.apache.jackrabbit.oak.commons.collections.StreamUtils; import org.apache.jackrabbit.oak.commons.json.JsopBuilder; import org.apache.jackrabbit.oak.commons.json.JsopReader; import org.apache.jackrabbit.oak.commons.json.JsopTokenizer; @@ -1816,7 +1820,8 @@ public final class NodeDocument extends Document { } }; } else { - changes = Iterables.concat(transform(List.copyOf(ranges), rangeToChanges::apply)); + changes = StreamUtils.toStream(transform(List.copyOf(ranges), rangeToChanges::apply)) + .flatMap(StreamUtils::toStream).collect(Collectors.toList()); } return filter(changes, input -> !readRev.isRevisionNewer(input.getKey())); } diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/TieredDiffCache.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/TieredDiffCache.java index 1592397f8a..8dce4967b6 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/TieredDiffCache.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/TieredDiffCache.java @@ -16,6 +16,7 @@ */ package org.apache.jackrabbit.oak.plugins.document; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.cache.Cache; import org.apache.jackrabbit.guava.common.cache.CacheBuilder; import org.apache.jackrabbit.guava.common.collect.Iterables; @@ -95,7 +96,7 @@ class TieredDiffCache extends DiffCache { @NotNull @Override public Iterable<CacheStats> getStats() { - return Iterables.concat(localCache.getStats(), memoryCache.getStats()); + return IterableUtils.chainedIterable(localCache.getStats(), memoryCache.getStats()); } @Override diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCache.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCache.java index c7664a1373..93d1ef095c 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCache.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/cache/NodeDocumentCache.java @@ -33,6 +33,7 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.locks.Lock; import java.util.function.Predicate; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.cache.Cache; import org.apache.jackrabbit.oak.cache.CacheStats; import org.apache.jackrabbit.oak.cache.CacheValue; @@ -324,14 +325,14 @@ public class NodeDocumentCache implements Closeable { * @return keys stored in cache */ public Iterable<CacheValue> keys() { - return Iterables.concat(nodeDocumentsCache.asMap().keySet(), prevDocumentsCache.asMap().keySet()); + return IterableUtils.chainedIterable(nodeDocumentsCache.asMap().keySet(), prevDocumentsCache.asMap().keySet()); } /** * @return values stored in cache */ public Iterable<NodeDocument> values() { - return Iterables.concat(nodeDocumentsCache.asMap().values(), prevDocumentsCache.asMap().values()); + return IterableUtils.chainedIterable(nodeDocumentsCache.asMap().values(), prevDocumentsCache.asMap().values()); } public Iterable<CacheStats> getCacheStats() { diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java index 1d6e535d78..1bd5d177d3 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoVersionGCSupport.java @@ -26,7 +26,6 @@ import static com.mongodb.client.model.Projections.include; import static com.mongodb.client.model.Sorts.ascending; import static java.util.Optional.empty; import static java.util.Optional.ofNullable; -import static org.apache.jackrabbit.guava.common.collect.Iterables.concat; import static org.apache.jackrabbit.guava.common.collect.Iterables.filter; import static org.apache.jackrabbit.guava.common.collect.Iterables.transform; import static com.mongodb.client.model.Filters.and; @@ -56,6 +55,7 @@ import java.util.regex.Pattern; import com.mongodb.MongoClient; import com.mongodb.client.MongoCursor; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.oak.commons.json.JsopBuilder; import org.apache.jackrabbit.oak.plugins.document.Document; import org.apache.jackrabbit.oak.plugins.document.NodeDocument; @@ -352,7 +352,7 @@ public class MongoVersionGCSupport extends VersionGCSupport { .maxTime(15, TimeUnit.MINUTES).hint(hint), input -> store.convertFromDBObject(NODES, input)), input -> !isDefaultNoBranchSplitNewerThan(input, sweepRevs)); - allResults = concat(allResults, iterable); + allResults = IterableUtils.chainedIterable(allResults, iterable); } return allResults; } diff --git a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java index b3adab9788..1e545008bc 100644 --- a/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java +++ b/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java @@ -29,6 +29,7 @@ import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.function.Predicate; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.oak.commons.properties.SystemPropertySupplier; import org.apache.jackrabbit.oak.plugins.document.Collection; import org.apache.jackrabbit.oak.plugins.document.DocumentStoreException; @@ -160,7 +161,7 @@ public class RDBVersionGCSupport extends VersionGCSupport { final CountingPredicate<NodeDocument> cp1 = new CountingPredicate<NodeDocument>(name1, pred); final CountingPredicate<NodeDocument> cp2 = new CountingPredicate<NodeDocument>(name2, pred); - return CloseableIterable.wrap(Iterables.concat(Iterables.filter(fit1, cp1::test), Iterables.filter(fit2, cp2::test)), + return CloseableIterable.wrap(IterableUtils.chainedIterable(Iterables.filter(fit1, cp1::test), Iterables.filter(fit2, cp2::test)), new Closeable() { @Override public void close() throws IOException { diff --git a/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/plugins/memory/ModifiedNodeState.java b/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/plugins/memory/ModifiedNodeState.java index 7e85eefb7a..035912f190 100644 --- a/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/plugins/memory/ModifiedNodeState.java +++ b/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/plugins/memory/ModifiedNodeState.java @@ -18,7 +18,6 @@ package org.apache.jackrabbit.oak.plugins.memory; import static java.util.Objects.requireNonNull; -import static org.apache.jackrabbit.guava.common.collect.Iterables.concat; import static org.apache.jackrabbit.guava.common.collect.Iterables.filter; import static java.util.Collections.emptyList; @@ -28,9 +27,11 @@ import static org.apache.jackrabbit.oak.plugins.memory.MemoryChildNodeEntry.iter import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.Objects; import java.util.Set; import java.util.function.Predicate; +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.oak.api.PropertyState; import org.apache.jackrabbit.oak.commons.collections.MapUtils; import org.apache.jackrabbit.oak.spi.state.AbstractNodeState; @@ -163,9 +164,9 @@ public class ModifiedNodeState extends AbstractNodeState { final Set<String> keys = properties.keySet(); Predicate<PropertyState> predicate = x -> !keys.contains(x == null ? null : x.getName()); - return concat( + return IterableUtils.chainedIterable( filter(base.getProperties(), predicate::test), - filter(properties.values(), x -> x != null)); + filter(properties.values(), Objects::nonNull)); } } @@ -213,7 +214,7 @@ public class ModifiedNodeState extends AbstractNodeState { nodes = new HashMap<>(nodes); } final Set<String> keys = nodes.keySet(); - return concat( + return IterableUtils.chainedIterable( filter(base.getChildNodeNames(), x -> !keys.contains(x)), MapUtils.filterValues(nodes, NodeState.EXISTS).keySet()); } @@ -346,7 +347,7 @@ public class ModifiedNodeState extends AbstractNodeState { final Set<String> keys = nodes.keySet(); Predicate<ChildNodeEntry> predicate = x -> !keys.contains(x == null ? null : x.getName()); - return concat( + return IterableUtils.chainedIterable( filter(base.getChildNodeEntries(), predicate::test), iterable(MapUtils.filterValues(nodes, NodeState.EXISTS).entrySet())); } diff --git a/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/MoveTracker.java b/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/MoveTracker.java index 5a4b47ebfa..3636adc260 100644 --- a/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/MoveTracker.java +++ b/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/MoveTracker.java @@ -20,6 +20,8 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; + +import org.apache.commons.collections4.IterableUtils; import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.oak.commons.PathUtils; import org.apache.jackrabbit.oak.commons.collections.ListUtils; @@ -88,7 +90,7 @@ public class MoveTracker { public boolean containsMove(@Nullable String path) { if (path != null) { - for (String p : Iterables.concat(parentSourcePaths, parentDestPaths)) { + for (String p : IterableUtils.chainedIterable(parentSourcePaths, parentDestPaths)) { if (Text.isDescendantOrEqual(path, p)) { return true; }
