You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by kr...@apache.org on 2023/03/29 18:38:55 UTC
[solr] 02/02: SOLR-16724: Remove unneeded commons-collections4 dependency (#1500)
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 <ri...@users.noreply.github.com>
AuthorDate: Wed Mar 29 14:27:56 2023 -0400
SOLR-16724: Remove unneeded commons-collections4 dependency (#1500)
Co-authored-by: Jan Høydahl <ja...@users.noreply.github.com>
---
.../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);
}