You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by er...@apache.org on 2020/07/23 21:14:40 UTC
[lucene-solr] branch branch_8x updated: SOLR-14676: Update
commons-collections to 4.4 and use it in Solr
This is an automated email from the ASF dual-hosted git repository.
erick pushed a commit to branch branch_8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/branch_8x by this push:
new 3e9c0bd SOLR-14676: Update commons-collections to 4.4 and use it in Solr
3e9c0bd is described below
commit 3e9c0bdebbccf4bf5165642308221c201a029cd1
Author: Erick Erickson <Er...@gmail.com>
AuthorDate: Thu Jul 23 17:14:22 2020 -0400
SOLR-14676: Update commons-collections to 4.4 and use it in Solr
---
lucene/ivy-versions.properties | 2 +-
solr/CHANGES.txt | 2 ++
solr/core/ivy.xml | 1 +
.../org/apache/solr/packagemanager/PackageManager.java | 14 ++++++++------
solr/core/src/java/org/apache/solr/search/Grouping.java | 5 ++---
.../java/org/apache/solr/search/SolrDocumentFetcher.java | 2 +-
.../endresulttransformer/GroupedEndResultTransformer.java | 5 ++---
solr/core/src/test/org/apache/hadoop/fs/FileUtil.java | 5 ++---
.../src/test/org/apache/solr/cloud/RollingRestartTest.java | 2 +-
.../apache/solr/util/tracing/TestHttpServletCarrier.java | 3 +--
solr/licenses/commons-collections4-4.2.jar.sha1 | 1 -
solr/licenses/commons-collections4-4.4.jar.sha1 | 1 +
.../client/solrj/io/stream/SignificantTermsStream.java | 8 +++-----
.../solrj/io/stream/eval/ConversionEvaluatorsTest.java | 5 ++---
.../solrj/io/stream/eval/TemporalEvaluatorsTest.java | 5 ++---
.../client/solrj/io/stream/ops/ConcatOperationTest.java | 5 ++---
.../solr/client/solrj/io/stream/ops/OperationsTest.java | 5 ++---
17 files changed, 33 insertions(+), 38 deletions(-)
diff --git a/lucene/ivy-versions.properties b/lucene/ivy-versions.properties
index 9742a50..0e3a1f9 100644
--- a/lucene/ivy-versions.properties
+++ b/lucene/ivy-versions.properties
@@ -129,7 +129,7 @@ org.apache.calcite.version = 1.18.0
/org.apache.calcite/calcite-core = ${org.apache.calcite.version}
/org.apache.calcite/calcite-linq4j = ${org.apache.calcite.version}
-/org.apache.commons/commons-collections4 = 4.2
+/org.apache.commons/commons-collections4 = 4.4
/org.apache.commons/commons-compress = 1.19
/org.apache.commons/commons-configuration2 = 2.1.1
/org.apache.commons/commons-csv = 1.7
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 6d6f9ec..3e41179 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -58,6 +58,8 @@ Other Changes
* SOLR-14637: Update CloudSolrClient examples to remove deprecated method. (Andras Salamon via Eric Pugh)
+* SOLR-14676: Update commons-collections to 4.4 and use it in Solr (Erick Erickson)
+
================== 8.6.0 ==================
Consult the lucene/CHANGES.txt file for additional, low level, changes in this release.
diff --git a/solr/core/ivy.xml b/solr/core/ivy.xml
index da2934d..9078012 100644
--- a/solr/core/ivy.xml
+++ b/solr/core/ivy.xml
@@ -39,6 +39,7 @@
<dependency org="commons-io" name="commons-io" rev="${/commons-io/commons-io}" conf="compile"/>
<dependency org="org.apache.commons" name="commons-exec" rev="${/org.apache.commons/commons-exec}" conf="compile"/>
<dependency org="commons-cli" name="commons-cli" rev="${/commons-cli/commons-cli}" conf="compile"/>
+ <dependency org="org.apache.commons" name="commons-collections4" rev="${/org.apache.commons/commons-collections4}" conf="compile"/>
<dependency org="org.apache.commons" name="commons-text" rev="${/org.apache.commons/commons-text}" conf="compile"/>
<dependency org="com.google.guava" name="guava" rev="${/com.google.guava/guava}" conf="compile"/>
<dependency org="org.locationtech.spatial4j" name="spatial4j" rev="${/org.locationtech.spatial4j/spatial4j}" conf="compile"/>
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 3c20d8c..5344232 100644
--- a/solr/core/src/java/org/apache/solr/packagemanager/PackageManager.java
+++ b/solr/core/src/java/org/apache/solr/packagemanager/PackageManager.java
@@ -33,7 +33,8 @@ import java.util.Scanner;
import java.util.Set;
import java.util.stream.Collectors;
-import org.apache.commons.collections.map.MultiValueMap;
+import org.apache.commons.collections4.MultiValuedMap;
+import org.apache.commons.collections4.multimap.HashSetValuedHashMap;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.beans.PluginMeta;
import org.apache.solr.common.NavigableObject;
@@ -141,12 +142,13 @@ public class PackageManager implements Closeable {
* Get a list of packages that have their plugins deployed as cluster level plugins.
* The returned packages also contain the "pluginMeta" from "clusterprops.json" as custom data.
*/
- @SuppressWarnings("unchecked")
public Map<String, SolrPackageInstance> getPackagesDeployedAsClusterLevelPlugins() {
- Map<String, String> packageVersions = new HashMap<String, String>();
- MultiValueMap packagePlugins = new MultiValueMap(); // map of package name to multiple values of pluginMeta (Map<String, String>)
- Map<String, Object> result = (Map<String, Object>) Utils.executeGET(solrClient.getHttpClient(),
+ Map<String, String> packageVersions = new HashMap<>();
+ MultiValuedMap<String, PluginMeta> packagePlugins = new HashSetValuedHashMap<>(); // map of package name to multiple values of pluginMeta (Map<String, String>)
+ @SuppressWarnings({"unchecked"})
+ Map<String, Object> result = (Map<String, Object>)Utils.executeGET(solrClient.getHttpClient(),
solrBaseUrl + PackageUtils.CLUSTERPROPS_PATH, Utils.JSONCONSUMER);
+ @SuppressWarnings({"unchecked"})
Map<String, Object> clusterPlugins = (Map<String, Object>) result.getOrDefault("plugin", Collections.emptyMap());
for (String key: clusterPlugins.keySet()) {
// Map<String, String> pluginMeta = (Map<String, String>) clusterPlugins.get(key);
@@ -167,7 +169,7 @@ public class PackageManager implements Closeable {
if (Strings.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)));
- ret.get(packageName).setCustomData(packagePlugins.getCollection(packageName));
+ ret.get(packageName).setCustomData(packagePlugins.get(packageName));
}
}
return ret;
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 899ea57..343461d 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,7 @@ import java.util.Locale;
import java.util.Map;
import java.util.Set;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.lucene.index.ExitableDirectoryReader;
import org.apache.lucene.index.IndexableField;
@@ -104,8 +104,7 @@ public class Grouping {
private Query query;
private DocSet filter;
private Filter luceneFilter;
- @SuppressWarnings({"rawtypes"})
- private NamedList grouped = new SimpleOrderedMap();
+ private NamedList<Object> grouped = new SimpleOrderedMap<>();
private Set<Integer> idSet = new LinkedHashSet<>(); // used for tracking unique docs when we need a doclist
private int maxMatches; // max number of matches from any grouping command
private float maxScore = Float.NaN; // max score seen in any doclist
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 4f92aa1..5cc7499 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrDocumentFetcher.java
@@ -34,7 +34,7 @@ import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Predicate;
import java.util.function.Supplier;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.document.Document;
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 1b4058c..dd62cb6 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
@@ -20,7 +20,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.lucene.index.IndexableField;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
@@ -68,8 +68,7 @@ public class GroupedEndResultTransformer implements EndResultTransformer {
command.add("ngroups", totalGroupCount);
}
- @SuppressWarnings({"rawtypes"})
- List<NamedList> groups = new ArrayList<>();
+ List<NamedList<Object>> groups = new ArrayList<>();
SchemaField groupField = searcher.getSchema().getField(entry.getKey());
FieldType groupFieldType = groupField.getType();
for (GroupDocs<BytesRef> group : topGroups.groups) {
diff --git a/solr/core/src/test/org/apache/hadoop/fs/FileUtil.java b/solr/core/src/test/org/apache/hadoop/fs/FileUtil.java
index c24c9b0..e38b563 100644
--- a/solr/core/src/test/org/apache/hadoop/fs/FileUtil.java
+++ b/solr/core/src/test/org/apache/hadoop/fs/FileUtil.java
@@ -52,7 +52,7 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
-import org.apache.commons.collections.map.CaseInsensitiveMap;
+import org.apache.commons.collections4.map.CaseInsensitiveMap;
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
import org.apache.hadoop.classification.InterfaceAudience;
@@ -1489,8 +1489,7 @@ public class FileUtil {
Path targetDir,
Map<String, String> callerEnv) throws IOException {
// Replace environment variables, case-insensitive on Windows
- @SuppressWarnings("unchecked")
- Map<String, String> env = Shell.WINDOWS ? new CaseInsensitiveMap(callerEnv) :
+ Map<String, String> env = Shell.WINDOWS ? new CaseInsensitiveMap<>(callerEnv) :
callerEnv;
String[] classPathEntries = inputClassPath.split(File.pathSeparator);
for (int i = 0; i < classPathEntries.length; ++i) {
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 89e96e2..18fd2fd 100644
--- a/solr/core/src/test/org/apache/solr/cloud/RollingRestartTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/RollingRestartTest.java
@@ -21,7 +21,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
-import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.zookeeper.KeeperException;
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 a3cb025..50d88d8 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
@@ -25,7 +25,7 @@ import java.util.Map;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
-import org.apache.commons.collections.IteratorUtils;
+import org.apache.commons.collections4.IteratorUtils;
import org.apache.solr.SolrTestCaseJ4;
import org.junit.Test;
import org.mockito.stubbing.Answer;
@@ -37,7 +37,6 @@ import static org.mockito.Mockito.when;
public class TestHttpServletCarrier extends SolrTestCaseJ4 {
@Test
- @SuppressWarnings({"unchecked"})
public void test() {
SolrTestCaseJ4.assumeWorkingMockito();
HttpServletRequest req = mock(HttpServletRequest.class);
diff --git a/solr/licenses/commons-collections4-4.2.jar.sha1 b/solr/licenses/commons-collections4-4.2.jar.sha1
deleted file mode 100644
index e001863..0000000
--- a/solr/licenses/commons-collections4-4.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-54ebea0a5b653d3c680131e73fe807bb8f78c4ed
diff --git a/solr/licenses/commons-collections4-4.4.jar.sha1 b/solr/licenses/commons-collections4-4.4.jar.sha1
new file mode 100644
index 0000000..05a9b6e
--- /dev/null
+++ b/solr/licenses/commons-collections4-4.4.jar.sha1
@@ -0,0 +1 @@
+62ebe7544cb7164d87e0637a2a6a2bdc981395e8
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/SignificantTermsStream.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/SignificantTermsStream.java
index e1b7f8f..8e1b783 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/SignificantTermsStream.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/SignificantTermsStream.java
@@ -319,13 +319,11 @@ public class SignificantTermsStream extends TupleStream implements Expressible{
}
}
- @SuppressWarnings({"rawtypes"})
- List<Map> maps = new ArrayList<>();
+ List<Map<String, Object>> maps = new ArrayList<>();
for(Map.Entry<String, int[]> entry : mergeFreqs.entrySet()) {
int[] freqs = entry.getValue();
- @SuppressWarnings({"rawtypes"})
- Map map = new HashMap();
+ Map<String, Object> map = new HashMap<>();
map.put("term", entry.getKey());
map.put("background", freqs[0]);
map.put("foreground", freqs[1]);
@@ -338,7 +336,7 @@ public class SignificantTermsStream extends TupleStream implements Expressible{
Collections.sort(maps, new ScoreComp());
List<Tuple> tuples = new ArrayList<>();
- for (@SuppressWarnings({"rawtypes"})Map map : maps) {
+ for (Map<String, Object> map : maps) {
if (tuples.size() == numTerms) break;
tuples.add(new Tuple(map));
}
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/eval/ConversionEvaluatorsTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/eval/ConversionEvaluatorsTest.java
index 4997902..5de2412 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/eval/ConversionEvaluatorsTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/eval/ConversionEvaluatorsTest.java
@@ -21,7 +21,7 @@ import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
-import org.apache.commons.collections.map.HashedMap;
+import org.apache.commons.collections4.map.HashedMap;
import org.apache.solr.client.solrj.io.Tuple;
import org.apache.solr.client.solrj.io.eval.ConversionEvaluator;
import org.apache.solr.client.solrj.io.eval.RawValueEvaluator;
@@ -42,14 +42,13 @@ public class ConversionEvaluatorsTest {
StreamFactory factory;
Map<String, Object> values;
- @SuppressWarnings({"unchecked"})
public ConversionEvaluatorsTest() {
super();
factory = new StreamFactory();
factory.withFunctionName("convert", ConversionEvaluator.class).withFunctionName("raw", RawValueEvaluator.class);
- values = new HashedMap();
+ values = new HashedMap<>();
}
@Test
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/eval/TemporalEvaluatorsTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/eval/TemporalEvaluatorsTest.java
index 38b912c..0273281 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/eval/TemporalEvaluatorsTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/eval/TemporalEvaluatorsTest.java
@@ -30,7 +30,7 @@ import java.util.Locale;
import java.util.Map;
import java.util.TimeZone;
-import org.apache.commons.collections.map.HashedMap;
+import org.apache.commons.collections4.map.HashedMap;
import org.apache.solr.client.solrj.io.Tuple;
import org.apache.solr.client.solrj.io.eval.StreamEvaluator;
import org.apache.solr.client.solrj.io.eval.TemporalEvaluatorDay;
@@ -63,7 +63,6 @@ public class TemporalEvaluatorsTest {
StreamFactory factory;
Map<String, Object> values;
- @SuppressWarnings({"unchecked"})
public TemporalEvaluatorsTest() {
super();
@@ -81,7 +80,7 @@ public class TemporalEvaluatorsTest {
factory.withFunctionName(TemporalEvaluatorQuarter.FUNCTION_NAME, TemporalEvaluatorQuarter.class);
factory.withFunctionName(TemporalEvaluatorDayOfQuarter.FUNCTION_NAME, TemporalEvaluatorDayOfQuarter.class);
- values = new HashedMap();
+ values = new HashedMap<>();
}
@Test
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/ops/ConcatOperationTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/ops/ConcatOperationTest.java
index d6d9093..e2599dc 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/ops/ConcatOperationTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/ops/ConcatOperationTest.java
@@ -20,7 +20,7 @@ import java.util.Map;
import junit.framework.Assert;
-import org.apache.commons.collections.map.HashedMap;
+import org.apache.commons.collections4.map.HashedMap;
import org.apache.solr.SolrTestCase;
import org.apache.solr.client.solrj.io.Tuple;
import org.apache.solr.client.solrj.io.ops.ConcatOperation;
@@ -37,13 +37,12 @@ public class ConcatOperationTest extends SolrTestCase {
StreamFactory factory;
Map<String, Object> values;
- @SuppressWarnings({"unchecked"})
public ConcatOperationTest() {
super();
factory = new StreamFactory()
.withFunctionName("concat", ConcatOperation.class);
- values = new HashedMap();
+ values = new HashedMap<>();
}
@Test
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/ops/OperationsTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/ops/OperationsTest.java
index 22a0bc1..9a29917 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/ops/OperationsTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/stream/ops/OperationsTest.java
@@ -20,7 +20,7 @@ import java.util.Map;
import junit.framework.Assert;
-import org.apache.commons.collections.map.HashedMap;
+import org.apache.commons.collections4.map.HashedMap;
import org.apache.solr.SolrTestCase;
import org.apache.solr.client.solrj.io.Tuple;
import org.apache.solr.client.solrj.io.ops.ReplaceOperation;
@@ -37,13 +37,12 @@ public class OperationsTest extends SolrTestCase {
StreamFactory factory;
Map<String, Object> values;
- @SuppressWarnings({"unchecked"})
public OperationsTest() {
super();
factory = new StreamFactory()
.withFunctionName("replace", ReplaceOperation.class);
- values = new HashedMap();
+ values = new HashedMap<>();
}
@Test