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

cpoerschke pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new 28ed30e  SOLR-15535: remove rawtypes warnings in 'grouping' code (#216)
28ed30e is described below

commit 28ed30e6293ea107174de98485a1ad7c32304dd7
Author: Christine Poerschke <[email protected]>
AuthorDate: Thu Aug 19 16:51:55 2021 +0100

    SOLR-15535: remove rawtypes warnings in 'grouping' code (#216)
---
 solr/CHANGES.txt                                           |  2 +-
 .../distributed/command/SearchGroupsFieldCommand.java      | 11 ++++++-----
 .../distributed/command/TopGroupsFieldCommand.java         | 14 ++++++++------
 .../SearchGroupShardResponseProcessor.java                 |  2 +-
 .../responseprocessor/TopGroupsShardResponseProcessor.java |  6 +++---
 .../SearchGroupsResultTransformer.java                     | 13 ++++++-------
 6 files changed, 25 insertions(+), 23 deletions(-)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index d7dace7..b0e4ef5 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -315,7 +315,7 @@ Other Changes
 
 * SOLR-15439: Upgrade jose4j library used for JWT authentication processing, 
to v0.7.7 (janhoy)
 
-* SOLR-15385: Address many rawtypes warnings, resulting in several modified 
signatures in the public API. (Mike Drob, David Smiley, Christine Poerschke)
+* SOLR-15385, SOLR-15535: Address many rawtypes warnings, resulting in several 
modified signatures in the public API. (Mike Drob, David Smiley, Christine 
Poerschke)
 
 * SOLR-15470: The binary distribution no longer contains test-framework jars 
(janhoy)
 
diff --git 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/SearchGroupsFieldCommand.java
 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/SearchGroupsFieldCommand.java
index db59aed..064ac2f 100644
--- 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/SearchGroupsFieldCommand.java
+++ 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/SearchGroupsFieldCommand.java
@@ -32,6 +32,7 @@ import org.apache.lucene.search.grouping.SearchGroup;
 import org.apache.lucene.search.grouping.TermGroupSelector;
 import org.apache.lucene.search.grouping.ValueSourceGroupSelector;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.mutable.MutableValue;
 import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.search.grouping.Command;
@@ -83,8 +84,7 @@ public class SearchGroupsFieldCommand implements 
Command<SearchGroupsFieldComman
   private final int topNGroups;
   private final boolean includeGroupCount;
 
-  @SuppressWarnings({"rawtypes"})
-  private FirstPassGroupingCollector firstPassGroupingCollector;
+  private FirstPassGroupingCollector<?> firstPassGroupingCollector;
   private AllGroupsCollector<?> allGroupsCollector;
 
   private SearchGroupsFieldCommand(SchemaField field, Sort groupSort, int 
topNGroups, boolean includeGroupCount) {
@@ -123,14 +123,15 @@ public class SearchGroupsFieldCommand implements 
Command<SearchGroupsFieldComman
   }
 
   @Override
-  @SuppressWarnings({"unchecked"})
+  @SuppressWarnings("unchecked")
   public SearchGroupsFieldCommandResult result() throws IOException {
     final Collection<SearchGroup<BytesRef>> topGroups;
     if (firstPassGroupingCollector != null) {
+      Collection<?> values = firstPassGroupingCollector.getTopGroups(0);
       if (field.getType().getNumberType() != null) {
-        topGroups = GroupConverter.fromMutable(field, 
firstPassGroupingCollector.getTopGroups(0));
+        topGroups = GroupConverter.fromMutable(field, 
(Collection<SearchGroup<MutableValue>>) values);
       } else {
-        topGroups = firstPassGroupingCollector.getTopGroups(0);
+        topGroups = (Collection<SearchGroup<BytesRef>>) values;
       }
     } else {
       topGroups = Collections.emptyList();
diff --git 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/TopGroupsFieldCommand.java
 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/TopGroupsFieldCommand.java
index 1410c67..43c0404 100644
--- 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/TopGroupsFieldCommand.java
+++ 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/TopGroupsFieldCommand.java
@@ -17,6 +17,7 @@
 package org.apache.solr.search.grouping.distributed.command;
 
 import java.io.IOException;
+import java.lang.reflect.Array;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -116,8 +117,7 @@ public class TopGroupsFieldCommand implements 
Command<TopGroups<BytesRef>> {
   private final int maxDocPerGroup;
   private final boolean needScores;
   private final boolean needMaxScore;
-  @SuppressWarnings({"rawtypes"})
-  private TopGroupsCollector secondPassCollector;
+  private TopGroupsCollector<?> secondPassCollector;
   private TopGroups<BytesRef> topGroups;
 
   private TopGroupsFieldCommand(Query query,
@@ -162,18 +162,20 @@ public class TopGroupsFieldCommand implements 
Command<TopGroups<BytesRef>> {
   }
 
   @Override
-  @SuppressWarnings({"unchecked", "rawtypes"})
+  @SuppressWarnings("unchecked")
   public void postCollect(IndexSearcher searcher) throws IOException {
     if (firstPhaseGroups.isEmpty()) {
-      topGroups = new TopGroups<>(groupSort.getSort(), 
withinGroupSort.getSort(), 0, 0, new GroupDocs[0], Float.NaN);
+      GroupDocs<BytesRef>[] groups = (GroupDocs<BytesRef>[]) 
Array.newInstance(GroupDocs.class, 0);
+      topGroups = new TopGroups<>(groupSort.getSort(), 
withinGroupSort.getSort(), 0, 0, groups, Float.NaN);
       return;
     }
 
     FieldType fieldType = field.getType();
+    TopGroups<?> tg = secondPassCollector.getTopGroups(0);
     if (fieldType.getNumberType() != null) {
-      topGroups = GroupConverter.fromMutable(field, 
secondPassCollector.getTopGroups(0));
+      topGroups = GroupConverter.fromMutable(field, (TopGroups<MutableValue>) 
tg);
     } else {
-      topGroups = secondPassCollector.getTopGroups(0);
+      topGroups = (TopGroups<BytesRef>) tg;
     }
     if (needScores) {
       for (GroupDocs<?> group : topGroups.groups) {
diff --git 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/SearchGroupShardResponseProcessor.java
 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/SearchGroupShardResponseProcessor.java
index 9494263..e94fb4b 100644
--- 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/SearchGroupShardResponseProcessor.java
+++ 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/SearchGroupShardResponseProcessor.java
@@ -48,7 +48,7 @@ import 
org.apache.solr.search.grouping.distributed.shardresultserializer.SearchG
 public class SearchGroupShardResponseProcessor implements 
ShardResponseProcessor {
 
   @Override
-  @SuppressWarnings({"unchecked"})
+  @SuppressWarnings("unchecked")
   public void process(ResponseBuilder rb, ShardRequest shardRequest) {
     SortSpec groupSortSpec = rb.getGroupingSpec().getGroupSortSpec();
     Sort groupSort = rb.getGroupingSpec().getGroupSortSpec().getSort();
diff --git 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java
 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java
index 03d8bc0..d17f41a 100644
--- 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java
+++ 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java
@@ -18,6 +18,7 @@ package 
org.apache.solr.search.grouping.distributed.responseprocessor;
 
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.lang.reflect.Array;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -156,12 +157,11 @@ public class TopGroupsShardResponseProcessor implements 
ShardResponseProcessor {
         continue;
       }
 
-      @SuppressWarnings({"rawtypes"})
-      TopGroups<BytesRef>[] topGroupsArr = new TopGroups[topGroups.size()];
+      TopGroups<BytesRef>[] topGroupsArr = (TopGroups<BytesRef>[]) 
Array.newInstance(TopGroups.class, topGroups.size());
       int docsPerGroup = docsPerGroupDefault;
       if (docsPerGroup < 0) {
         docsPerGroup = 0;
-        for (@SuppressWarnings({"rawtypes"})TopGroups subTopGroups : 
topGroups) {
+        for (TopGroups<?> subTopGroups : topGroups) {
           docsPerGroup += subTopGroups.totalGroupedHitCount;
         }
       }
diff --git 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java
 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java
index 960f3f7..de1c390 100644
--- 
a/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java
+++ 
b/solr/core/src/java/org/apache/solr/search/grouping/distributed/shardresultserializer/SearchGroupsResultTransformer.java
@@ -71,9 +71,8 @@ public class SearchGroupsResultTransformer implements 
ShardResultTransformer<Lis
     return result;
   }
 
-  @SuppressWarnings({"rawtypes"})
   private SearchGroup<BytesRef> deserializeOneSearchGroup(SchemaField 
groupField, String groupValue,
-      SortField[] groupSortField, List<Comparable> rawSearchGroupData) {
+      SortField[] groupSortField, List<Comparable<?>> rawSearchGroupData) {
     SearchGroup<BytesRef> searchGroup = new SearchGroup<>();
     searchGroup.groupValue = null;
     if (groupValue != null) {
@@ -85,7 +84,8 @@ public class SearchGroupsResultTransformer implements 
ShardResultTransformer<Lis
         searchGroup.groupValue = new BytesRef(groupValue);
       }
     }
-    searchGroup.sortValues = rawSearchGroupData.toArray(new 
Comparable[rawSearchGroupData.size()]);
+    Comparable<?>[] sv = new Comparable<?>[rawSearchGroupData.size()];
+    searchGroup.sortValues = rawSearchGroupData.toArray(sv);
     for (int i = 0; i < searchGroup.sortValues.length; i++) {
       SchemaField field = groupSortField[i].getField() != null ? 
searcher.getSchema().getFieldOrNull(groupSortField[i].getField()) : null;
       searchGroup.sortValues[i] = 
ShardResultTransformerUtils.unmarshalSortValue(searchGroup.sortValues[i], 
field);
@@ -94,18 +94,17 @@ public class SearchGroupsResultTransformer implements 
ShardResultTransformer<Lis
   }
 
   @Override
-  @SuppressWarnings({"rawtypes"})
   public Map<String, SearchGroupsFieldCommandResult> 
transformToNative(NamedList<NamedList<?>> shardResponse, Sort groupSort, Sort 
withinGroupSort, String shard) {
     final Map<String, SearchGroupsFieldCommandResult> result = new 
HashMap<>(shardResponse.size());
     for (Map.Entry<String, NamedList<?>> command : shardResponse) {
       List<SearchGroup<BytesRef>> searchGroups = new ArrayList<>();
       NamedList<?> topGroupsAndGroupCount = command.getValue();
-      @SuppressWarnings({"unchecked"})
-      final NamedList<List<Comparable>> rawSearchGroups = 
(NamedList<List<Comparable>>) topGroupsAndGroupCount.get(TOP_GROUPS);
+      @SuppressWarnings("unchecked")
+      final NamedList<List<Comparable<?>>> rawSearchGroups = 
(NamedList<List<Comparable<?>>>) topGroupsAndGroupCount.get(TOP_GROUPS);
       if (rawSearchGroups != null) {
         final SchemaField groupField = 
searcher.getSchema().getFieldOrNull(command.getKey());
         final SortField[] groupSortField = groupSort.getSort();
-        for (Map.Entry<String, List<Comparable>> rawSearchGroup : 
rawSearchGroups){
+        for (Map.Entry<String, List<Comparable<?>>> rawSearchGroup : 
rawSearchGroups){
           SearchGroup<BytesRef> searchGroup = deserializeOneSearchGroup(
               groupField, rawSearchGroup.getKey(),
               groupSortField, rawSearchGroup.getValue());

Reply via email to