From 76a58bd6272c27cda372e7b0da96404501f2adcb Mon Sep 17 00:00:00 2001 From: Pierre Date: Thu, 6 Jul 2023 16:32:54 +0200 Subject: [PATCH] NO-JIRA replace MoreCollectors.toArrayList with Collectors.toList --- .../db/permission/UserPermissionDao.java | 4 +-- .../v00/PopulateInitialSchemaTest.java | 3 +- .../es/OneToOneResilientIndexingListener.java | 3 +- .../index/ActiveRuleIndexer.java | 5 ++-- .../sonar/server/rule/index/RuleIndexer.java | 3 +- .../sonar/server/view/index/ViewIndexer.java | 4 +-- .../platform/StandaloneSystemInfoWriter.java | 4 +-- .../permission/index/PermissionIndexer.java | 3 +- .../server/project/ws/BulkDeleteActionIT.java | 3 +- .../measure/ws/SearchHistoryResult.java | 2 +- .../qualityprofile/QProfileTreeImpl.java | 8 ++--- .../core/util/stream/MoreCollectors.java | 30 ------------------- .../core/util/stream/MoreCollectorsTest.java | 12 -------- 13 files changed, 21 insertions(+), 63 deletions(-) diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/UserPermissionDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/UserPermissionDao.java index cca5d882585..212b4183622 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/UserPermissionDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/UserPermissionDao.java @@ -23,8 +23,8 @@ import com.google.common.annotations.VisibleForTesting; import java.util.Collection; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; import javax.annotation.Nullable; -import org.sonar.core.util.stream.MoreCollectors; import org.sonar.db.Dao; import org.sonar.db.DatabaseUtils; import org.sonar.db.DbSession; @@ -76,7 +76,7 @@ public class UserPermissionDao implements Dao { // Pagination is done in Java because it's too complex to use SQL pagination in Oracle and MsSQL with the distinct .skip(query.getPageOffset()) .limit(query.getPageSize()) - .collect(MoreCollectors.toArrayList()); + .collect(Collectors.toList()); } public int countUsersByQuery(DbSession dbSession, PermissionQuery query) { diff --git a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v00/PopulateInitialSchemaTest.java b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v00/PopulateInitialSchemaTest.java index a2a2deb8198..adad8363f18 100644 --- a/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v00/PopulateInitialSchemaTest.java +++ b/server/sonar-db-migration/src/test/java/org/sonar/server/platform/db/migration/version/v00/PopulateInitialSchemaTest.java @@ -24,6 +24,7 @@ import java.util.Date; import java.util.List; import java.util.Map; import java.util.Random; +import java.util.stream.Collectors; import java.util.stream.Stream; import org.junit.Before; import org.junit.Rule; @@ -227,7 +228,7 @@ public class PopulateInitialSchemaTest { "where u.login='admin'"); List groupNames = rows.stream() .map(row -> (String) row.get("groupName")) - .collect(MoreCollectors.toArrayList()); + .collect(Collectors.toList()); assertThat(groupNames).containsOnly("sonar-administrators", "sonar-users"); } diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/es/OneToOneResilientIndexingListener.java b/server/sonar-server-common/src/main/java/org/sonar/server/es/OneToOneResilientIndexingListener.java index c4a4bfd703a..5855695a52c 100644 --- a/server/sonar-server-common/src/main/java/org/sonar/server/es/OneToOneResilientIndexingListener.java +++ b/server/sonar-server-common/src/main/java/org/sonar/server/es/OneToOneResilientIndexingListener.java @@ -24,6 +24,7 @@ import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.function.Function; +import java.util.stream.Collectors; import org.sonar.core.util.stream.MoreCollectors; import org.sonar.db.DbClient; import org.sonar.db.DbSession; @@ -61,7 +62,7 @@ public class OneToOneResilientIndexingListener implements IndexingListener { .map(itemsById::get) .flatMap(Collection::stream) .filter(Objects::nonNull) - .collect(MoreCollectors.toArrayList()); + .collect(Collectors.toList()); dbClient.esQueueDao().delete(dbSession, itemsToDelete); dbSession.commit(); } diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleIndexer.java b/server/sonar-server-common/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleIndexer.java index 26fbe679031..0047fae6416 100644 --- a/server/sonar-server-common/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleIndexer.java +++ b/server/sonar-server-common/src/main/java/org/sonar/server/qualityprofile/index/ActiveRuleIndexer.java @@ -52,7 +52,6 @@ import org.sonar.server.qualityprofile.ActiveRuleChange; import org.sonar.server.qualityprofile.ActiveRuleInheritance; import static org.elasticsearch.index.query.QueryBuilders.termQuery; -import static org.sonar.core.util.stream.MoreCollectors.toArrayList; import static org.sonar.server.qualityprofile.index.ActiveRuleDoc.docIdOf; import static org.sonar.server.rule.index.RuleIndexDefinition.FIELD_ACTIVE_RULE_PROFILE_UUID; import static org.sonar.server.rule.index.RuleIndexDefinition.TYPE_ACTIVE_RULE; @@ -98,7 +97,7 @@ public class ActiveRuleIndexer implements ResilientIndexer { List items = changes.stream() .map(ActiveRuleChange::getActiveRule) .map(ar -> newQueueDto(docIdOf(ar.getUuid()), ID_TYPE_ACTIVE_RULE_UUID, ar.getRuleUuid())) - .collect(toArrayList()); + .collect(Collectors.toList()); dbClient.esQueueDao().insert(dbSession, items); dbSession.commit(); @@ -110,7 +109,7 @@ public class ActiveRuleIndexer implements ResilientIndexer { .map(QProfileDto::getRulesProfileUuid) .distinct() .map(ruleProfileUuid -> newQueueDto(ruleProfileUuid, ID_TYPE_RULE_PROFILE_UUID, null)) - .collect(toArrayList()); + .collect(Collectors.toList()); dbClient.esQueueDao().insert(dbSession, items); dbSession.commit(); diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/rule/index/RuleIndexer.java b/server/sonar-server-common/src/main/java/org/sonar/server/rule/index/RuleIndexer.java index dcb59a115ad..2c6559e0884 100644 --- a/server/sonar-server-common/src/main/java/org/sonar/server/rule/index/RuleIndexer.java +++ b/server/sonar-server-common/src/main/java/org/sonar/server/rule/index/RuleIndexer.java @@ -25,6 +25,7 @@ import java.util.Collection; import java.util.List; import java.util.Optional; import java.util.Set; +import java.util.stream.Collectors; import java.util.stream.Stream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -89,7 +90,7 @@ public class RuleIndexer implements ResilientIndexer { public void commitAndIndex(DbSession dbSession, Collection ruleUuids) { List items = ruleUuids.stream() .map(RuleIndexer::createQueueDtoForRule) - .collect(MoreCollectors.toArrayList()); + .collect(Collectors.toList()); dbClient.esQueueDao().insert(dbSession, items); dbSession.commit(); diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/view/index/ViewIndexer.java b/server/sonar-server-common/src/main/java/org/sonar/server/view/index/ViewIndexer.java index 56cb492faba..c89f6d3a860 100644 --- a/server/sonar-server-common/src/main/java/org/sonar/server/view/index/ViewIndexer.java +++ b/server/sonar-server-common/src/main/java/org/sonar/server/view/index/ViewIndexer.java @@ -24,9 +24,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; import org.elasticsearch.action.admin.indices.cache.clear.ClearIndicesCacheRequest; import org.elasticsearch.action.index.IndexRequest; -import org.sonar.core.util.stream.MoreCollectors; import org.sonar.db.DbClient; import org.sonar.db.DbSession; import org.sonar.db.component.ComponentDto; @@ -171,7 +171,7 @@ public class ViewIndexer implements ResilientIndexer { public void delete(DbSession dbSession, Collection viewUuids) { List items = viewUuids.stream() .map(l -> EsQueueDto.create(TYPE_VIEW.format(), l)) - .collect(MoreCollectors.toArrayList()); + .collect(Collectors.toList()); dbClient.esQueueDao().insert(dbSession, items); dbSession.commit(); diff --git a/server/sonar-webserver-core/src/main/java/org/sonar/server/platform/StandaloneSystemInfoWriter.java b/server/sonar-webserver-core/src/main/java/org/sonar/server/platform/StandaloneSystemInfoWriter.java index 1c96f9a0065..e64b834cbc6 100644 --- a/server/sonar-webserver-core/src/main/java/org/sonar/server/platform/StandaloneSystemInfoWriter.java +++ b/server/sonar-webserver-core/src/main/java/org/sonar/server/platform/StandaloneSystemInfoWriter.java @@ -20,8 +20,8 @@ package org.sonar.server.platform; import java.util.List; +import java.util.stream.Collectors; import org.sonar.api.utils.text.JsonWriter; -import org.sonar.core.util.stream.MoreCollectors; import org.sonar.process.systeminfo.SystemInfoSection; import org.sonar.process.systeminfo.protobuf.ProtobufSystemInfo; import org.sonar.server.ce.http.CeHttpClient; @@ -47,7 +47,7 @@ public class StandaloneSystemInfoWriter extends AbstractSystemInfoWriter { List sections = stream(systemInfoSections) .map(SystemInfoSection::toProtobuf) - .collect(MoreCollectors.toArrayList()); + .collect(Collectors.toList()); ceHttpClient.retrieveSystemInfo() .ifPresent(ce -> sections.addAll(ce.getSectionsList())); diff --git a/server/sonar-webserver-es/src/main/java/org/sonar/server/permission/index/PermissionIndexer.java b/server/sonar-webserver-es/src/main/java/org/sonar/server/permission/index/PermissionIndexer.java index c54d43822aa..7468cbe5fd3 100644 --- a/server/sonar-webserver-es/src/main/java/org/sonar/server/permission/index/PermissionIndexer.java +++ b/server/sonar-webserver-es/src/main/java/org/sonar/server/permission/index/PermissionIndexer.java @@ -44,7 +44,6 @@ import org.sonar.server.es.OneToOneResilientIndexingListener; import org.springframework.beans.factory.annotation.Autowired; import static java.util.Collections.emptyList; -import static org.sonar.core.util.stream.MoreCollectors.toArrayList; /** * Populates the types "authorization" of each index requiring entity @@ -117,7 +116,7 @@ public class PermissionIndexer implements EventIndexer { private Collection insertIntoEsQueue(DbSession dbSession, Collection projectUuids) { List items = indexTypeByFormat.values().stream() .flatMap(indexType -> projectUuids.stream().map(projectUuid -> EsQueueDto.create(indexType.format(), AuthorizationDoc.idOf(projectUuid), null, projectUuid))) - .collect(toArrayList()); + .collect(Collectors.toList()); dbClient.esQueueDao().insert(dbSession, items); return items; diff --git a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/project/ws/BulkDeleteActionIT.java b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/project/ws/BulkDeleteActionIT.java index f6d950d4ce0..8ec6e55cbe0 100644 --- a/server/sonar-webserver-webapi/src/it/java/org/sonar/server/project/ws/BulkDeleteActionIT.java +++ b/server/sonar-webserver-webapi/src/it/java/org/sonar/server/project/ws/BulkDeleteActionIT.java @@ -38,7 +38,6 @@ import org.mockito.ArgumentCaptor; import org.sonar.api.resources.Qualifiers; import org.sonar.api.server.ws.WebService.Param; import org.sonar.api.utils.System2; -import org.sonar.core.util.stream.MoreCollectors; import org.sonar.db.DbClient; import org.sonar.db.DbSession; import org.sonar.db.DbTester; @@ -237,7 +236,7 @@ public class BulkDeleteActionIT { @Test public void delete_only_the_1000_first_projects() { userSession.logIn().addPermission(ADMINISTER); - List keys = IntStream.range(0, 1_010).mapToObj(i -> "key" + i).collect(MoreCollectors.toArrayList()); + List keys = IntStream.range(0, 1_010).mapToObj(i -> "key" + i).collect(Collectors.toList()); keys.forEach(key -> db.components().insertPrivateProject(p -> p.setKey(key)).getMainBranchComponent()); ws.newRequest() diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/measure/ws/SearchHistoryResult.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/measure/ws/SearchHistoryResult.java index 084ed09ab31..62444aa7776 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/measure/ws/SearchHistoryResult.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/measure/ws/SearchHistoryResult.java @@ -92,7 +92,7 @@ public class SearchHistoryResult { ImmutableList.Builder measuresBuilder = ImmutableList.builder(); List filteredMeasures = measures.stream() .filter(measure -> analysisUuids.contains(measure.getAnalysisUuid())) - .collect(MoreCollectors.toArrayList()); + .collect(Collectors.toList()); measuresBuilder.addAll(filteredMeasures); measuresBuilder.addAll(computeBestValues(filteredMeasures)); diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualityprofile/QProfileTreeImpl.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualityprofile/QProfileTreeImpl.java index 0f4adba5154..54607262746 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualityprofile/QProfileTreeImpl.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/qualityprofile/QProfileTreeImpl.java @@ -22,9 +22,9 @@ package org.sonar.server.qualityprofile; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.stream.Collectors; import javax.annotation.Nullable; import org.sonar.api.utils.System2; -import org.sonar.core.util.stream.MoreCollectors; import org.sonar.db.DbClient; import org.sonar.db.DbSession; import org.sonar.db.qualityprofile.ActiveRuleDto; @@ -89,7 +89,7 @@ public class QProfileTreeImpl implements QProfileTree { changes = getChangesFromRulesToBeRemoved(dbSession, profile, getRulesDifference(activeRules, parentActiveRules)); - Collection parentRuleUuids = parentActiveRules.stream().map(ActiveRuleDto::getRuleUuid).collect(MoreCollectors.toArrayList()); + Collection parentRuleUuids = parentActiveRules.stream().map(ActiveRuleDto::getRuleUuid).collect(Collectors.toList()); RuleActivationContext context = ruleActivator.createContextForUserProfile(dbSession, profile, parentRuleUuids); for (ActiveRuleDto parentActiveRule : parentActiveRules) { @@ -108,7 +108,7 @@ public class QProfileTreeImpl implements QProfileTree { private static List getRulesDifference(Collection rulesCollection1, Collection rulesCollection2) { Collection rulesCollection2Uuids = rulesCollection2.stream() .map(ActiveRuleDto::getRuleUuid) - .collect(MoreCollectors.toArrayList()); + .collect(Collectors.toList()); return rulesCollection1.stream() .filter(rule -> !rulesCollection2Uuids.contains(rule.getRuleUuid())) @@ -134,7 +134,7 @@ public class QProfileTreeImpl implements QProfileTree { private List getChangesFromRulesToBeRemoved(DbSession dbSession, QProfileDto profile, List rules) { List changes = new ArrayList<>(); - Collection ruleUuids = rules.stream().map(ActiveRuleDto::getRuleUuid).collect(MoreCollectors.toArrayList()); + Collection ruleUuids = rules.stream().map(ActiveRuleDto::getRuleUuid).collect(Collectors.toList()); RuleActivationContext context = ruleActivator.createContextForUserProfile(dbSession, profile, ruleUuids); for (OrgActiveRuleDto activeRule : rules) { diff --git a/sonar-core/src/main/java/org/sonar/core/util/stream/MoreCollectors.java b/sonar-core/src/main/java/org/sonar/core/util/stream/MoreCollectors.java index 3dc04a631f6..a5d8bbc98c6 100644 --- a/sonar-core/src/main/java/org/sonar/core/util/stream/MoreCollectors.java +++ b/sonar-core/src/main/java/org/sonar/core/util/stream/MoreCollectors.java @@ -57,44 +57,14 @@ public final class MoreCollectors { return Collectors.toCollection(() -> EnumSet.noneOf(enumClass)); } - /** - * Delegates to {@link java.util.stream.Collectors#toCollection(Supplier)}. - */ - public static Collector> toArrayList() { - return java.util.stream.Collectors.toCollection(ArrayList::new); - } - - /** - * Does {@code java.util.stream.MoreCollectors.toCollection(() -> new ArrayList<>(size));} which is equivalent to - * {@link #toArrayList()} but avoiding array copies when the size of the resulting list is already known. - * - *

Note: using this method with a parallel stream will likely not have the expected memory usage benefit as all - * processing threads will use a ArrayList with a capacity large enough for the final size.

- * - * @see java.util.stream.Collectors#toList() - * @see java.util.stream.Collectors#toCollection(Supplier) - */ public static Collector> toArrayList(int size) { return java.util.stream.Collectors.toCollection(() -> new ArrayList<>(size)); } - /** - * Delegates to {@link java.util.stream.Collectors#toCollection(Supplier)}. - */ public static Collector> toHashSet() { return java.util.stream.Collectors.toCollection(HashSet::new); } - /** - * Does {@code java.util.stream.MoreCollectors.toCollection(() -> new HashSet<>(size));} which is equivalent to - * {@link #toHashSet()} but avoiding array copies when the size of the resulting set is already known. - * - *

Note: using this method with a parallel stream will likely not have the expected memory usage benefit as all - * processing threads will use a HashSet with a capacity large enough for the final size.

- * - * @see java.util.stream.Collectors#toSet() - * @see java.util.stream.Collectors#toCollection(Supplier) - */ public static Collector> toHashSet(int size) { return java.util.stream.Collectors.toCollection(() -> new HashSet<>(size)); } diff --git a/sonar-core/src/test/java/org/sonar/core/util/stream/MoreCollectorsTest.java b/sonar-core/src/test/java/org/sonar/core/util/stream/MoreCollectorsTest.java index 16678ad3f74..eb42825ee15 100644 --- a/sonar-core/src/test/java/org/sonar/core/util/stream/MoreCollectorsTest.java +++ b/sonar-core/src/test/java/org/sonar/core/util/stream/MoreCollectorsTest.java @@ -80,18 +80,6 @@ public class MoreCollectorsTest { .isEmpty(); } - @Test - public void toArrayList_builds_an_ArrayList() { - List res = Stream.of(1, 2, 3, 4, 5).collect(toArrayList()); - assertThat(res).isInstanceOf(ArrayList.class) - .containsExactly(1, 2, 3, 4, 5); - } - - @Test - public void toArrayList_parallel_stream() { - assertThat(HUGE_LIST.parallelStream().collect(toArrayList())).isEqualTo(HUGE_LIST); - } - @Test public void toArrayList_with_size_builds_an_ArrayList() { List res = Stream.of(1, 2, 3, 4, 5).collect(toArrayList(30)); -- 2.39.5