diff --git a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalPrincipalConfiguration.java b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalPrincipalConfiguration.java index 14644cb98c1..ffa37a671ea 100644 --- a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalPrincipalConfiguration.java +++ b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalPrincipalConfiguration.java @@ -16,7 +16,6 @@ */ package org.apache.jackrabbit.oak.spi.security.authentication.external.impl.principal; -import org.apache.jackrabbit.guava.common.collect.ImmutableList; import org.apache.jackrabbit.api.security.principal.PrincipalManager; import org.apache.jackrabbit.oak.api.Root; import org.apache.jackrabbit.oak.namepath.NamePathMapper; @@ -53,6 +52,7 @@ import org.osgi.service.metatype.annotations.Option; import java.security.Principal; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; @@ -182,7 +182,7 @@ public RepositoryInitializer getRepositoryInitializer() { public List getValidators(@NotNull String workspaceName, @NotNull Set principals, @NotNull MoveTracker moveTracker) { boolean isSystem = new SystemPrincipalConfig(getPrincipalNames()).containsSystemPrincipal(principals); - ImmutableList.Builder vps = new ImmutableList.Builder<>(); + List vps = new ArrayList<>(); vps.add(new ExternalIdentityValidatorProvider(isSystem, protectedExternalIds())); Set idpNamesWithDynamicGroups = getIdpNamesWithDynamicGroups(); @@ -194,7 +194,7 @@ public List getValidators(@NotNull String workspace if (ipt != IdentityProtectionType.NONE && !isSystem) { vps.add(new ExternalUserValidatorProvider(getRootProvider(), getTreeProvider(), getSecurityProvider(), ipt, getProtectionConfig())); } - return vps.build(); + return Collections.unmodifiableList(vps); } @NotNull diff --git a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalUserValidatorProvider.java b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalUserValidatorProvider.java index cb9fc52dd4f..e8204604adc 100644 --- a/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalUserValidatorProvider.java +++ b/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/principal/ExternalUserValidatorProvider.java @@ -16,7 +16,6 @@ */ package org.apache.jackrabbit.oak.spi.security.authentication.external.impl.principal; -import org.apache.jackrabbit.guava.common.collect.ImmutableList; import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.api.PropertyState; @@ -44,6 +43,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import static org.apache.jackrabbit.oak.commons.conditions.Validate.checkArgument; @@ -284,13 +285,13 @@ private static final class AggregatedContext extends Context.Default { List ctxs; private AggregatedContext(@NotNull SecurityProvider securityProvider) { - ImmutableList.Builder builder = ImmutableList.builder(); + List builder = new ArrayList<>(); for (SecurityConfiguration sc : securityProvider.getConfigurations()) { if (!UserConfiguration.NAME.equals(sc.getName())) { builder.add(sc.getContext()); } } - ctxs = builder.build(); + ctxs = Collections.unmodifiableList(builder); } @Override 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 edabe40266e..4bdd28c5824 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 @@ -18,6 +18,7 @@ import java.security.Principal; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -31,7 +32,6 @@ import javax.jcr.security.AccessControlPolicyIterator; import javax.jcr.security.Privilege; -import org.apache.jackrabbit.guava.common.collect.ImmutableList; import org.apache.jackrabbit.guava.common.collect.Iterators; import org.apache.jackrabbit.api.security.JackrabbitAccessControlManager; import org.apache.jackrabbit.api.security.JackrabbitAccessControlPolicy; @@ -81,24 +81,23 @@ public Privilege[] getSupportedPrivileges(String absPath) throws RepositoryExcep @Override public AccessControlPolicy[] getPolicies(String absPath) throws RepositoryException { - ImmutableList.Builder policies = ImmutableList.builder(); + List policies = new ArrayList<>(); for (AccessControlManager acMgr : acMgrs) { - policies.add(acMgr.getPolicies(absPath)); + policies.addAll(Arrays.asList(acMgr.getPolicies(absPath))); } - List l = policies.build(); - return l.toArray(new AccessControlPolicy[0]); + return policies.toArray(new AccessControlPolicy[0]); } @Override public AccessControlPolicy[] getEffectivePolicies(String absPath) throws RepositoryException { - ImmutableList.Builder policies = ImmutableList.builder(); + List policies = new ArrayList<>(); for (AccessControlManager acMgr : acMgrs) { - policies.add(acMgr.getEffectivePolicies(absPath)); + policies.addAll(Arrays.asList(acMgr.getEffectivePolicies(absPath))); if (aggregationFilter.stop(acMgr, absPath)) { break; } } - return policies.build().stream().distinct().toArray(AccessControlPolicy[]::new); + return policies.stream().distinct().toArray(AccessControlPolicy[]::new); } @Override @@ -138,49 +137,46 @@ public void removePolicy(String absPath, AccessControlPolicy policy) throws Repo @NotNull @Override public JackrabbitAccessControlPolicy[] getApplicablePolicies(@NotNull Principal principal) throws RepositoryException { - ImmutableList.Builder policies = ImmutableList.builder(); + List policies = new ArrayList<>(); for (AccessControlManager acMgr : acMgrs) { if (acMgr instanceof JackrabbitAccessControlManager && acMgr instanceof PolicyOwner) { - policies.add(((JackrabbitAccessControlManager) acMgr).getApplicablePolicies(principal)); + policies.addAll(Arrays.asList(((JackrabbitAccessControlManager) acMgr).getApplicablePolicies(principal))); } } - List l = policies.build(); - return l.toArray(new JackrabbitAccessControlPolicy[0]); + return policies.toArray(new JackrabbitAccessControlPolicy[0]); } @NotNull @Override public JackrabbitAccessControlPolicy[] getPolicies(@NotNull Principal principal) throws RepositoryException { - ImmutableList.Builder policies = ImmutableList.builder(); + List policies = new ArrayList<>(); for (AccessControlManager acMgr : acMgrs) { if (acMgr instanceof JackrabbitAccessControlManager) { - policies.add(((JackrabbitAccessControlManager) acMgr).getPolicies(principal)); + policies.addAll(Arrays.asList(((JackrabbitAccessControlManager) acMgr).getPolicies(principal))); } } - List l = policies.build(); - return l.toArray(new JackrabbitAccessControlPolicy[0]); + return policies.toArray(new JackrabbitAccessControlPolicy[0]); } @NotNull @Override public AccessControlPolicy[] getEffectivePolicies(@NotNull Set principals) throws RepositoryException { - ImmutableList.Builder policies = ImmutableList.builder(); + List policies = new ArrayList<>(); for (AccessControlManager acMgr : acMgrs) { if (acMgr instanceof JackrabbitAccessControlManager) { JackrabbitAccessControlManager jAcMgr = (JackrabbitAccessControlManager) acMgr; - policies.add(jAcMgr.getEffectivePolicies(principals)); + policies.addAll(Arrays.asList(jAcMgr.getEffectivePolicies(principals))); if (aggregationFilter.stop(jAcMgr, principals)) { break; } } } - List l = policies.build(); - return l.toArray(new AccessControlPolicy[0]); + return policies.toArray(new AccessControlPolicy[0]); } @Override public @NotNull Iterator getEffectivePolicies(@NotNull Set principals, @Nullable String... absPaths) throws AccessDeniedException, AccessControlException, UnsupportedRepositoryOperationException, RepositoryException { - ImmutableList.Builder> iterators = ImmutableList.builder(); + List> iterators = new ArrayList<>(); for (AccessControlManager acMgr : acMgrs) { if (acMgr instanceof JackrabbitAccessControlManager) { JackrabbitAccessControlManager jAcMgr = (JackrabbitAccessControlManager) acMgr; @@ -190,6 +186,6 @@ public AccessControlPolicy[] getEffectivePolicies(@NotNull Set princi } } } - return Iterators.concat(iterators.build().toArray(new Iterator[0])); + return Iterators.concat(iterators.toArray(new Iterator[0])); } } 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 66b16756a79..093852c4f66 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 @@ -24,6 +24,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.Deque; import java.util.HashMap; import java.util.HashSet; @@ -38,7 +39,6 @@ import org.apache.jackrabbit.guava.common.collect.AbstractIterator; import org.apache.jackrabbit.guava.common.collect.FluentIterable; -import org.apache.jackrabbit.guava.common.collect.ImmutableList; import org.apache.jackrabbit.guava.common.collect.Iterables; import org.apache.jackrabbit.guava.common.collect.Iterators; import org.apache.jackrabbit.oak.api.PropertyValue; @@ -1688,7 +1688,7 @@ private List getFacetsUncached(int numberOfFacets, String columnName) thr Facets facets = FacetHelper.getFacets(searcher, query, plan, config); if (facets != null) { try { - ImmutableList.Builder res = new ImmutableList.Builder<>(); + List res = new ArrayList<>(); FacetResult topChildren = facets.getTopChildren(numberOfFacets, facetFieldName); if (topChildren != null) { for (LabelAndValue lav : topChildren.labelValues) { @@ -1696,7 +1696,7 @@ private List getFacetsUncached(int numberOfFacets, String columnName) thr lav.label, lav.value.intValue() )); } - return res.build(); + return Collections.unmodifiableList(res); } } catch (IllegalArgumentException iae) { LOG.debug(iae.getMessage(), iae); @@ -1712,7 +1712,7 @@ private List getFacetsUncached(int numberOfFacets, String columnName) thr private List getFacetsUncached(Facets facets, int numberOfFacets, String columnName) throws IOException { String facetFieldName = FulltextIndex.parseFacetField(columnName); try { - ImmutableList.Builder res = new ImmutableList.Builder<>(); + List res = new ArrayList<>(); FacetResult topChildren = facets.getTopChildren(numberOfFacets, facetFieldName); if (topChildren == null) { return null; @@ -1722,7 +1722,7 @@ private List getFacetsUncached(Facets facets, int numberOfFacets, String lav.label, lav.value.intValue() )); } - return res.build(); + return Collections.unmodifiableList(res); } catch (IllegalArgumentException iae) { LOG.debug(iae.getMessage(), iae); LOG.warn("facets for {} not yet indexed: {}", facetFieldName, iae); @@ -1746,7 +1746,7 @@ public List getFacets(int numberOfFacets, String columnName) throws IOExc if (facets != null) { try { - ImmutableList.Builder res = new ImmutableList.Builder<>(); + List res = new ArrayList<>(); FacetResult topChildren = facets.getTopChildren(numberOfFacets, facetFieldName); if (topChildren != null) { for (LabelAndValue lav : topChildren.labelValues) { @@ -1754,7 +1754,7 @@ public List getFacets(int numberOfFacets, String columnName) throws IOExc lav.label, lav.value.intValue() )); } - return res.build(); + return Collections.unmodifiableList(res); } } catch (IllegalArgumentException iae) { LOG.debug(iae.getMessage(), iae); diff --git a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/reader/DefaultIndexReaderFactory.java b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/reader/DefaultIndexReaderFactory.java index 9154e6f9f7f..30710a904fc 100644 --- a/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/reader/DefaultIndexReaderFactory.java +++ b/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/reader/DefaultIndexReaderFactory.java @@ -16,15 +16,14 @@ * specific language governing permissions and limitations * under the License. */ - package org.apache.jackrabbit.oak.plugins.index.lucene.reader; import java.io.File; import java.io.IOException; +import java.util.ArrayList; import java.util.Collections; import java.util.List; -import org.apache.jackrabbit.guava.common.collect.ImmutableList; import org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier; import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexDefinition; import org.apache.jackrabbit.oak.plugins.index.lucene.directory.OakDirectory; @@ -55,7 +54,7 @@ public List createReaders(LuceneIndexDefinition definition, N if (!mountInfoProvider.hasNonDefaultMounts()) { LuceneIndexReader reader = createReader(definition, defnState, indexPath, FulltextIndexConstants.INDEX_DATA_CHILD_NAME, SUGGEST_DATA_CHILD_NAME); - return reader != null ? ImmutableList.of(reader) : Collections.emptyList(); + return reader != null ? List.of(reader) : Collections.emptyList(); } else { return createMountedReaders(definition, defnState, indexPath); } @@ -63,7 +62,7 @@ public List createReaders(LuceneIndexDefinition definition, N private List createMountedReaders(LuceneIndexDefinition definition, NodeState defnState, String indexPath) throws IOException { - ImmutableList.Builder readers = ImmutableList.builder(); + List readers = new ArrayList<>(); LuceneIndexReader reader = createReader(mountInfoProvider.getDefaultMount(), definition, defnState, indexPath); //Default mount is the first entry. This ensures that suggester, spellcheck can work on that untill they //support multiple readers @@ -77,7 +76,7 @@ private List createMountedReaders(LuceneIndexDefinition defin readers.add(reader); } } - return readers.build(); + return Collections.unmodifiableList(readers); } @Nullable diff --git a/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java b/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java index e02443207f2..50796d4a887 100644 --- a/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java +++ b/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/MigrationFactory.java @@ -17,13 +17,14 @@ package org.apache.jackrabbit.oak.upgrade.cli; import java.io.IOException; -import java.util.Iterator; +import java.util.Collections; import java.util.List; import java.util.ServiceLoader; import javax.jcr.RepositoryException; import org.apache.jackrabbit.core.RepositoryContext; +import org.apache.jackrabbit.oak.commons.collections.CollectionUtils; import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore; import org.apache.jackrabbit.oak.spi.blob.BlobStore; import org.apache.jackrabbit.oak.spi.commit.CommitHook; @@ -35,7 +36,6 @@ import org.apache.jackrabbit.oak.upgrade.cli.parser.MigrationOptions; import org.apache.jackrabbit.oak.upgrade.cli.parser.StoreArguments; -import org.apache.jackrabbit.guava.common.collect.ImmutableList; import org.apache.jackrabbit.guava.common.io.Closer; public class MigrationFactory { @@ -94,7 +94,7 @@ protected RepositoryUpgrade createUpgrade(RepositoryContext source, NodeStore ds upgrade.setSkipOnError(!options.isFailOnError()); upgrade.setEarlyShutdown(options.isEarlyShutdown()); upgrade.setSkipInitialization(options.isSkipInitialization()); - upgrade.setCustomCommitHooks(loacCommitHooks()); + upgrade.setCustomCommitHooks(loadCommitHooks()); return upgrade; } @@ -117,15 +117,13 @@ private RepositorySidegrade createSidegrade(NodeStore srcStore, NodeStore dstSto sidegrade.setSkipCheckpoints(options.isSkipCheckpoints()); sidegrade.setForceCheckpoints(options.isForceCheckpoints()); sidegrade.setMigrateDocumentMetadata(options.isAddSecondaryMetadata()); - sidegrade.setCustomCommitHooks(loacCommitHooks()); + sidegrade.setCustomCommitHooks(loadCommitHooks()); return sidegrade; } - private List loacCommitHooks() { + private List loadCommitHooks() { ServiceLoader loader = ServiceLoader.load(CommitHook.class); - Iterator iterator = loader.iterator(); - ImmutableList.Builder builder = ImmutableList. builder().addAll(iterator); - return builder.build(); + return Collections.unmodifiableList(CollectionUtils.toList(loader.iterator())); } }