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:53 UTC

[solr] branch branch_9x updated (16f4d998594 -> d3ae0e12e4c)

This is an automated email from the ASF dual-hosted git repository.

krisden pushed a change to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/solr.git


    from 16f4d998594 SOLR-16427: Evaluate and fix errorprone rules - part 5 - NonCanonicalType
     new 2bc4654322b Update dependency org.apache.commons:commons-compress to v1.23.0 (#1493)
     new d3ae0e12e4c SOLR-16724: Remove unneeded commons-collections4 dependency (#1500)

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../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 +++++++++++-----------
 solr/licenses/commons-compress-1.22.jar.sha1       |  1 -
 solr/licenses/commons-compress-1.23.0.jar.sha1     |  1 +
 versions.lock                                      |  2 +-
 versions.props                                     |  2 +-
 21 files changed, 55 insertions(+), 78 deletions(-)
 create mode 100644 gradle/validation/forbidden-apis/org.apache.commons.collections4.all.txt
 delete mode 100644 solr/licenses/commons-compress-1.22.jar.sha1
 create mode 100644 solr/licenses/commons-compress-1.23.0.jar.sha1


[solr] 02/02: SOLR-16724: Remove unneeded commons-collections4 dependency (#1500)

Posted by kr...@apache.org.
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);
   }


[solr] 01/02: Update dependency org.apache.commons:commons-compress to v1.23.0 (#1493)

Posted by kr...@apache.org.
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 2bc4654322b192ac098b2ace82998d4ce443f3fe
Author: Solr Bot <12...@users.noreply.github.com>
AuthorDate: Wed Mar 29 20:27:41 2023 +0200

    Update dependency org.apache.commons:commons-compress to v1.23.0 (#1493)
---
 solr/licenses/commons-compress-1.22.jar.sha1   | 1 -
 solr/licenses/commons-compress-1.23.0.jar.sha1 | 1 +
 versions.lock                                  | 2 +-
 versions.props                                 | 2 +-
 4 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/solr/licenses/commons-compress-1.22.jar.sha1 b/solr/licenses/commons-compress-1.22.jar.sha1
deleted file mode 100644
index 5ad0fb9ada1..00000000000
--- a/solr/licenses/commons-compress-1.22.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-691a8b4e6cf4248c3bc72c8b719337d5cb7359fa
diff --git a/solr/licenses/commons-compress-1.23.0.jar.sha1 b/solr/licenses/commons-compress-1.23.0.jar.sha1
new file mode 100644
index 00000000000..a5708f08bbb
--- /dev/null
+++ b/solr/licenses/commons-compress-1.23.0.jar.sha1
@@ -0,0 +1 @@
+4af2060ea9b0c8b74f1854c6cafe4d43cfc161fc
diff --git a/versions.lock b/versions.lock
index 685ec4dbfdb..ce1b22e4646 100644
--- a/versions.lock
+++ b/versions.lock
@@ -171,7 +171,7 @@ org.apache.calcite:calcite-linq4j:1.34.0 (2 constraints: c912b74b)
 org.apache.calcite.avatica:avatica-core:1.23.0 (3 constraints: fb20cdcb)
 org.apache.calcite.avatica:avatica-metrics:1.23.0 (1 constraints: 991049c4)
 org.apache.commons:commons-collections4:4.4 (3 constraints: 2a172a57)
-org.apache.commons:commons-compress:1.22 (3 constraints: 9e1b5bae)
+org.apache.commons:commons-compress:1.23.0 (3 constraints: fd1bd8d1)
 org.apache.commons:commons-configuration2:2.8.0 (1 constraints: 0c050d36)
 org.apache.commons:commons-csv:1.9.0 (1 constraints: 610cfc01)
 org.apache.commons:commons-exec:1.3 (2 constraints: a41056b8)
diff --git a/versions.props b/versions.props
index 035ea47a426..c8c54dc0b74 100644
--- a/versions.props
+++ b/versions.props
@@ -37,7 +37,7 @@ no.nav.security:mock-oauth2-server=0.4.3
 org.apache.calcite.avatica:avatica-core=1.23.0
 org.apache.calcite:*=1.34.0
 org.apache.commons:commons-collections4=4.4
-org.apache.commons:commons-compress=1.22
+org.apache.commons:commons-compress=1.23.0
 org.apache.commons:commons-configuration2=2.8.0
 org.apache.commons:commons-exec=1.3
 org.apache.commons:commons-lang3=3.12.0