This is an automated email from the ASF dual-hosted git repository. krisden pushed a commit to branch branch_9x in repository https://gitbox.apache.org/repos/asf/solr.git
commit d3ae0e12e4c4aeb81751fc2f0f5bd46c578549ea Author: Kevin Risden <[email protected]> AuthorDate: Wed Mar 29 14:27:56 2023 -0400 SOLR-16724: Remove unneeded commons-collections4 dependency (#1500) Co-authored-by: Jan Høydahl <[email protected]> --- .../org.apache.commons.collections4.all.txt | 2 ++ solr/core/build.gradle | 1 - .../src/java/org/apache/solr/core/PluginBag.java | 3 +-- .../org/apache/solr/handler/CollectionsAPI.java | 3 +-- .../solr/handler/admin/api/AddReplicaAPI.java | 8 ++----- .../solr/handler/admin/api/CreateShardAPI.java | 5 +--- .../solr/handler/admin/api/MergeIndexesAPI.java | 9 ++++---- .../handler/admin/api/RenameCollectionAPI.java | 9 +++++--- .../solr/handler/admin/api/SplitCoreAPI.java | 9 ++++---- .../solr/handler/admin/api/SplitShardAPI.java | 5 +--- .../handler/configsets/CreateConfigSetAPI.java | 3 +-- .../apache/solr/packagemanager/PackageManager.java | 25 +++++++++----------- .../src/java/org/apache/solr/search/Grouping.java | 3 +-- .../apache/solr/search/SolrDocumentFetcher.java | 3 +-- .../GroupedEndResultTransformer.java | 3 +-- .../org/apache/solr/cloud/RollingRestartTest.java | 9 ++------ .../solr/util/tracing/TestHttpServletCarrier.java | 27 +++++++++++----------- 17 files changed, 52 insertions(+), 75 deletions(-) diff --git a/gradle/validation/forbidden-apis/org.apache.commons.collections4.all.txt b/gradle/validation/forbidden-apis/org.apache.commons.collections4.all.txt new file mode 100644 index 00000000000..309784079cf --- /dev/null +++ b/gradle/validation/forbidden-apis/org.apache.commons.collections4.all.txt @@ -0,0 +1,2 @@ +@defaultMessage Use Java Collection methods or Java Streams instead +org.apache.commons.collections4.** diff --git a/solr/core/build.gradle b/solr/core/build.gradle index fba7122dd34..9d8d164a00e 100644 --- a/solr/core/build.gradle +++ b/solr/core/build.gradle @@ -107,7 +107,6 @@ dependencies { implementation 'org.apache.commons:commons-math3' implementation 'commons-io:commons-io' implementation 'com.carrotsearch:hppc' - implementation 'org.apache.commons:commons-collections4' implementation('com.github.ben-manes.caffeine:caffeine') { transitive = false } diff --git a/solr/core/src/java/org/apache/solr/core/PluginBag.java b/solr/core/src/java/org/apache/solr/core/PluginBag.java index 7e06449ca5a..f583fc03bd2 100644 --- a/solr/core/src/java/org/apache/solr/core/PluginBag.java +++ b/solr/core/src/java/org/apache/solr/core/PluginBag.java @@ -32,7 +32,6 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Supplier; import java.util.stream.Collectors; -import org.apache.commons.collections4.CollectionUtils; import org.apache.lucene.util.ResourceLoader; import org.apache.lucene.util.ResourceLoaderAware; import org.apache.solr.api.Api; @@ -256,7 +255,7 @@ public class PluginBag<T> implements AutoCloseable { // resource registers under? Collection<Class<? extends JerseyResource>> jerseyApis = apiSupport.getJerseyResources(); - if (!CollectionUtils.isEmpty(jerseyApis)) { + if (jerseyApis != null) { for (Class<? extends JerseyResource> jerseyClazz : jerseyApis) { if (log.isDebugEnabled()) { log.debug("Registering jersey resource class: {}", jerseyClazz.getName()); diff --git a/solr/core/src/java/org/apache/solr/handler/CollectionsAPI.java b/solr/core/src/java/org/apache/solr/handler/CollectionsAPI.java index 79af6a65d31..a07ef69ca9f 100644 --- a/solr/core/src/java/org/apache/solr/handler/CollectionsAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/CollectionsAPI.java @@ -32,7 +32,6 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; -import org.apache.commons.collections4.CollectionUtils; import org.apache.solr.api.Command; import org.apache.solr.api.EndPoint; import org.apache.solr.api.PayloadObj; @@ -101,7 +100,7 @@ public class CollectionsAPI { final Map<String, Object> v1Params = v2Body.toMap(new HashMap<>()); v1Params.put(ACTION, CollectionAction.CREATEALIAS.toLower()); - if (!CollectionUtils.isEmpty(v2Body.collections)) { + if (v2Body.collections != null && !v2Body.collections.isEmpty()) { final String collectionsStr = String.join(",", v2Body.collections); v1Params.remove(V2ApiConstants.COLLECTIONS); v1Params.put(V2ApiConstants.COLLECTIONS, collectionsStr); diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/AddReplicaAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/AddReplicaAPI.java index 99b08200c13..caf545f029e 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/AddReplicaAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/AddReplicaAPI.java @@ -28,8 +28,6 @@ import static org.apache.solr.security.PermissionNameProvider.Name.COLL_EDIT_PER import java.util.HashMap; import java.util.Map; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.MapUtils; import org.apache.solr.api.Command; import org.apache.solr.api.EndPoint; import org.apache.solr.api.PayloadObj; @@ -65,10 +63,8 @@ public class AddReplicaAPI { v1Params.put(ACTION, CollectionParams.CollectionAction.ADDREPLICA.toLower()); v1Params.put(COLLECTION, obj.getRequest().getPathTemplateValues().get(COLLECTION)); - if (MapUtils.isNotEmpty(v2Body.coreProperties)) { - flattenMapWithPrefix(v2Body.coreProperties, v1Params, PROPERTY_PREFIX); - } - if (CollectionUtils.isNotEmpty(v2Body.createNodeSet)) { + flattenMapWithPrefix(v2Body.coreProperties, v1Params, PROPERTY_PREFIX); + if (v2Body.createNodeSet != null && !v2Body.createNodeSet.isEmpty()) { v1Params.replace(CREATE_NODE_SET_PARAM, String.join(",", v2Body.createNodeSet)); } collectionsHandler.handleRequestBody(wrapParams(obj.getRequest(), v1Params), obj.getResponse()); diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/CreateShardAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/CreateShardAPI.java index b7f3ddaba81..080068c4d69 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/CreateShardAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/CreateShardAPI.java @@ -29,7 +29,6 @@ import static org.apache.solr.security.PermissionNameProvider.Name.COLL_EDIT_PER import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.commons.collections4.MapUtils; import org.apache.solr.api.Command; import org.apache.solr.api.EndPoint; import org.apache.solr.api.PayloadObj; @@ -69,9 +68,7 @@ public class CreateShardAPI { v1Params.put(CREATE_NODE_SET_PARAM, buildV1CreateNodeSetValue(v2Body.nodeSet)); } - if (MapUtils.isNotEmpty(v2Body.coreProperties)) { - flattenMapWithPrefix(v2Body.coreProperties, v1Params, PROPERTY_PREFIX); - } + flattenMapWithPrefix(v2Body.coreProperties, v1Params, PROPERTY_PREFIX); collectionsHandler.handleRequestBody(wrapParams(obj.getRequest(), v1Params), obj.getResponse()); } diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/MergeIndexesAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/MergeIndexesAPI.java index b41cfa49fb0..b99141a9047 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/MergeIndexesAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/MergeIndexesAPI.java @@ -25,7 +25,6 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; -import org.apache.commons.collections4.CollectionUtils; import org.apache.solr.api.Command; import org.apache.solr.api.EndPoint; import org.apache.solr.api.PayloadObj; @@ -63,11 +62,11 @@ public class MergeIndexesAPI { CoreAdminParams.CoreAdminAction.MERGEINDEXES.name().toLowerCase(Locale.ROOT)); v1Params.put( CoreAdminParams.CORE, obj.getRequest().getPathTemplateValues().get(CoreAdminParams.CORE)); - if (!CollectionUtils.isEmpty(v2Body.indexDir)) { - v1Params.put("indexDir", v2Body.indexDir.toArray(new String[v2Body.indexDir.size()])); + if (v2Body.indexDir != null && !v2Body.indexDir.isEmpty()) { + v1Params.put("indexDir", v2Body.indexDir.toArray(new String[0])); } - if (!CollectionUtils.isEmpty(v2Body.srcCore)) { - v1Params.put("srcCore", v2Body.srcCore.toArray(new String[v2Body.srcCore.size()])); + if (v2Body.srcCore != null && !v2Body.srcCore.isEmpty()) { + v1Params.put("srcCore", v2Body.srcCore.toArray(new String[0])); } // V1 API uses 'update.chain' instead of 'updateChain'. if (v2Body.updateChain != null) { diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/RenameCollectionAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/RenameCollectionAPI.java index 7f92593ff79..de6e0106701 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/RenameCollectionAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/RenameCollectionAPI.java @@ -30,7 +30,6 @@ import com.fasterxml.jackson.databind.MapperFeature; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.util.Locale; -import org.apache.commons.collections4.IterableUtils; import org.apache.solr.api.EndPoint; import org.apache.solr.client.solrj.request.beans.RenameCollectionPayload; import org.apache.solr.common.params.CollectionAdminParams; @@ -86,14 +85,18 @@ public class RenameCollectionAPI { // something that's already somewhat built-in when this eventually moves to JAX-RS private RenameCollectionPayload parseRenameParamsFromRequestBody( SolrQueryRequest solrQueryRequest) throws IOException { - if (IterableUtils.isEmpty(solrQueryRequest.getContentStreams())) { + Iterable<ContentStream> contentStreams = solrQueryRequest.getContentStreams(); + ContentStream cs = null; + if (contentStreams != null) { + cs = contentStreams.iterator().next(); + } + if (cs == null) { // An empty request-body is invalid (the 'to' field is required at a minimum), but we'll lean // on the input-validation in CollectionsHandler to // catch this, rather than duplicating the check for that here return new RenameCollectionPayload(); } - final ContentStream cs = solrQueryRequest.getContentStreams().iterator().next(); return REQUEST_BODY_PARSER.readValue(cs.getStream(), RenameCollectionPayload.class); } } diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/SplitCoreAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/SplitCoreAPI.java index 0cb8e1e75d4..d846caea34b 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/SplitCoreAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/SplitCoreAPI.java @@ -28,7 +28,6 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; -import org.apache.commons.collections4.CollectionUtils; import org.apache.solr.api.Command; import org.apache.solr.api.EndPoint; import org.apache.solr.api.PayloadObj; @@ -66,11 +65,11 @@ public class SplitCoreAPI { v1Params.put( CoreAdminParams.CORE, obj.getRequest().getPathTemplateValues().get(CoreAdminParams.CORE)); - if (!CollectionUtils.isEmpty(v2Body.path)) { - v1Params.put(PATH, v2Body.path.toArray(new String[v2Body.path.size()])); + if (v2Body.path != null && !v2Body.path.isEmpty()) { + v1Params.put(PATH, v2Body.path.toArray(new String[0])); } - if (!CollectionUtils.isEmpty(v2Body.targetCore)) { - v1Params.put(TARGET_CORE, v2Body.targetCore.toArray(new String[v2Body.targetCore.size()])); + if (v2Body.targetCore != null && !v2Body.targetCore.isEmpty()) { + v1Params.put(TARGET_CORE, v2Body.targetCore.toArray(new String[0])); } if (v2Body.splitKey != null) { diff --git a/solr/core/src/java/org/apache/solr/handler/admin/api/SplitShardAPI.java b/solr/core/src/java/org/apache/solr/handler/admin/api/SplitShardAPI.java index b161b76c35c..0a3a8c3520f 100644 --- a/solr/core/src/java/org/apache/solr/handler/admin/api/SplitShardAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/admin/api/SplitShardAPI.java @@ -27,7 +27,6 @@ import static org.apache.solr.security.PermissionNameProvider.Name.COLL_EDIT_PER import java.util.HashMap; import java.util.Map; -import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.apache.solr.api.Command; import org.apache.solr.api.EndPoint; @@ -68,9 +67,7 @@ public class SplitShardAPI { if (StringUtils.isNotEmpty(v2Body.splitKey)) { v1Params.put(CommonAdminParams.SPLIT_KEY, v2Body.splitKey); } - if (MapUtils.isNotEmpty(v2Body.coreProperties)) { - flattenMapWithPrefix(v2Body.coreProperties, v1Params, PROPERTY_PREFIX); - } + flattenMapWithPrefix(v2Body.coreProperties, v1Params, PROPERTY_PREFIX); collectionsHandler.handleRequestBody(wrapParams(obj.getRequest(), v1Params), obj.getResponse()); } } diff --git a/solr/core/src/java/org/apache/solr/handler/configsets/CreateConfigSetAPI.java b/solr/core/src/java/org/apache/solr/handler/configsets/CreateConfigSetAPI.java index 7f52a06a525..78144edd247 100644 --- a/solr/core/src/java/org/apache/solr/handler/configsets/CreateConfigSetAPI.java +++ b/solr/core/src/java/org/apache/solr/handler/configsets/CreateConfigSetAPI.java @@ -24,7 +24,6 @@ import static org.apache.solr.security.PermissionNameProvider.Name.CONFIG_EDIT_P import java.util.HashMap; import java.util.Map; -import org.apache.commons.collections4.MapUtils; import org.apache.solr.api.Command; import org.apache.solr.api.EndPoint; import org.apache.solr.api.PayloadObj; @@ -75,7 +74,7 @@ public class CreateConfigSetAPI extends ConfigSetAPIBase { final Map<String, Object> configsetCommandMsg = new HashMap<>(); configsetCommandMsg.put(NAME, createConfigPayload.name); configsetCommandMsg.put(ConfigSetCmds.BASE_CONFIGSET, createConfigPayload.baseConfigSet); - if (!MapUtils.isEmpty(createConfigPayload.properties)) { + if (createConfigPayload.properties != null) { for (Map.Entry<String, Object> e : createConfigPayload.properties.entrySet()) { configsetCommandMsg.put( ConfigSetCmds.CONFIG_SET_PROPERTY_PREFIX + e.getKey(), e.getValue()); diff --git a/solr/core/src/java/org/apache/solr/packagemanager/PackageManager.java b/solr/core/src/java/org/apache/solr/packagemanager/PackageManager.java index 66af682f621..4f0561abd29 100644 --- a/solr/core/src/java/org/apache/solr/packagemanager/PackageManager.java +++ b/solr/core/src/java/org/apache/solr/packagemanager/PackageManager.java @@ -36,8 +36,6 @@ import java.util.Scanner; import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; -import org.apache.commons.collections4.MultiValuedMap; -import org.apache.commons.collections4.multimap.HashSetValuedHashMap; import org.apache.http.client.methods.HttpDelete; import org.apache.solr.client.solrj.SolrRequest; import org.apache.solr.client.solrj.SolrServerException; @@ -270,7 +268,7 @@ public class PackageManager implements Closeable { public Map<String, SolrPackageInstance> getPackagesDeployedAsClusterLevelPlugins() { Map<String, String> packageVersions = new HashMap<>(); // map of package name to multiple values of pluginMeta(Map<String, String>) - MultiValuedMap<String, PluginMeta> packagePlugins = new HashSetValuedHashMap<>(); + Map<String, Set<PluginMeta>> packagePlugins = new HashMap<>(); Map<String, Object> result; try { result = @@ -291,13 +289,11 @@ public class PackageManager implements Closeable { Map<String, Object> clusterPlugins = (Map<String, Object>) result.getOrDefault(ContainerPluginsApi.PLUGIN, Collections.emptyMap()); - for (String key : clusterPlugins.keySet()) { - // Map<String, String> pluginMeta = (Map<String, String>) clusterPlugins.get(key); + for (Map.Entry<String, Object> entry : clusterPlugins.entrySet()) { PluginMeta pluginMeta; try { pluginMeta = - PackageUtils.getMapper() - .readValue(Utils.toJSON(clusterPlugins.get(key)), PluginMeta.class); + PackageUtils.getMapper().readValue(Utils.toJSON(entry.getValue()), PluginMeta.class); } catch (IOException e) { throw new SolrException( ErrorCode.SERVER_ERROR, @@ -307,16 +303,17 @@ public class PackageManager implements Closeable { if (pluginMeta.klass.contains(":")) { String packageName = pluginMeta.klass.substring(0, pluginMeta.klass.indexOf(':')); packageVersions.put(packageName, pluginMeta.version); - packagePlugins.put(packageName, pluginMeta); + packagePlugins.computeIfAbsent(packageName, k -> new HashSet<>()).add(pluginMeta); } } Map<String, SolrPackageInstance> ret = new HashMap<>(); - for (String packageName : packageVersions.keySet()) { - if (StrUtils.isNullOrEmpty(packageName) == false - && // There can be an empty key, storing the version here - packageVersions.get(packageName) - != null) { // null means the package was undeployed from this package before - ret.put(packageName, getPackageInstance(packageName, packageVersions.get(packageName))); + for (Map.Entry<String, String> entry : packageVersions.entrySet()) { + String packageName = entry.getKey(); + String packageVersion = entry.getValue(); + // There can be an empty key, storing the version here + // null means the package was undeployed from this package before + if (!StrUtils.isNullOrEmpty(packageName) && packageVersion != null) { + ret.put(packageName, getPackageInstance(packageName, packageVersion)); ret.get(packageName).setCustomData(packagePlugins.get(packageName)); } } diff --git a/solr/core/src/java/org/apache/solr/search/Grouping.java b/solr/core/src/java/org/apache/solr/search/Grouping.java index 0d28b7d4c6f..25714630cab 100644 --- a/solr/core/src/java/org/apache/solr/search/Grouping.java +++ b/solr/core/src/java/org/apache/solr/search/Grouping.java @@ -26,7 +26,6 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; -import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ArrayUtils; import org.apache.lucene.index.ExitableDirectoryReader; import org.apache.lucene.index.IndexableField; @@ -849,7 +848,7 @@ public class Grouping { // TODO: currently, this path is called only for string field, so // should we just use fieldType.toObject(schemaField, group.groupValue) here? List<IndexableField> fields = schemaField.createFields(group.groupValue.utf8ToString()); - if (CollectionUtils.isNotEmpty(fields)) { + if (fields != null && !fields.isEmpty()) { nl.add("groupValue", fieldType.toObject(fields.get(0))); } else { throw new SolrException( diff --git a/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java b/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java index ca231379cb8..d93c6acebfc 100644 --- a/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java +++ b/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java @@ -32,7 +32,6 @@ import java.util.Objects; import java.util.Set; import java.util.function.Predicate; import java.util.function.Supplier; -import org.apache.commons.collections4.CollectionUtils; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.document.Document; @@ -762,7 +761,7 @@ public class SolrDocumentFetcher { } private boolean returnDVFields() { - return CollectionUtils.isNotEmpty(dvFields); + return !dvFields.isEmpty(); } private Set<String> getStoredFields() { diff --git a/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/GroupedEndResultTransformer.java b/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/GroupedEndResultTransformer.java index 8006673034f..78244263855 100644 --- a/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/GroupedEndResultTransformer.java +++ b/solr/core/src/java/org/apache/solr/search/grouping/endresulttransformer/GroupedEndResultTransformer.java @@ -19,7 +19,6 @@ package org.apache.solr.search.grouping.endresulttransformer; import java.util.ArrayList; import java.util.List; import java.util.Map; -import org.apache.commons.collections4.CollectionUtils; import org.apache.lucene.index.IndexableField; import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.TopDocs; @@ -77,7 +76,7 @@ public class GroupedEndResultTransformer implements EndResultTransformer { if (group.groupValue != null) { // use createFields so that fields having doc values are also supported List<IndexableField> fields = groupField.createFields(group.groupValue.utf8ToString()); - if (CollectionUtils.isNotEmpty(fields)) { + if (fields != null && !fields.isEmpty()) { groupResult.add("groupValue", groupFieldType.toObject(fields.get(0))); } else { throw new SolrException( diff --git a/solr/core/src/test/org/apache/solr/cloud/RollingRestartTest.java b/solr/core/src/test/org/apache/solr/cloud/RollingRestartTest.java index 44757908cee..aa08e871722 100644 --- a/solr/core/src/test/org/apache/solr/cloud/RollingRestartTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/RollingRestartTest.java @@ -20,7 +20,6 @@ import java.lang.invoke.MethodHandles; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; -import org.apache.commons.collections4.CollectionUtils; import org.apache.solr.client.solrj.request.CollectionAdminRequest; import org.apache.solr.common.cloud.SolrZkClient; import org.apache.solr.common.cloud.ZkStateReader; @@ -95,9 +94,7 @@ public class RollingRestartTest extends AbstractFullDistribZkTestBase { chaosMonkey.stopJetty(cloudJetty); zkStateReader.updateLiveNodes(); boolean liveDesignates = - CollectionUtils.intersection(zkStateReader.getClusterState().getLiveNodes(), designates) - .size() - > 0; + zkStateReader.getClusterState().getLiveNodes().stream().anyMatch(designates::contains); if (liveDesignates) { boolean success = waitUntilOverseerDesignateIsLeader(zkStateReader.getZkClient(), designates); @@ -127,9 +124,7 @@ public class RollingRestartTest extends AbstractFullDistribZkTestBase { zkStateReader.updateLiveNodes(); sawLiveDesignate = - CollectionUtils.intersection(zkStateReader.getClusterState().getLiveNodes(), designates) - .size() - > 0; + zkStateReader.getClusterState().getLiveNodes().stream().anyMatch(designates::contains); } } diff --git a/solr/core/src/test/org/apache/solr/util/tracing/TestHttpServletCarrier.java b/solr/core/src/test/org/apache/solr/util/tracing/TestHttpServletCarrier.java index bd19112208e..4001af36b1c 100644 --- a/solr/core/src/test/org/apache/solr/util/tracing/TestHttpServletCarrier.java +++ b/solr/core/src/test/org/apache/solr/util/tracing/TestHttpServletCarrier.java @@ -21,13 +21,14 @@ import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import java.util.Collections; import java.util.Enumeration; +import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.Map; +import java.util.Set; import javax.servlet.http.HttpServletRequest; -import org.apache.commons.collections4.IteratorUtils; -import org.apache.commons.collections4.MultiValuedMap; -import org.apache.commons.collections4.multimap.HashSetValuedHashMap; import org.apache.solr.SolrTestCaseJ4; import org.junit.Test; import org.mockito.stubbing.Answer; @@ -38,29 +39,27 @@ public class TestHttpServletCarrier extends SolrTestCaseJ4 { public void test() { SolrTestCaseJ4.assumeWorkingMockito(); HttpServletRequest req = mock(HttpServletRequest.class); - MultiValuedMap<String, String> headers = new HashSetValuedHashMap<>(); - headers.put("a", "a"); - headers.put("a", "b"); - headers.put("a", "c"); - headers.put("b", "a"); - headers.put("b", "b"); - headers.put("c", "a"); + Map<String, Set<String>> headers = + Map.of( + "a", Set.of("a", "b", "c"), + "b", Set.of("a", "b"), + "c", Set.of("a")); - when(req.getHeaderNames()).thenReturn(IteratorUtils.asEnumeration(headers.keySet().iterator())); + when(req.getHeaderNames()).thenReturn(Collections.enumeration(headers.keySet())); when(req.getHeaders(anyString())) .thenAnswer( (Answer<Enumeration<String>>) inv -> { String key = inv.getArgument(0); - return IteratorUtils.asEnumeration(headers.get(key).iterator()); + return Collections.enumeration(headers.get(key)); }); HttpServletCarrier servletCarrier = new HttpServletCarrier(req); Iterator<Map.Entry<String, String>> it = servletCarrier.iterator(); - MultiValuedMap<String, String> resultBack = new HashSetValuedHashMap<>(); + Map<String, Set<String>> resultBack = new HashMap<>(); while (it.hasNext()) { Map.Entry<String, String> entry = it.next(); - resultBack.put(entry.getKey(), entry.getValue()); + resultBack.computeIfAbsent(entry.getKey(), k -> new HashSet<>()).add(entry.getValue()); } assertEquals(headers, resultBack); }
