浏览代码

Fix compiler warnings in :server - part 2 (#75792)

Part of #40366. Fix a number of javac issues when linting is enforced in `server/`.
Rory Hunter 4 年之前
父节点
当前提交
4bfead03a4
共有 73 个文件被更改,包括 227 次插入143 次删除
  1. 28 0
      libs/core/src/main/java/org/elasticsearch/core/Types.java
  2. 2 1
      server/src/main/java/org/elasticsearch/action/admin/indices/validate/query/TransportValidateQueryAction.java
  3. 5 4
      server/src/main/java/org/elasticsearch/action/bulk/BulkPrimaryExecutionContext.java
  4. 3 3
      server/src/main/java/org/elasticsearch/action/bulk/TransportSingleItemBulkWriteAction.java
  5. 1 0
      server/src/main/java/org/elasticsearch/action/ingest/IngestActionForwarder.java
  6. 4 4
      server/src/main/java/org/elasticsearch/action/support/broadcast/TransportBroadcastAction.java
  7. 2 1
      server/src/main/java/org/elasticsearch/action/support/tasks/TransportTasksAction.java
  8. 4 0
      server/src/main/java/org/elasticsearch/common/collect/Iterators.java
  9. 7 7
      server/src/main/java/org/elasticsearch/common/geo/builders/GeometryCollectionBuilder.java
  10. 4 4
      server/src/main/java/org/elasticsearch/common/geo/parsers/GeoJsonParser.java
  11. 6 6
      server/src/main/java/org/elasticsearch/common/geo/parsers/GeoWKTParser.java
  12. 5 5
      server/src/main/java/org/elasticsearch/common/geo/parsers/ShapeParser.java
  13. 1 1
      server/src/main/java/org/elasticsearch/common/inject/ConstantFactory.java
  14. 3 2
      server/src/main/java/org/elasticsearch/common/inject/InheritingState.java
  15. 1 1
      server/src/main/java/org/elasticsearch/common/inject/InjectionRequestProcessor.java
  16. 8 7
      server/src/main/java/org/elasticsearch/common/inject/InjectorImpl.java
  17. 1 1
      server/src/main/java/org/elasticsearch/common/inject/ProviderToInternalFactoryAdapter.java
  18. 1 1
      server/src/main/java/org/elasticsearch/common/inject/assistedinject/FactoryProvider.java
  19. 1 1
      server/src/main/java/org/elasticsearch/common/inject/internal/ConstructionContext.java
  20. 3 3
      server/src/main/java/org/elasticsearch/common/inject/internal/InternalContext.java
  21. 1 1
      server/src/main/java/org/elasticsearch/common/inject/internal/StackTraceElements.java
  22. 1 1
      server/src/main/java/org/elasticsearch/common/inject/internal/ToStringBuilder.java
  23. 10 10
      server/src/main/java/org/elasticsearch/common/inject/matcher/Matchers.java
  24. 2 1
      server/src/main/java/org/elasticsearch/common/logging/ESLogMessage.java
  25. 1 1
      server/src/main/java/org/elasticsearch/common/lucene/search/function/WeightFactorFunction.java
  26. 1 0
      server/src/main/java/org/elasticsearch/common/util/ArrayUtils.java
  27. 1 0
      server/src/main/java/org/elasticsearch/common/util/Maps.java
  28. 1 1
      server/src/main/java/org/elasticsearch/common/util/concurrent/EsAbortPolicy.java
  29. 2 2
      server/src/main/java/org/elasticsearch/common/util/concurrent/PrioritizedCallable.java
  30. 1 1
      server/src/main/java/org/elasticsearch/common/util/concurrent/SizeBlockingQueue.java
  31. 1 0
      server/src/main/java/org/elasticsearch/index/mapper/AbstractGeometryFieldMapper.java
  32. 1 5
      server/src/main/java/org/elasticsearch/node/Node.java
  33. 1 1
      server/src/main/java/org/elasticsearch/search/SearchModule.java
  34. 5 3
      server/src/main/java/org/elasticsearch/search/aggregations/ParsedMultiBucketAggregation.java
  35. 4 4
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/BinaryValuesSource.java
  36. 3 2
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeAggregationBuilder.java
  37. 1 1
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeAggregator.java
  38. 1 0
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeKey.java
  39. 9 7
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeValuesCollectorQueue.java
  40. 1 0
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeValuesSourceBuilder.java
  41. 4 2
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/DateHistogramValuesSourceBuilder.java
  42. 4 4
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/DoubleValuesSource.java
  43. 1 1
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/GeoTileGridValuesSourceBuilder.java
  44. 1 1
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/GeoTileValuesSource.java
  45. 5 4
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/InternalComposite.java
  46. 4 4
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/LongValuesSource.java
  47. 3 2
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/OrdinalValuesSource.java
  48. 2 2
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/PointsSortedDocsProducer.java
  49. 3 3
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/SingleDimensionValuesSource.java
  50. 1 1
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/SortedDocsProducer.java
  51. 8 3
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/InternalGeoHashGrid.java
  52. 8 3
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/InternalGeoTileGrid.java
  53. 2 2
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/ParsedGeoGrid.java
  54. 1 1
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/DateHistogramAggregationBuilder.java
  55. 1 1
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/DateIntervalWrapper.java
  56. 1 1
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/InternalAutoDateHistogram.java
  57. 1 1
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/InternalVariableWidthHistogram.java
  58. 3 0
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/AbstractRangeBuilder.java
  59. 1 1
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/GeoDistanceAggregatorSupplier.java
  60. 5 1
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/InternalRange.java
  61. 9 1
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregator.java
  62. 1 1
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/InternalMappedSignificantTerms.java
  63. 2 2
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/InternalRareTerms.java
  64. 2 2
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/ParsedRareTerms.java
  65. 7 5
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/ParsedSignificantTerms.java
  66. 1 1
      server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/ParsedTerms.java
  67. 1 0
      server/src/main/java/org/elasticsearch/search/aggregations/pipeline/BucketScriptPipelineAggregator.java
  68. 1 0
      server/src/main/java/org/elasticsearch/search/aggregations/pipeline/BucketSortPipelineAggregationBuilder.java
  69. 2 0
      server/src/main/java/org/elasticsearch/search/aggregations/pipeline/BucketSortPipelineAggregator.java
  70. 1 0
      server/src/main/java/org/elasticsearch/search/aggregations/pipeline/CumulativeSumPipelineAggregator.java
  71. 1 0
      server/src/main/java/org/elasticsearch/search/aggregations/pipeline/DerivativePipelineAggregator.java
  72. 1 0
      server/src/main/java/org/elasticsearch/search/aggregations/pipeline/MovFnPipelineAggregator.java
  73. 1 0
      server/src/main/java/org/elasticsearch/search/aggregations/pipeline/SerialDiffPipelineAggregator.java

+ 28 - 0
libs/core/src/main/java/org/elasticsearch/core/Types.java

@@ -0,0 +1,28 @@
+/*
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
+ * or more contributor license agreements. Licensed under the Elastic License
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
+ * Side Public License, v 1.
+ */
+
+package org.elasticsearch.core;
+
+/**
+ * Contains utilities for working with Java types.
+ */
+public abstract class Types {
+
+    /**
+     * There are some situations where we cannot appease javac's type checking, and we
+     * need to forcibly cast an object's type. Please don't use this method unless you
+     * have no choice.
+     * @param argument the object to cast
+     * @param <T> the inferred type to which to cast the argument
+     * @return a cast version of the argument
+     */
+    @SuppressWarnings("unchecked")
+    public static <T> T forciblyCast(Object argument) {
+        return (T) argument;
+    }
+}

+ 2 - 1
server/src/main/java/org/elasticsearch/action/admin/indices/validate/query/TransportValidateQueryAction.java

@@ -20,6 +20,7 @@ import org.elasticsearch.cluster.block.ClusterBlockException;
 import org.elasticsearch.cluster.block.ClusterBlockLevel;
 import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
 import org.elasticsearch.cluster.routing.GroupShardsIterator;
+import org.elasticsearch.cluster.routing.ShardIterator;
 import org.elasticsearch.cluster.routing.ShardRouting;
 import org.elasticsearch.cluster.service.ClusterService;
 import org.elasticsearch.common.ParsingException;
@@ -118,7 +119,7 @@ public class TransportValidateQueryAction extends TransportBroadcastAction<
     }
 
     @Override
-    protected GroupShardsIterator shards(ClusterState clusterState, ValidateQueryRequest request, String[] concreteIndices) {
+    protected GroupShardsIterator<ShardIterator> shards(ClusterState clusterState, ValidateQueryRequest request, String[] concreteIndices) {
         final String routing;
         if (request.allShards()) {
             routing = null;

+ 5 - 4
server/src/main/java/org/elasticsearch/action/bulk/BulkPrimaryExecutionContext.java

@@ -61,7 +61,7 @@ class BulkPrimaryExecutionContext {
     private int currentIndex = -1;
 
     private ItemProcessingState currentItemState;
-    private DocWriteRequest requestToExecute;
+    private DocWriteRequest<?> requestToExecute;
     private BulkItemResponse executionResult;
     private int retryCounter;
 
@@ -182,7 +182,7 @@ class BulkPrimaryExecutionContext {
      * sets the request that should actually be executed on the primary. This can be different then the request
      * received from the user (specifically, an update request is translated to an indexing or delete request).
      */
-    public void setRequestToExecute(DocWriteRequest writeRequest) {
+    public void setRequestToExecute(DocWriteRequest<?> writeRequest) {
         assert assertInvariants(ItemProcessingState.INITIAL);
         requestToExecute = writeRequest;
         currentItemState = ItemProcessingState.TRANSLATED;
@@ -190,6 +190,7 @@ class BulkPrimaryExecutionContext {
     }
 
     /** returns the request that should be executed on the shard. */
+    @SuppressWarnings("unchecked")
     public <T extends DocWriteRequest<T>> T getRequestToExecute() {
         assert assertInvariants(ItemProcessingState.TRANSLATED);
         return (T) requestToExecute;
@@ -224,7 +225,7 @@ class BulkPrimaryExecutionContext {
     public void failOnMappingUpdate(Exception cause) {
         assert assertInvariants(ItemProcessingState.WAIT_FOR_MAPPING_UPDATE);
         currentItemState = ItemProcessingState.EXECUTED;
-        final DocWriteRequest docWriteRequest = getCurrentItem().request();
+        final DocWriteRequest<?> docWriteRequest = getCurrentItem().request();
         executionResult = new BulkItemResponse(getCurrentItem().id(), docWriteRequest.opType(),
             // Make sure to use getCurrentItem().index() here, if you use docWriteRequest.index() it will use the
             // concrete index instead of an alias if used!
@@ -236,7 +237,7 @@ class BulkPrimaryExecutionContext {
     public void markOperationAsExecuted(Engine.Result result) {
         assertInvariants(ItemProcessingState.TRANSLATED);
         final BulkItemRequest current = getCurrentItem();
-        DocWriteRequest docWriteRequest = getRequestToExecute();
+        DocWriteRequest<?> docWriteRequest = getRequestToExecute();
         switch (result.getResultType()) {
             case SUCCESS:
                 final DocWriteResponse response;

+ 3 - 3
server/src/main/java/org/elasticsearch/action/bulk/TransportSingleItemBulkWriteAction.java

@@ -10,7 +10,6 @@ package org.elasticsearch.action.bulk;
 
 import org.elasticsearch.action.ActionListener;
 import org.elasticsearch.action.DocWriteRequest;
-import org.elasticsearch.action.DocWriteResponse;
 import org.elasticsearch.action.support.ActionFilters;
 import org.elasticsearch.action.support.HandledTransportAction;
 import org.elasticsearch.action.support.WriteRequest;
@@ -47,8 +46,9 @@ public abstract class TransportSingleItemBulkWriteAction<
             assert bulkItemResponses.getItems().length == 1 : "expected only one item in bulk request";
             BulkItemResponse bulkItemResponse = bulkItemResponses.getItems()[0];
             if (bulkItemResponse.isFailed() == false) {
-                final DocWriteResponse response = bulkItemResponse.getResponse();
-                listener.onResponse((Response) response);
+                @SuppressWarnings("unchecked")
+                final Response response = (Response) bulkItemResponse.getResponse();
+                listener.onResponse(response);
             } else {
                 listener.onFailure(bulkItemResponse.getFailure().getCause());
             }

+ 1 - 0
server/src/main/java/org/elasticsearch/action/ingest/IngestActionForwarder.java

@@ -36,6 +36,7 @@ public final class IngestActionForwarder implements ClusterStateApplier {
         ingestNodes = new DiscoveryNode[0];
     }
 
+    @SuppressWarnings({"rawtypes", "unchecked"})
     public void forwardIngestRequest(ActionType<?> action, ActionRequest request, ActionListener<?> listener) {
         transportService.sendRequest(randomIngestNode(), action.name(), request,
             new ActionListenerResponseHandler(listener, action.getResponseReader()));

+ 4 - 4
server/src/main/java/org/elasticsearch/action/support/broadcast/TransportBroadcastAction.java

@@ -100,7 +100,8 @@ public abstract class TransportBroadcastAction<
         final GroupShardsIterator<ShardIterator> shardsIts;
         final int expectedOps;
         final AtomicInteger counterOps = new AtomicInteger();
-        protected final AtomicReferenceArray shardsResponses;
+        // ShardResponse or Exception
+        protected final AtomicReferenceArray<Object> shardsResponses;
 
         protected AsyncBroadcastAction(Task task, Request request, ActionListener<Response> listener) {
             this.task = task;
@@ -132,7 +133,7 @@ public abstract class TransportBroadcastAction<
             if (shardsIts.size() == 0) {
                 // no shards
                 try {
-                    listener.onResponse(newResponse(request, new AtomicReferenceArray(0), clusterState));
+                    listener.onResponse(newResponse(request, new AtomicReferenceArray<ShardResponse>(0), clusterState));
                 } catch (Exception e) {
                     listener.onFailure(e);
                 }
@@ -189,7 +190,6 @@ public abstract class TransportBroadcastAction<
             }
         }
 
-        @SuppressWarnings({"unchecked"})
         protected void onOperation(ShardRouting shard, int shardIndex, ShardResponse response) {
             logger.trace("received response for {}", shard);
             shardsResponses.set(shardIndex, response);
@@ -228,7 +228,7 @@ public abstract class TransportBroadcastAction<
             }
         }
 
-        protected AtomicReferenceArray shardsResponses() {
+        protected AtomicReferenceArray<Object> shardsResponses() {
             return shardsResponses;
         }
 

+ 2 - 1
server/src/main/java/org/elasticsearch/action/support/tasks/TransportTasksAction.java

@@ -147,6 +147,7 @@ public abstract class TransportTasksAction<
         }
     }
 
+    @SuppressWarnings("unchecked")
     protected void processTasks(TasksRequest request, Consumer<OperationTask> operation) {
         if (request.getTaskId().isSet()) {
             // we are only checking one task, we can optimize it
@@ -173,7 +174,7 @@ public abstract class TransportTasksAction<
         taskOperationFailures, List<FailedNodeException> failedNodeExceptions);
 
     @SuppressWarnings("unchecked")
-    protected TasksResponse newResponse(TasksRequest request, AtomicReferenceArray responses) {
+    protected TasksResponse newResponse(TasksRequest request, AtomicReferenceArray<?> responses) {
         List<TaskResponse> tasks = new ArrayList<>();
         List<FailedNodeException> failedNodeExceptions = new ArrayList<>();
         List<TaskOperationFailure> taskOperationFailures = new ArrayList<>();

+ 4 - 0
server/src/main/java/org/elasticsearch/common/collect/Iterators.java

@@ -36,6 +36,8 @@ public class Iterators {
         };
     }
 
+    @SafeVarargs
+    @SuppressWarnings("varargs")
     public static <T> Iterator<T> concat(Iterator<? extends T>... iterators) {
         if (iterators == null) {
             throw new NullPointerException("iterators");
@@ -49,6 +51,8 @@ public class Iterators {
         private final Iterator<? extends T>[] iterators;
         private int index = 0;
 
+        @SafeVarargs
+        @SuppressWarnings("varargs")
         ConcatenatedIterator(Iterator<? extends T>... iterators) {
             if (iterators == null) {
                 throw new NullPointerException("iterators");

+ 7 - 7
server/src/main/java/org/elasticsearch/common/geo/builders/GeometryCollectionBuilder.java

@@ -33,7 +33,7 @@ public class GeometryCollectionBuilder extends ShapeBuilder<Shape,
     /**
      * List of shapes. Package scope for testing.
      */
-    final List<ShapeBuilder> shapes = new ArrayList<>();
+    final List<ShapeBuilder<?, ?, ?>> shapes = new ArrayList<>();
 
     /**
      * Build and empty GeometryCollectionBuilder.
@@ -54,12 +54,12 @@ public class GeometryCollectionBuilder extends ShapeBuilder<Shape,
     @Override
     public void writeTo(StreamOutput out) throws IOException {
         out.writeVInt(shapes.size());
-        for (ShapeBuilder shape : shapes) {
+        for (ShapeBuilder<?, ?, ?> shape : shapes) {
             out.writeNamedWriteable(shape);
         }
     }
 
-    public GeometryCollectionBuilder shape(ShapeBuilder shape) {
+    public GeometryCollectionBuilder shape(ShapeBuilder<?, ?, ?> shape) {
         this.shapes.add(shape);
         return this;
     }
@@ -104,7 +104,7 @@ public class GeometryCollectionBuilder extends ShapeBuilder<Shape,
         return this;
     }
 
-    public ShapeBuilder getShapeAt(int i) {
+    public ShapeBuilder<?, ?, ?> getShapeAt(int i) {
         if (i >= this.shapes.size() || i < 0) {
             throw new ElasticsearchException("GeometryCollection contains " + this.shapes.size() + " shapes. + " +
                     "No shape found at index " + i);
@@ -121,7 +121,7 @@ public class GeometryCollectionBuilder extends ShapeBuilder<Shape,
         builder.startObject();
         builder.field(ShapeParser.FIELD_TYPE.getPreferredName(), TYPE.shapeName());
         builder.startArray(ShapeParser.FIELD_GEOMETRIES.getPreferredName());
-        for (ShapeBuilder shape : shapes) {
+        for (ShapeBuilder<?, ?, ?> shape : shapes) {
             shape.toXContent(builder, params);
         }
         builder.endArray();
@@ -164,7 +164,7 @@ public class GeometryCollectionBuilder extends ShapeBuilder<Shape,
 
         List<Shape> shapes = new ArrayList<>(this.shapes.size());
 
-        for (ShapeBuilder shape : this.shapes) {
+        for (ShapeBuilder<?, ?, ?> shape : this.shapes) {
             shapes.add(shape.buildS4J());
         }
 
@@ -182,7 +182,7 @@ public class GeometryCollectionBuilder extends ShapeBuilder<Shape,
         }
         List<Geometry> shapes = new ArrayList<>(this.shapes.size());
 
-        for (ShapeBuilder shape : this.shapes) {
+        for (ShapeBuilder<?, ?, ?> shape : this.shapes) {
             shapes.add(shape.buildGeometry());
         }
 

+ 4 - 4
server/src/main/java/org/elasticsearch/common/geo/parsers/GeoJsonParser.java

@@ -30,7 +30,7 @@ import java.util.List;
  * complies with geojson specification: https://tools.ietf.org/html/rfc7946
  */
 abstract class GeoJsonParser {
-    protected static ShapeBuilder parse(XContentParser parser, AbstractShapeGeometryFieldMapper shapeMapper)
+    protected static ShapeBuilder<?, ?, ?> parse(XContentParser parser, AbstractShapeGeometryFieldMapper<?> shapeMapper)
         throws IOException {
         GeoShapeType shapeType = null;
         DistanceUnit.Distance radius = null;
@@ -80,7 +80,7 @@ abstract class GeoJsonParser {
                     } else if (CircleBuilder.FIELD_RADIUS.match(fieldName, subParser.getDeprecationHandler())) {
                         if (shapeType == null) {
                             shapeType = GeoShapeType.CIRCLE;
-                        } else if (shapeType != null && shapeType.equals(GeoShapeType.CIRCLE) == false) {
+                        } else if (shapeType.equals(GeoShapeType.CIRCLE) == false) {
                             malformedException = "cannot have [" + CircleBuilder.FIELD_RADIUS + "] with type set to ["
                                 + shapeType + "]";
                         }
@@ -192,7 +192,7 @@ abstract class GeoJsonParser {
      * @return Geometry[] geometries of the GeometryCollection
      * @throws IOException Thrown if an error occurs while reading from the XContentParser
      */
-    static GeometryCollectionBuilder parseGeometries(XContentParser parser, AbstractShapeGeometryFieldMapper mapper) throws
+    static GeometryCollectionBuilder parseGeometries(XContentParser parser, AbstractShapeGeometryFieldMapper<?> mapper) throws
         IOException {
         if (parser.currentToken() != XContentParser.Token.START_ARRAY) {
             throw new ElasticsearchParseException("geometries must be an array of geojson objects");
@@ -201,7 +201,7 @@ abstract class GeoJsonParser {
         XContentParser.Token token = parser.nextToken();
         GeometryCollectionBuilder geometryCollection = new GeometryCollectionBuilder();
         while (token != XContentParser.Token.END_ARRAY) {
-            ShapeBuilder shapeBuilder = ShapeParser.parse(parser);
+            ShapeBuilder<?, ?, ?> shapeBuilder = ShapeParser.parse(parser);
             geometryCollection.shape(shapeBuilder);
             token = parser.nextToken();
         }

+ 6 - 6
server/src/main/java/org/elasticsearch/common/geo/parsers/GeoWKTParser.java

@@ -52,19 +52,19 @@ public class GeoWKTParser {
     // no instance
     private GeoWKTParser() {}
 
-    public static ShapeBuilder parse(XContentParser parser, final AbstractShapeGeometryFieldMapper shapeMapper)
+    public static ShapeBuilder<?, ?, ?> parse(XContentParser parser, final AbstractShapeGeometryFieldMapper<?> shapeMapper)
             throws IOException, ElasticsearchParseException {
         return parseExpectedType(parser, null, shapeMapper);
     }
 
-    public static ShapeBuilder parseExpectedType(XContentParser parser, final GeoShapeType shapeType)
+    public static ShapeBuilder<?, ?, ?> parseExpectedType(XContentParser parser, final GeoShapeType shapeType)
             throws IOException, ElasticsearchParseException {
         return parseExpectedType(parser, shapeType, null);
     }
 
     /** throws an exception if the parsed geometry type does not match the expected shape type */
-    public static ShapeBuilder parseExpectedType(XContentParser parser, final GeoShapeType shapeType,
-                                                 final AbstractShapeGeometryFieldMapper shapeMapper)
+    public static ShapeBuilder<?, ?, ?> parseExpectedType(XContentParser parser, final GeoShapeType shapeType,
+                                                 final AbstractShapeGeometryFieldMapper<?> shapeMapper)
             throws IOException, ElasticsearchParseException {
         try (StringReader reader = new StringReader(parser.text())) {
             boolean coerce = shapeMapper != null && shapeMapper.coerce();
@@ -81,14 +81,14 @@ public class GeoWKTParser {
             tokenizer.wordChars('.', '.');
             tokenizer.whitespaceChars(0, ' ');
             tokenizer.commentChar('#');
-            ShapeBuilder builder = parseGeometry(tokenizer, shapeType, ignoreZValue, coerce);
+            ShapeBuilder<?, ?, ?> builder = parseGeometry(tokenizer, shapeType, ignoreZValue, coerce);
             checkEOF(tokenizer);
             return builder;
         }
     }
 
     /** parse geometry from the stream tokenizer */
-    private static ShapeBuilder parseGeometry(StreamTokenizer stream, GeoShapeType shapeType, final boolean ignoreZValue,
+    private static ShapeBuilder<?, ?, ?> parseGeometry(StreamTokenizer stream, GeoShapeType shapeType, final boolean ignoreZValue,
                                               final boolean coerce)
             throws IOException, ElasticsearchParseException {
         final GeoShapeType type = GeoShapeType.forName(nextWord(stream));

+ 5 - 5
server/src/main/java/org/elasticsearch/common/geo/parsers/ShapeParser.java

@@ -40,13 +40,13 @@ public interface ShapeParser {
      *          if the parsers current token has been <code>null</code>
      * @throws IOException if the input could not be read
      */
-    static ShapeBuilder parse(XContentParser parser, AbstractGeometryFieldMapper geometryMapper) throws IOException {
-        AbstractShapeGeometryFieldMapper shapeMapper = null;
+    static ShapeBuilder<?, ?, ?> parse(XContentParser parser, AbstractGeometryFieldMapper<?> geometryMapper) throws IOException {
+        AbstractShapeGeometryFieldMapper<?> shapeMapper = null;
         if (geometryMapper != null) {
             if (geometryMapper instanceof AbstractShapeGeometryFieldMapper == false) {
                 throw new IllegalArgumentException("geometry must be a shape type");
             }
-             shapeMapper = (AbstractShapeGeometryFieldMapper) geometryMapper;
+             shapeMapper = (AbstractShapeGeometryFieldMapper<?>) geometryMapper;
         }
         if (parser.currentToken() == XContentParser.Token.VALUE_NULL) {
             return null;
@@ -65,11 +65,11 @@ public interface ShapeParser {
      *          if the parsers current token has been <code>null</code>
      * @throws IOException if the input could not be read
      */
-    static ShapeBuilder parse(XContentParser parser) throws IOException {
+    static ShapeBuilder<?, ?, ?> parse(XContentParser parser) throws IOException {
         return parse(parser, null);
     }
 
-    static ShapeBuilder parse(Object value) throws IOException {
+    static ShapeBuilder<?, ?, ?> parse(Object value) throws IOException {
         try (XContentParser parser = new MapXContentParser(NamedXContentRegistry.EMPTY, LoggingDeprecationHandler.INSTANCE,
                 Collections.singletonMap("value", value), null)) {
             parser.nextToken(); // start object

+ 1 - 1
server/src/main/java/org/elasticsearch/common/inject/ConstantFactory.java

@@ -35,7 +35,7 @@ class ConstantFactory<T> implements InternalFactory<T> {
     }
 
     @Override
-    public T get(Errors errors, InternalContext context, Dependency dependency)
+    public T get(Errors errors, InternalContext context, Dependency<?> dependency)
             throws ErrorsException {
         return initializable.get(errors);
     }

+ 3 - 2
server/src/main/java/org/elasticsearch/common/inject/InheritingState.java

@@ -152,10 +152,11 @@ class InheritingState implements State {
     public void makeAllBindingsToEagerSingletons(Injector injector) {
         Map<Key<?>, Binding<?>> x = new LinkedHashMap<>();
         for (Map.Entry<Key<?>, Binding<?>> entry : this.explicitBindingsMutable.entrySet()) {
-            Key key = entry.getKey();
+            @SuppressWarnings("unchecked")
+            Key<Object> key = (Key<Object>) entry.getKey();
             BindingImpl<?> binding = (BindingImpl<?>) entry.getValue();
             Object value = binding.getProvider().get();
-            x.put(key, new InstanceBindingImpl<Object>(injector, key, SourceProvider.UNKNOWN_SOURCE, new InternalFactory.Instance(value),
+            x.put(key, new InstanceBindingImpl<>(injector, key, SourceProvider.UNKNOWN_SOURCE, new InternalFactory.Instance<>(value),
                     emptySet(), value));
         }
         this.explicitBindingsMutable.clear();

+ 1 - 1
server/src/main/java/org/elasticsearch/common/inject/InjectionRequestProcessor.java

@@ -51,7 +51,7 @@ class InjectionRequestProcessor extends AbstractProcessor {
     }
 
     @Override
-    public Boolean visit(InjectionRequest request) {
+    public Boolean visit(InjectionRequest<?> request) {
         Set<InjectionPoint> injectionPoints;
         try {
             injectionPoints = request.getInjectionPoints();

+ 8 - 7
server/src/main/java/org/elasticsearch/common/inject/InjectorImpl.java

@@ -206,7 +206,7 @@ class InjectorImpl implements Injector, Lookups {
             final Provider<T> provider = providedBinding.getProvider();
             return new InternalFactory<Provider<T>>() {
                 @Override
-                public Provider<T> get(Errors errors, InternalContext context, Dependency dependency) {
+                public Provider<T> get(Errors errors, InternalContext context, Dependency<?> dependency) {
                     return provider;
                 }
             };
@@ -473,7 +473,7 @@ class InjectorImpl implements Injector, Lookups {
 
         InternalFactory<T> internalFactory = new InternalFactory<T>() {
             @Override
-            public T get(Errors errors, InternalContext context, Dependency dependency)
+            public T get(Errors errors, InternalContext context, Dependency<?> dependency)
                     throws ErrorsException {
                 errors = errors.withSource(providerKey);
                 Provider<?> provider = providerBinding.getInternalFactory().get(
@@ -585,7 +585,7 @@ class InjectorImpl implements Injector, Lookups {
             // These casts are safe. We know T extends Provider<X> and that given Key<Provider<X>>,
             // createProviderBinding() will return BindingImpl<Provider<X>>.
             @SuppressWarnings("unchecked")
-            BindingImpl binding = createProviderBinding((Key) key, errors);
+            BindingImpl<T> binding = (BindingImpl<T>) createProviderBinding((Key<Provider<T>>) key, errors);
             return binding;
         }
 
@@ -594,7 +594,7 @@ class InjectorImpl implements Injector, Lookups {
             // These casts are safe. T extends MembersInjector<X> and that given Key<MembersInjector<X>>,
             // createMembersInjectorBinding() will return BindingImpl<MembersInjector<X>>.
             @SuppressWarnings("unchecked")
-            BindingImpl binding = createMembersInjectorBinding((Key) key, errors);
+            BindingImpl<T> binding = (BindingImpl<T>) createMembersInjectorBinding((Key<MembersInjector<T>>) key, errors);
             return binding;
         }
 
@@ -701,9 +701,9 @@ class InjectorImpl implements Injector, Lookups {
     MembersInjectorStore membersInjectorStore;
 
     @Override
-    @SuppressWarnings("unchecked") // the members injector type is consistent with instance's type
     public void injectMembers(Object instance) {
-        MembersInjector membersInjector = getMembersInjector(instance.getClass());
+        @SuppressWarnings("unchecked") // the members injector type is consistent with instance's type
+        MembersInjector<Object> membersInjector = getMembersInjector((Class<Object>) instance.getClass());
         membersInjector.injectMembers(instance);
     }
 
@@ -733,9 +733,10 @@ class InjectorImpl implements Injector, Lookups {
         if (factory instanceof InternalFactory.Instance) {
             return new Provider<T>() {
                 @Override
+                @SuppressWarnings("unchecked")
                 public T get() {
                     try {
-                        return (T) ((InternalFactory.Instance) factory).get(null, null, null);
+                        return (T) ((InternalFactory.Instance<?>) factory).get(null, null, null);
                     } catch (ErrorsException e) {
                         // ignore
                     }

+ 1 - 1
server/src/main/java/org/elasticsearch/common/inject/ProviderToInternalFactoryAdapter.java

@@ -43,7 +43,7 @@ class ProviderToInternalFactoryAdapter<T> implements Provider<T> {
             T t = injector.callInContext(new ContextualCallable<T>() {
                 @Override
                 public T call(InternalContext context) throws ErrorsException {
-                    Dependency dependency = context.getDependency();
+                    Dependency<?> dependency = context.getDependency();
                     return internalFactory.get(errors, context, dependency);
                 }
             });

+ 1 - 1
server/src/main/java/org/elasticsearch/common/inject/assistedinject/FactoryProvider.java

@@ -216,7 +216,7 @@ public class FactoryProvider<F> implements Provider<F>, HasDependencies {
         @SuppressWarnings("unchecked") // we imprecisely treat the class literal of T as a Class<T>
                 Class<F> factoryRawType = (Class) factoryType.getRawType();
         return factoryRawType.cast(Proxy.newProxyInstance(factoryRawType.getClassLoader(),
-                new Class[]{factoryRawType}, invocationHandler));
+                new Class<?>[]{factoryRawType}, invocationHandler));
     }
 
     private static ConfigurationException newConfigurationException(String format, Object... args) {

+ 1 - 1
server/src/main/java/org/elasticsearch/common/inject/internal/ConstructionContext.java

@@ -82,7 +82,7 @@ public class ConstructionContext<T> {
         ClassLoader classLoader = expectedType.getClassLoader() == null ?
             ClassLoader.getSystemClassLoader() : expectedType.getClassLoader();
         return expectedType.cast(Proxy.newProxyInstance(classLoader,
-                new Class[]{expectedType}, invocationHandler));
+                new Class<?>[]{expectedType}, invocationHandler));
     }
 
     public void setProxyDelegates(T delegate) {

+ 3 - 3
server/src/main/java/org/elasticsearch/common/inject/internal/InternalContext.java

@@ -30,7 +30,7 @@ import java.util.Map;
 public final class InternalContext {
 
     private Map<Object, ConstructionContext<?>> constructionContexts = new HashMap<>();
-    private Dependency dependency;
+    private Dependency<?> dependency;
 
     @SuppressWarnings("unchecked")
     public <T> ConstructionContext<T> getConstructionContext(Object key) {
@@ -43,11 +43,11 @@ public final class InternalContext {
         return constructionContext;
     }
 
-    public Dependency getDependency() {
+    public Dependency<?> getDependency() {
         return dependency;
     }
 
-    public void setDependency(Dependency dependency) {
+    public void setDependency(Dependency<?> dependency) {
         this.dependency = dependency;
     }
 }

+ 1 - 1
server/src/main/java/org/elasticsearch/common/inject/internal/StackTraceElements.java

@@ -31,7 +31,7 @@ public class StackTraceElements {
             return SourceProvider.UNKNOWN_SOURCE;
         }
 
-        Class declaringClass = member.getDeclaringClass();
+        Class<?> declaringClass = member.getDeclaringClass();
 
         String fileName = null;
         int lineNumber = -1;

+ 1 - 1
server/src/main/java/org/elasticsearch/common/inject/internal/ToStringBuilder.java

@@ -35,7 +35,7 @@ public class ToStringBuilder {
         this.name = name;
     }
 
-    public ToStringBuilder(Class type) {
+    public ToStringBuilder(Class<?> type) {
         this.name = type.getSimpleName();
     }
 

+ 10 - 10
server/src/main/java/org/elasticsearch/common/inject/matcher/Matchers.java

@@ -81,7 +81,7 @@ public class Matchers {
         @Override
         public boolean equals(Object other) {
             return other instanceof Not
-                    && ((Not) other).delegate.equals(delegate);
+                    && ((Not<?>) other).delegate.equals(delegate);
         }
 
         @Override
@@ -186,11 +186,11 @@ public class Matchers {
      * Returns a matcher which matches subclasses of the given type (as well as
      * the given type).
      */
-    public static Matcher<Class> subclassesOf(final Class<?> superclass) {
+    public static Matcher<Class<?>> subclassesOf(final Class<?> superclass) {
         return new SubclassesOf(superclass);
     }
 
-    private static class SubclassesOf extends AbstractMatcher<Class> {
+    private static class SubclassesOf extends AbstractMatcher<Class<?>> {
         private final Class<?> superclass;
 
         SubclassesOf(Class<?> superclass) {
@@ -198,7 +198,7 @@ public class Matchers {
         }
 
         @Override
-        public boolean matches(Class subclass) {
+        public boolean matches(Class<?> subclass) {
             return superclass.isAssignableFrom(subclass);
         }
 
@@ -295,11 +295,11 @@ public class Matchers {
      * Returns a matcher which matches classes in the given package. Packages are specific to their
      * classloader, so classes with the same package name may not have the same package at runtime.
      */
-    public static Matcher<Class> inPackage(final Package targetPackage) {
+    public static Matcher<Class<?>> inPackage(final Package targetPackage) {
         return new InPackage(targetPackage);
     }
 
-    private static class InPackage extends AbstractMatcher<Class> {
+    private static class InPackage extends AbstractMatcher<Class<?>> {
         private final transient Package targetPackage;
         private final String packageName;
 
@@ -309,7 +309,7 @@ public class Matchers {
         }
 
         @Override
-        public boolean matches(Class c) {
+        public boolean matches(Class<?> c) {
             return c.getPackage().equals(targetPackage);
         }
 
@@ -342,11 +342,11 @@ public class Matchers {
      *
      * @since 2.0
      */
-    public static Matcher<Class> inSubpackage(final String targetPackageName) {
+    public static Matcher<Class<?>> inSubpackage(final String targetPackageName) {
         return new InSubpackage(targetPackageName);
     }
 
-    private static class InSubpackage extends AbstractMatcher<Class>  {
+    private static class InSubpackage extends AbstractMatcher<Class<?>>  {
         private final String targetPackageName;
 
         InSubpackage(String targetPackageName) {
@@ -354,7 +354,7 @@ public class Matchers {
         }
 
         @Override
-        public boolean matches(Class c) {
+        public boolean matches(Class<?> c) {
             String classPackageName = c.getPackage().getName();
             return classPackageName.equals(targetPackageName)
                     || classPackageName.startsWith(targetPackageName + ".");

+ 2 - 1
server/src/main/java/org/elasticsearch/common/logging/ESLogMessage.java

@@ -77,7 +77,8 @@ public class ESLogMessage extends MapMessage<ESLogMessage, Object> {
             StringBuilders.escapeJson(sb, start);
             sb.append(Chars.DQUOTE).append(':').append(Chars.DQUOTE);
             start = sb.length();
-            sb.append((Object) getIndexedReadOnlyStringMap().getValueAt(i));
+            Object value = getIndexedReadOnlyStringMap().getValueAt(i);
+            sb.append(value);
             StringBuilders.escapeJson(sb, start);
             sb.append(Chars.DQUOTE);
         }

+ 1 - 1
server/src/main/java/org/elasticsearch/common/lucene/search/function/WeightFactorFunction.java

@@ -49,7 +49,7 @@ public class WeightFactorFunction extends ScoreFunction {
             public Explanation explainScore(int docId, Explanation subQueryScore) throws IOException {
                 Explanation functionExplanation = leafFunction.explainScore(docId, subQueryScore);
                 return Explanation.match(
-                        functionExplanation.getValue().floatValue() * (float) getWeight(), "product of:",
+                        functionExplanation.getValue().floatValue() * getWeight(), "product of:",
                         functionExplanation, explainWeight());
             }
         };

+ 1 - 0
server/src/main/java/org/elasticsearch/common/util/ArrayUtils.java

@@ -68,6 +68,7 @@ public class ArrayUtils {
      * Concatenates 2 arrays
      */
     public static <T> T[] concat(T[] one, T[] other, Class<T> clazz) {
+        @SuppressWarnings("unchecked")
         T[] target = (T[]) Array.newInstance(clazz, one.length + other.length);
         System.arraycopy(one, 0, target, 0, one.length);
         System.arraycopy(other, 0, target, one.length, other.length);

+ 1 - 0
server/src/main/java/org/elasticsearch/common/util/Maps.java

@@ -41,6 +41,7 @@ public class Maps {
         Objects.requireNonNull(value);
         assert checkIsImmutableMap(map, key, value);
         assert map.containsKey(key) == false : "expected entry [" + key + "] to not already be present in map";
+        @SuppressWarnings("rawtypes")
         final Map.Entry<K, V>[] entries = new Map.Entry[map.size() + 1];
         map.entrySet().toArray(entries);
         entries[entries.length - 1] = Map.entry(key, value);

+ 1 - 1
server/src/main/java/org/elasticsearch/common/util/concurrent/EsAbortPolicy.java

@@ -25,7 +25,7 @@ public class EsAbortPolicy implements XRejectedExecutionHandler {
                     throw new IllegalStateException("forced execution, but expected a size queue");
                 }
                 try {
-                    ((SizeBlockingQueue) queue).forcePut(r);
+                    ((SizeBlockingQueue<Runnable>) queue).forcePut(r);
                 } catch (InterruptedException e) {
                     Thread.currentThread().interrupt();
                     throw new IllegalStateException("forced execution, but got interrupted", e);

+ 2 - 2
server/src/main/java/org/elasticsearch/common/util/concurrent/PrioritizedCallable.java

@@ -11,7 +11,7 @@ import org.elasticsearch.common.Priority;
 
 import java.util.concurrent.Callable;
 
-public abstract class PrioritizedCallable<T> implements Callable<T>, Comparable<PrioritizedCallable> {
+public abstract class PrioritizedCallable<T> implements Callable<T>, Comparable<PrioritizedCallable<T>> {
 
     private final Priority priority;
 
@@ -24,7 +24,7 @@ public abstract class PrioritizedCallable<T> implements Callable<T>, Comparable<
     }
 
     @Override
-    public int compareTo(PrioritizedCallable pc) {
+    public int compareTo(PrioritizedCallable<T> pc) {
         return priority.compareTo(pc.priority);
     }
 

+ 1 - 1
server/src/main/java/org/elasticsearch/common/util/concurrent/SizeBlockingQueue.java

@@ -185,7 +185,7 @@ public class SizeBlockingQueue<E> extends AbstractQueue<E> implements BlockingQu
 
     @Override
     public <T> T[] toArray(T[] a) {
-        return (T[]) queue.toArray(a);
+        return queue.toArray(a);
     }
 
     @Override

+ 1 - 0
server/src/main/java/org/elasticsearch/index/mapper/AbstractGeometryFieldMapper.java

@@ -134,6 +134,7 @@ public abstract class AbstractGeometryFieldMapper<T> extends FieldMapper {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public AbstractGeometryFieldType<T> fieldType() {
         return (AbstractGeometryFieldType<T>) mappedFieldType;
     }

+ 1 - 5
server/src/main/java/org/elasticsearch/node/Node.java

@@ -196,6 +196,7 @@ import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 import static java.util.stream.Collectors.toList;
+import static org.elasticsearch.core.Types.forciblyCast;
 
 /**
  * A node represent a node within a cluster ({@code cluster.name}). The {@link #client()} can be used
@@ -1236,9 +1237,4 @@ public class Node implements Closeable {
             return localNode.get();
         }
     }
-
-    @SuppressWarnings("unchecked")
-    private static <T> T forciblyCast(Object argument) {
-        return (T) argument;
-    }
 }

+ 1 - 1
server/src/main/java/org/elasticsearch/search/SearchModule.java

@@ -884,7 +884,7 @@ public class SearchModule {
                 (p, c) -> spec.getParser().fromXContent(p)));
     }
 
-    private void registerBoolQuery(ParseField name, Writeable.Reader reader) {
+    private void registerBoolQuery(ParseField name, Writeable.Reader<QueryBuilder> reader) {
         namedWriteables.add(new NamedWriteableRegistry.Entry(QueryBuilder.class, name.getPreferredName(), reader));
         namedXContents.add(new NamedXContentRegistry.Entry(QueryBuilder.class, name,
             (p, c) -> BoolQueryBuilder.fromXContent(p, (Integer) c)));

+ 5 - 3
server/src/main/java/org/elasticsearch/search/aggregations/ParsedMultiBucketAggregation.java

@@ -47,9 +47,11 @@ public abstract class ParsedMultiBucketAggregation<B extends ParsedMultiBucketAg
         return builder;
     }
 
-    protected static void declareMultiBucketAggregationFields(final ObjectParser<? extends ParsedMultiBucketAggregation, Void> objectParser,
-                                                  final CheckedFunction<XContentParser, ParsedBucket, IOException> bucketParser,
-                                                  final CheckedFunction<XContentParser, ParsedBucket, IOException> keyedBucketParser) {
+    protected static <A extends ParsedMultiBucketAggregation<T>, T extends ParsedBucket> void declareMultiBucketAggregationFields(
+        final ObjectParser<A, Void> objectParser,
+        final CheckedFunction<XContentParser, T, IOException> bucketParser,
+        final CheckedFunction<XContentParser, T, IOException> keyedBucketParser
+    ) {
         declareAggregationFields(objectParser);
         objectParser.declareField((parser, aggregation, context) -> {
             XContentParser.Token token = parser.currentToken();

+ 4 - 4
server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/BinaryValuesSource.java

@@ -14,10 +14,10 @@ import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.BytesRefBuilder;
-import org.elasticsearch.core.CheckedFunction;
-import org.elasticsearch.core.Releasables;
 import org.elasticsearch.common.util.BigArrays;
 import org.elasticsearch.common.util.ObjectArray;
+import org.elasticsearch.core.CheckedFunction;
+import org.elasticsearch.core.Releasables;
 import org.elasticsearch.index.fielddata.SortedBinaryDocValues;
 import org.elasticsearch.index.mapper.MappedFieldType;
 import org.elasticsearch.index.mapper.StringFieldType;
@@ -126,7 +126,7 @@ class BinaryValuesSource extends SingleDimensionValuesSource<BytesRef> {
     }
 
     @Override
-    void setAfter(Comparable value) {
+    void setAfter(Comparable<?> value) {
         if (missingBucket && value == null) {
             afterValue = null;
         } else if (value.getClass() == String.class) {
@@ -162,7 +162,7 @@ class BinaryValuesSource extends SingleDimensionValuesSource<BytesRef> {
     }
 
     @Override
-    LeafBucketCollector getLeafCollector(Comparable value, LeafReaderContext context, LeafBucketCollector next) {
+    LeafBucketCollector getLeafCollector(Comparable<BytesRef> value, LeafReaderContext context, LeafBucketCollector next) {
         if (value.getClass() != BytesRef.class) {
             throw new IllegalArgumentException("Expected BytesRef, got " + value.getClass());
         }

+ 3 - 2
server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeAggregationBuilder.java

@@ -214,7 +214,8 @@ public class CompositeAggregationBuilder extends AbstractAggregationBuilder<Comp
                 throw new IllegalArgumentException("[after] has " + after.size() +
                     " value(s) but [sources] has " + sources.size());
             }
-            Comparable[] values = new Comparable[sources.size()];
+            @SuppressWarnings("rawtypes")
+            Comparable<?>[] values = new Comparable[sources.size()];
             for (int i = 0; i < sources.size(); i++) {
                 String sourceName = sources.get(i).name();
                 if (after.containsKey(sourceName) == false) {
@@ -224,7 +225,7 @@ public class CompositeAggregationBuilder extends AbstractAggregationBuilder<Comp
                 if (configs[i].missingBucket() && obj == null) {
                     values[i] = null;
                 } else if (obj instanceof Comparable) {
-                    values[i] = (Comparable) obj;
+                    values[i] = (Comparable<?>) obj;
                 } else {
                     throw new IllegalArgumentException("Invalid value for [after." + sources.get(i).name() +
                         "], expected comparable, got [" + (obj == null ? "null" :  obj.getClass().getSimpleName()) + "]");

+ 1 - 1
server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeAggregator.java

@@ -87,7 +87,7 @@ final class CompositeAggregator extends BucketsAggregator {
         this.sourceNames = Arrays.stream(sourceConfigs).map(CompositeValuesSourceConfig::name).collect(Collectors.toList());
         this.reverseMuls = Arrays.stream(sourceConfigs).mapToInt(CompositeValuesSourceConfig::reverseMul).toArray();
         this.formats = Arrays.stream(sourceConfigs).map(CompositeValuesSourceConfig::format).collect(Collectors.toList());
-        this.sources = new SingleDimensionValuesSource[sourceConfigs.length];
+        this.sources = new SingleDimensionValuesSource<?>[sourceConfigs.length];
         // check that the provided size is not greater than the search.max_buckets setting
         int bucketLimit = context.multiBucketConsumer().getLimit();
         if (size > bucketLimit) {

+ 1 - 0
server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeKey.java

@@ -18,6 +18,7 @@ import java.util.Arrays;
 /**
  * A key that is composed of multiple {@link Comparable} values.
  */
+@SuppressWarnings("rawtypes")
 class CompositeKey implements Writeable {
     private final Comparable[] values;
 

+ 9 - 7
server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeValuesCollectorQueue.java

@@ -18,10 +18,12 @@ import org.elasticsearch.common.util.LongArray;
 import org.elasticsearch.search.aggregations.LeafBucketCollector;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
+
+import static org.elasticsearch.core.Types.forciblyCast;
 
 /**
  * A specialized {@link PriorityQueue} implementation for composite buckets.
@@ -114,14 +116,14 @@ final class CompositeValuesCollectorQueue extends PriorityQueue<Integer> impleme
     /**
      * Returns the lowest value (exclusive) of the leading source.
      */
-    Comparable getLowerValueLeadSource() {
+    Comparable<?> getLowerValueLeadSource() {
         return afterKeyIsSet ? arrays[0].getAfter() : null;
     }
 
     /**
      * Returns the upper value (inclusive) of the leading source.
      */
-    Comparable getUpperValueLeadSource() throws IOException {
+    Comparable<?> getUpperValueLeadSource() throws IOException {
         return size() >= maxSize ? arrays[0].toComparable(top()) : null;
     }
     /**
@@ -209,7 +211,7 @@ final class CompositeValuesCollectorQueue extends PriorityQueue<Integer> impleme
      */
     CompositeKey toCompositeKey(int slot) throws IOException {
         assert slot < maxSize;
-        Comparable[] values = new Comparable[arrays.length];
+        Comparable<?>[] values = new Comparable<?>[arrays.length];
         for (int i = 0; i < values.length; i++) {
             values[i] = arrays[i].toComparable(slot);
         }
@@ -229,7 +231,7 @@ final class CompositeValuesCollectorQueue extends PriorityQueue<Integer> impleme
      * for each document.
      * The provided collector <code>in</code> is called on each composite bucket.
      */
-    LeafBucketCollector getLeafCollector(Comparable forceLeadSourceValue,
+    LeafBucketCollector getLeafCollector(Comparable<?> forceLeadSourceValue,
                                          LeafReaderContext context, LeafBucketCollector in) throws IOException {
         int last = arrays.length - 1;
         LeafBucketCollector collector = in;
@@ -242,13 +244,13 @@ final class CompositeValuesCollectorQueue extends PriorityQueue<Integer> impleme
         SingleDimensionValuesSource<?> valuesSource = arrays[last];
         requiresRehashingWhenSwitchingLeafReaders |= valuesSource.requiresRehashingWhenSwitchingLeafReaders();
         if (forceLeadSourceValue != null) {
-            collector = valuesSource.getLeafCollector(forceLeadSourceValue, context, collector);
+            collector = valuesSource.getLeafCollector(forciblyCast(forceLeadSourceValue), context, collector);
         } else {
             collector = valuesSource.getLeafCollector(context, collector);
         }
         boolean switchedLeafReaders = context.ord != leafReaderOrd;
         if (map.isEmpty() == false && requiresRehashingWhenSwitchingLeafReaders && switchedLeafReaders) {
-            List<Map.Entry<Slot, Integer>> entries = map.entrySet().stream().collect(Collectors.toList());
+            List<Map.Entry<Slot, Integer>> entries = new ArrayList<>(map.entrySet());
             map.clear();
             entries.forEach(e -> map.put(e.getKey(), e.getValue()));
         }

+ 1 - 0
server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/CompositeValuesSourceBuilder.java

@@ -238,6 +238,7 @@ public abstract class CompositeValuesSourceBuilder<AB extends CompositeValuesSou
     /**
      * Sets the format to use for the output of the aggregation.
      */
+    @SuppressWarnings("unchecked")
     public AB format(String format) {
         if (format == null) {
             throw new IllegalArgumentException("[format] must not be null: [" + name + "]");

+ 4 - 2
server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/DateHistogramValuesSourceBuilder.java

@@ -45,8 +45,10 @@ import java.util.function.LongConsumer;
  * A {@link CompositeValuesSourceBuilder} that builds a {@link RoundingValuesSource} from a {@link Script} or
  * a field name using the provided interval.
  */
-public class DateHistogramValuesSourceBuilder
-    extends CompositeValuesSourceBuilder<DateHistogramValuesSourceBuilder> implements DateIntervalConsumer {
+public class DateHistogramValuesSourceBuilder extends CompositeValuesSourceBuilder<DateHistogramValuesSourceBuilder>
+    implements
+        DateIntervalConsumer<DateHistogramValuesSourceBuilder> {
+
     @FunctionalInterface
     public interface DateHistogramCompositeSupplier {
         CompositeValuesSourceConfig apply(

+ 4 - 4
server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/DoubleValuesSource.java

@@ -11,11 +11,11 @@ package org.elasticsearch.search.aggregations.bucket.composite;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.search.Query;
-import org.elasticsearch.core.CheckedFunction;
-import org.elasticsearch.core.Releasables;
 import org.elasticsearch.common.util.BigArrays;
 import org.elasticsearch.common.util.BitArray;
 import org.elasticsearch.common.util.DoubleArray;
+import org.elasticsearch.core.CheckedFunction;
+import org.elasticsearch.core.Releasables;
 import org.elasticsearch.index.fielddata.SortedNumericDoubleValues;
 import org.elasticsearch.index.mapper.MappedFieldType;
 import org.elasticsearch.search.DocValueFormat;
@@ -115,7 +115,7 @@ class DoubleValuesSource extends SingleDimensionValuesSource<Double> {
     }
 
     @Override
-    void setAfter(Comparable value) {
+    void setAfter(Comparable<?> value) {
         if (missingBucket && value == null) {
             afterValue = null;
         } else if (value instanceof Number) {
@@ -158,7 +158,7 @@ class DoubleValuesSource extends SingleDimensionValuesSource<Double> {
     }
 
     @Override
-    LeafBucketCollector getLeafCollector(Comparable value, LeafReaderContext context, LeafBucketCollector next) {
+    LeafBucketCollector getLeafCollector(Comparable<Double> value, LeafReaderContext context, LeafBucketCollector next) {
         if (value.getClass() != Double.class) {
             throw new IllegalArgumentException("Expected Double, got " + value.getClass());
         }

+ 1 - 1
server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/GeoTileGridValuesSourceBuilder.java

@@ -51,7 +51,7 @@ public class GeoTileGridValuesSourceBuilder extends CompositeValuesSourceBuilder
     }
 
     static final String TYPE = "geotile_grid";
-    static final ValuesSourceRegistry.RegistryKey<GeoTileCompositeSuppier> REGISTRY_KEY = new ValuesSourceRegistry.RegistryKey(
+    static final ValuesSourceRegistry.RegistryKey<GeoTileCompositeSuppier> REGISTRY_KEY = new ValuesSourceRegistry.RegistryKey<>(
         TYPE,
         GeoTileCompositeSuppier.class
     );

+ 1 - 1
server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/GeoTileValuesSource.java

@@ -37,7 +37,7 @@ class GeoTileValuesSource extends LongValuesSource {
     }
 
     @Override
-    void setAfter(Comparable value) {
+    void setAfter(Comparable<?> value) {
         if (missingBucket && value == null) {
             afterValue = null;
         } else if (value instanceof Number) {

+ 5 - 4
server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/InternalComposite.java

@@ -446,10 +446,10 @@ public class InternalComposite
 
     static class ArrayMap extends AbstractMap<String, Object> implements Comparable<ArrayMap> {
         final List<String> keys;
-        final Comparable[] values;
+        final Comparable<?>[] values;
         final List<DocValueFormat> formats;
 
-        ArrayMap(List<String> keys, List<DocValueFormat> formats, Comparable[] values) {
+        ArrayMap(List<String> keys, List<DocValueFormat> formats, Comparable<?>[] values) {
             assert keys.size() == values.length && keys.size() == formats.size();
             this.keys = keys;
             this.formats = formats;
@@ -501,6 +501,7 @@ public class InternalComposite
         }
 
         @Override
+        @SuppressWarnings({"rawtypes", "unchecked"})
         public int compareTo(ArrayMap that) {
             if (that == this) {
                 return 0;
@@ -511,7 +512,7 @@ public class InternalComposite
             while (idx < max) {
                 int compare = compareNullables(keys.get(idx), that.keys.get(idx));
                 if (compare == 0) {
-                    compare = compareNullables(values[idx], that.values[idx]);
+                    compare = compareNullables((Comparable) values[idx], (Comparable) that.values[idx]);
                 }
                 if (compare != 0) {
                     return compare;
@@ -528,7 +529,7 @@ public class InternalComposite
         }
     }
 
-    private static int compareNullables(Comparable a, Comparable b) {
+    private static <T extends Comparable<T>> int compareNullables(T a, T b) {
         if (a == b) {
             return 0;
         }

+ 4 - 4
server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/LongValuesSource.java

@@ -20,11 +20,11 @@ import org.apache.lucene.search.IndexOrDocValuesQuery;
 import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.search.PointRangeQuery;
 import org.apache.lucene.search.Query;
-import org.elasticsearch.core.CheckedFunction;
-import org.elasticsearch.core.Releasables;
 import org.elasticsearch.common.util.BigArrays;
 import org.elasticsearch.common.util.BitArray;
 import org.elasticsearch.common.util.LongArray;
+import org.elasticsearch.core.CheckedFunction;
+import org.elasticsearch.core.Releasables;
 import org.elasticsearch.index.mapper.DateFieldMapper;
 import org.elasticsearch.index.mapper.MappedFieldType;
 import org.elasticsearch.index.mapper.NumberFieldMapper;
@@ -132,7 +132,7 @@ class LongValuesSource extends SingleDimensionValuesSource<Long> {
     }
 
     @Override
-    void setAfter(Comparable value) {
+    void setAfter(Comparable<?> value) {
         if (missingBucket && value == null) {
             afterValue = null;
         } else {
@@ -173,7 +173,7 @@ class LongValuesSource extends SingleDimensionValuesSource<Long> {
     }
 
     @Override
-    LeafBucketCollector getLeafCollector(Comparable value, LeafReaderContext context, LeafBucketCollector next) {
+    LeafBucketCollector getLeafCollector(Comparable<Long> value, LeafReaderContext context, LeafBucketCollector next) {
         if (value.getClass() != Long.class) {
             throw new IllegalArgumentException("Expected Long, got " + value.getClass());
         }

+ 3 - 2
server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/OrdinalValuesSource.java

@@ -198,7 +198,7 @@ class OrdinalValuesSource extends SingleDimensionValuesSource<BytesRef> {
     }
 
     @Override
-    void setAfter(Comparable value) {
+    void setAfter(Comparable<?> value) {
         assert invariant();
         if (missingBucket && value == null) {
             afterValue = null;
@@ -267,7 +267,8 @@ class OrdinalValuesSource extends SingleDimensionValuesSource<BytesRef> {
     }
 
     @Override
-    LeafBucketCollector getLeafCollector(Comparable value, LeafReaderContext context, LeafBucketCollector next) throws IOException {
+    LeafBucketCollector getLeafCollector(Comparable<BytesRef> value, LeafReaderContext context, LeafBucketCollector next)
+        throws IOException {
         final boolean leafReaderContextChanged = context.ord != leafReaderOrd;
         assert leafReaderContextChanged == false || invariant(); // for performance reasons only check invariant upon change
         if (value.getClass() != BytesRef.class) {

+ 2 - 2
server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/PointsSortedDocsProducer.java

@@ -43,7 +43,7 @@ class PointsSortedDocsProducer extends SortedDocsProducer {
             return DocIdSet.EMPTY;
         }
         long lowerBucket = Long.MIN_VALUE;
-        Comparable lowerValue = queue.getLowerValueLeadSource();
+        Comparable<?> lowerValue = queue.getLowerValueLeadSource();
         if (lowerValue != null) {
             if (lowerValue.getClass() != Long.class) {
                 throw new IllegalStateException("expected Long, got " + lowerValue.getClass());
@@ -52,7 +52,7 @@ class PointsSortedDocsProducer extends SortedDocsProducer {
         }
 
         long upperBucket = Long.MAX_VALUE;
-        Comparable upperValue = queue.getUpperValueLeadSource();
+        Comparable<?> upperValue = queue.getUpperValueLeadSource();
         if (upperValue != null) {
             if (upperValue.getClass() != Long.class) {
                 throw new IllegalStateException("expected Long, got " + upperValue.getClass());

+ 3 - 3
server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/SingleDimensionValuesSource.java

@@ -11,9 +11,9 @@ package org.elasticsearch.search.aggregations.bucket.composite;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.search.Query;
+import org.elasticsearch.common.util.BigArrays;
 import org.elasticsearch.core.Nullable;
 import org.elasticsearch.core.Releasable;
-import org.elasticsearch.common.util.BigArrays;
 import org.elasticsearch.index.mapper.MappedFieldType;
 import org.elasticsearch.search.DocValueFormat;
 import org.elasticsearch.search.aggregations.LeafBucketCollector;
@@ -100,7 +100,7 @@ abstract class SingleDimensionValuesSource<T extends Comparable<T>> implements R
     /**
      * Sets the after value for this source. Values that compares smaller are filtered.
      */
-    abstract void setAfter(Comparable value);
+    abstract void setAfter(Comparable<?> value);
 
     /**
      * Returns the after value set for this source.
@@ -127,7 +127,7 @@ abstract class SingleDimensionValuesSource<T extends Comparable<T>> implements R
      * Creates a {@link LeafBucketCollector} that sets the current value for each document to the provided
      * <code>value</code> and invokes {@link LeafBucketCollector#collect} on the provided <code>next</code> collector.
      */
-    abstract LeafBucketCollector getLeafCollector(Comparable value,
+    abstract LeafBucketCollector getLeafCollector(Comparable<T> value,
                                                   LeafReaderContext context, LeafBucketCollector next) throws IOException;
 
     /**

+ 1 - 1
server/src/main/java/org/elasticsearch/search/aggregations/bucket/composite/SortedDocsProducer.java

@@ -41,7 +41,7 @@ abstract class SortedDocsProducer {
      * composite buckets.
      */
     protected boolean processBucket(CompositeValuesCollectorQueue queue, LeafReaderContext context, DocIdSetIterator iterator,
-                                    Comparable leadSourceBucket, @Nullable DocIdSetBuilder builder) throws IOException {
+                                    Comparable<?> leadSourceBucket, @Nullable DocIdSetBuilder builder) throws IOException {
         final int[] topCompositeCollected = new int[1];
         final boolean[] hasCollected = new boolean[1];
         final DocCountProvider docCountProvider = new DocCountProvider();

+ 8 - 3
server/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/InternalGeoHashGrid.java

@@ -30,7 +30,7 @@ public class InternalGeoHashGrid extends InternalGeoGrid<InternalGeoHashGridBuck
     }
 
     @Override
-    public InternalGeoGrid create(List<InternalGeoGridBucket> buckets) {
+    public InternalGeoGrid<InternalGeoHashGridBucket> create(List<InternalGeoGridBucket> buckets) {
         return new InternalGeoHashGrid(name, requiredSize, buckets, metadata);
     }
 
@@ -40,7 +40,12 @@ public class InternalGeoHashGrid extends InternalGeoGrid<InternalGeoHashGridBuck
     }
 
     @Override
-    InternalGeoGrid create(String name, int requiredSize, List buckets, Map metadata) {
+    InternalGeoGrid<InternalGeoHashGridBucket> create(
+        String name,
+        int requiredSize,
+        List<InternalGeoGridBucket> buckets,
+        Map<String, Object> metadata
+    ) {
         return new InternalGeoHashGrid(name, requiredSize, buckets, metadata);
     }
 
@@ -50,7 +55,7 @@ public class InternalGeoHashGrid extends InternalGeoGrid<InternalGeoHashGridBuck
     }
 
     @Override
-    Reader getBucketReader() {
+    Reader<InternalGeoHashGridBucket> getBucketReader() {
         return InternalGeoHashGridBucket::new;
     }
 

+ 8 - 3
server/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/InternalGeoTileGrid.java

@@ -30,7 +30,7 @@ public class InternalGeoTileGrid extends InternalGeoGrid<InternalGeoTileGridBuck
     }
 
     @Override
-    public InternalGeoGrid create(List<InternalGeoGridBucket> buckets) {
+    public InternalGeoGrid<InternalGeoTileGridBucket> create(List<InternalGeoGridBucket> buckets) {
         return new InternalGeoTileGrid(name, requiredSize, buckets, metadata);
     }
 
@@ -40,7 +40,12 @@ public class InternalGeoTileGrid extends InternalGeoGrid<InternalGeoTileGridBuck
     }
 
     @Override
-    InternalGeoGrid create(String name, int requiredSize, List buckets, Map metadata) {
+    InternalGeoGrid<InternalGeoTileGridBucket> create(
+        String name,
+        int requiredSize,
+        List<InternalGeoGridBucket> buckets,
+        Map<String, Object> metadata
+    ) {
         return new InternalGeoTileGrid(name, requiredSize, buckets, metadata);
     }
 
@@ -50,7 +55,7 @@ public class InternalGeoTileGrid extends InternalGeoGrid<InternalGeoTileGridBuck
     }
 
     @Override
-    Reader getBucketReader() {
+    Reader<InternalGeoTileGridBucket> getBucketReader() {
         return InternalGeoTileGridBucket::new;
     }
 

+ 2 - 2
server/src/main/java/org/elasticsearch/search/aggregations/bucket/geogrid/ParsedGeoGrid.java

@@ -25,8 +25,8 @@ public abstract class ParsedGeoGrid extends ParsedMultiBucketAggregation<ParsedG
     }
 
     public static ObjectParser<ParsedGeoGrid, Void> createParser(Supplier<ParsedGeoGrid> supplier,
-            CheckedFunction<XContentParser, ParsedBucket, IOException> bucketParser,
-            CheckedFunction<XContentParser, ParsedBucket, IOException> keyedBucketParser) {
+            CheckedFunction<XContentParser, ParsedGeoGridBucket, IOException> bucketParser,
+            CheckedFunction<XContentParser, ParsedGeoGridBucket, IOException> keyedBucketParser) {
         ObjectParser<ParsedGeoGrid, Void> parser =  new ObjectParser<>(ParsedGeoGrid.class.getSimpleName(), true, supplier);
         declareMultiBucketAggregationFields(parser, bucketParser, keyedBucketParser);
         return parser;

+ 1 - 1
server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/DateHistogramAggregationBuilder.java

@@ -42,7 +42,7 @@ import static java.util.Map.entry;
  * A builder for histograms on date fields.
  */
 public class DateHistogramAggregationBuilder extends ValuesSourceAggregationBuilder<DateHistogramAggregationBuilder>
-        implements DateIntervalConsumer {
+        implements DateIntervalConsumer<DateHistogramAggregationBuilder> {
 
     public static final String NAME = "date_histogram";
     public static final ValuesSourceRegistry.RegistryKey<DateHistogramAggregationSupplier> REGISTRY_KEY =

+ 1 - 1
server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/DateIntervalWrapper.java

@@ -97,7 +97,7 @@ public class DateIntervalWrapper implements ToXContentFragment, Writeable {
     private DateHistogramInterval dateHistogramInterval;
     private IntervalTypeEnum intervalType = IntervalTypeEnum.NONE;
 
-    public static <T extends DateIntervalConsumer> void declareIntervalFields(ObjectParser<T, String> parser) {
+    public static <T extends DateIntervalConsumer<T>> void declareIntervalFields(ObjectParser<T, String> parser) {
         /*
          REST version compatibility.  When in V_7 compatibility mode, continue to parse the old style interval parameter,
          but immediately adapt it into either fixed or calendar interval.

+ 1 - 1
server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/InternalAutoDateHistogram.java

@@ -292,7 +292,7 @@ public final class InternalAutoDateHistogram extends
         for (InternalAggregation aggregation : aggregations) {
             InternalAutoDateHistogram histogram = (InternalAutoDateHistogram) aggregation;
             if (histogram.buckets.isEmpty() == false) {
-                pq.add(new IteratorAndCurrent(histogram.buckets.iterator()));
+                pq.add(new IteratorAndCurrent<>(histogram.buckets.iterator()));
             }
         }
 

+ 1 - 1
server/src/main/java/org/elasticsearch/search/aggregations/bucket/histogram/InternalVariableWidthHistogram.java

@@ -336,7 +336,7 @@ public class InternalVariableWidthHistogram
         for (InternalAggregation aggregation : aggregations) {
             InternalVariableWidthHistogram histogram = (InternalVariableWidthHistogram) aggregation;
             if (histogram.buckets.isEmpty() == false) {
-                pq.add(new IteratorAndCurrent(histogram.buckets.iterator()));
+                pq.add(new IteratorAndCurrent<>(histogram.buckets.iterator()));
             }
         }
 

+ 3 - 0
server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/AbstractRangeBuilder.java

@@ -105,6 +105,7 @@ public abstract class AbstractRangeBuilder<AB extends AbstractRangeBuilder<AB, R
         out.writeBoolean(keyed);
     }
 
+    @SuppressWarnings("unchecked")
     public AB addRange(R range) {
         if (range == null) {
             throw new IllegalArgumentException("[range] must not be null: [" + name + "]");
@@ -117,6 +118,7 @@ public abstract class AbstractRangeBuilder<AB extends AbstractRangeBuilder<AB, R
         return ranges;
     }
 
+    @SuppressWarnings("unchecked")
     public AB keyed(boolean keyed) {
         this.keyed = keyed;
         return (AB) this;
@@ -144,6 +146,7 @@ public abstract class AbstractRangeBuilder<AB extends AbstractRangeBuilder<AB, R
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public boolean equals(Object obj) {
         if (this == obj) return true;
         if (obj == null || getClass() != obj.getClass()) return false;

+ 1 - 1
server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/GeoDistanceAggregatorSupplier.java

@@ -29,7 +29,7 @@ public interface GeoDistanceAggregatorSupplier {
         DistanceUnit units,
         ValuesSource valuesSource,
         DocValueFormat format,
-        InternalRange.Factory rangeFactory,
+        @SuppressWarnings("rawtypes") InternalRange.Factory rangeFactory,
         RangeAggregator.Range[] ranges,
         boolean keyed,
         AggregationContext context,

+ 5 - 1
server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/InternalRange.java

@@ -26,6 +26,7 @@ import java.util.Objects;
 
 public class InternalRange<B extends InternalRange.Bucket, R extends InternalRange<B, R>> extends InternalMultiBucketAggregation<R, B>
         implements Range {
+    @SuppressWarnings("rawtypes")
     static final Factory FACTORY = new Factory();
 
     public static class Bucket extends InternalMultiBucketAggregation.InternalBucket implements Range.Bucket {
@@ -105,6 +106,7 @@ public class InternalRange<B extends InternalRange.Bucket, R extends InternalRan
             return aggregations;
         }
 
+        @SuppressWarnings("unchecked")
         protected Factory<? extends Bucket, ?> getFactory() {
             return FACTORY;
         }
@@ -254,6 +256,7 @@ public class InternalRange<B extends InternalRange.Bucket, R extends InternalRan
         return ranges;
     }
 
+    @SuppressWarnings("unchecked")
     public Factory<B, R> getFactory() {
         return FACTORY;
     }
@@ -273,6 +276,7 @@ public class InternalRange<B extends InternalRange.Bucket, R extends InternalRan
     @Override
     public InternalAggregation reduce(List<InternalAggregation> aggregations, ReduceContext reduceContext) {
         reduceContext.consumeBucketsAndMaybeBreak(ranges.size());
+        @SuppressWarnings("rawtypes")
         List<B>[] rangeList = new List[ranges.size()];
         for (int i = 0; i < rangeList.length; ++i) {
             rangeList[i] = new ArrayList<>();
@@ -287,7 +291,7 @@ public class InternalRange<B extends InternalRange.Bucket, R extends InternalRan
 
         final List<B> ranges = new ArrayList<>();
         for (int i = 0; i < this.ranges.size(); ++i) {
-            ranges.add((B) reduceBucket(rangeList[i], reduceContext));
+            ranges.add(reduceBucket(rangeList[i], reduceContext));
         }
         return getFactory().create(name, ranges, format, keyed, getMetadata());
     }

+ 9 - 1
server/src/main/java/org/elasticsearch/search/aggregations/bucket/range/RangeAggregator.java

@@ -434,6 +434,7 @@ public abstract class RangeAggregator extends BucketsAggregator {
     private final DocValueFormat format;
     protected final Range[] ranges;
     private final boolean keyed;
+    @SuppressWarnings("rawtypes")
     private final InternalRange.Factory rangeFactory;
     private final double averageDocsPerRange;
 
@@ -442,6 +443,7 @@ public abstract class RangeAggregator extends BucketsAggregator {
         AggregatorFactories factories,
         ValuesSource valuesSource,
         DocValueFormat format,
+        @SuppressWarnings("rawtypes")
         InternalRange.Factory rangeFactory,
         Range[] ranges,
         double averageDocsPerRange,
@@ -474,6 +476,7 @@ public abstract class RangeAggregator extends BucketsAggregator {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public InternalAggregation[] buildAggregations(long[] owningBucketOrds) throws IOException {
         return buildAggregationsForFixedBucketCount(owningBucketOrds, ranges.length,
             (offsetInOwningOrd, docCount, subAggregationResults) -> {
@@ -483,6 +486,7 @@ public abstract class RangeAggregator extends BucketsAggregator {
     }
 
     @Override
+    @SuppressWarnings("unchecked")
     public InternalAggregation buildEmptyAggregation() {
         InternalAggregations subAggs = buildEmptySubAggregations();
         List<org.elasticsearch.search.aggregations.bucket.range.Range.Bucket> buckets = new ArrayList<>(ranges.length);
@@ -507,6 +511,7 @@ public abstract class RangeAggregator extends BucketsAggregator {
 
         private final R[] ranges;
         private final boolean keyed;
+        @SuppressWarnings("rawtypes")
         private final InternalRange.Factory factory;
         private final DocValueFormat format;
 
@@ -518,6 +523,7 @@ public abstract class RangeAggregator extends BucketsAggregator {
             DocValueFormat format,
             AggregationContext context,
             Aggregator parent,
+            @SuppressWarnings("rawtypes")
             InternalRange.Factory factory,
             Map<String, Object> metadata
         ) throws IOException {
@@ -529,6 +535,7 @@ public abstract class RangeAggregator extends BucketsAggregator {
         }
 
         @Override
+        @SuppressWarnings("unchecked")
         public InternalAggregation buildEmptyAggregation() {
             InternalAggregations subAggs = buildEmptySubAggregations();
             List<org.elasticsearch.search.aggregations.bucket.range.Range.Bucket> buckets = new ArrayList<>(ranges.length);
@@ -599,6 +606,7 @@ public abstract class RangeAggregator extends BucketsAggregator {
             AggregatorFactories factories,
             Numeric valuesSource,
             DocValueFormat format,
+            @SuppressWarnings("rawtypes")
             Factory rangeFactory,
             Range[] ranges,
             double averageDocsPerRange,
@@ -776,7 +784,7 @@ public abstract class RangeAggregator extends BucketsAggregator {
                         r.getFrom(),
                         r.getTo(),
                         b.getDocCount(),
-                        (InternalAggregations) b.getAggregations(),
+                        b.getAggregations(),
                         keyed,
                         format
                     )

+ 1 - 1
server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/InternalMappedSignificantTerms.java

@@ -121,7 +121,7 @@ public abstract class InternalMappedSignificantTerms<
         builder.field(CommonFields.DOC_COUNT.getPreferredName(), subsetSize);
         builder.field(BG_COUNT, supersetSize);
         builder.startArray(CommonFields.BUCKETS.getPreferredName());
-        for (Bucket bucket : buckets) {
+        for (Bucket<?> bucket : buckets) {
             //There is a condition (presumably when only one shard has a bucket?) where reduce is not called
             // and I end up with buckets that contravene the user's min_doc_count criteria in my reducer
             if (bucket.subsetDf >= minDocCount) {

+ 2 - 2
server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/InternalRareTerms.java

@@ -183,9 +183,9 @@ public abstract class InternalRareTerms<A extends InternalRareTerms<A, B>, B ext
     }
 
     protected static XContentBuilder doXContentCommon(XContentBuilder builder, Params params,
-                                                      List<? extends Bucket> buckets) throws IOException {
+                                                      List<? extends Bucket<?>> buckets) throws IOException {
         builder.startArray(CommonFields.BUCKETS.getPreferredName());
-        for (Bucket bucket : buckets) {
+        for (Bucket<?> bucket : buckets) {
             bucket.toXContent(builder, params);
         }
         builder.endArray();

+ 2 - 2
server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/ParsedRareTerms.java

@@ -9,11 +9,11 @@
 package org.elasticsearch.search.aggregations.bucket.terms;
 
 import org.elasticsearch.common.CheckedBiConsumer;
-import org.elasticsearch.core.CheckedFunction;
 import org.elasticsearch.common.xcontent.ObjectParser;
 import org.elasticsearch.common.xcontent.XContentBuilder;
 import org.elasticsearch.common.xcontent.XContentParser;
 import org.elasticsearch.common.xcontent.XContentParserUtils;
+import org.elasticsearch.core.CheckedFunction;
 import org.elasticsearch.search.aggregations.Aggregation;
 import org.elasticsearch.search.aggregations.Aggregations;
 import org.elasticsearch.search.aggregations.ParsedMultiBucketAggregation;
@@ -51,7 +51,7 @@ public abstract class ParsedRareTerms extends ParsedMultiBucketAggregation<Parse
 
     static void declareParsedTermsFields(final ObjectParser<? extends ParsedRareTerms, Void> objectParser,
                                          final CheckedFunction<XContentParser, ParsedBucket, IOException> bucketParser) {
-        declareMultiBucketAggregationFields(objectParser, bucketParser::apply, bucketParser::apply);
+        declareMultiBucketAggregationFields(objectParser, bucketParser, bucketParser);
     }
 
     public abstract static class ParsedBucket extends ParsedMultiBucketAggregation.ParsedBucket implements RareTerms.Bucket {

+ 7 - 5
server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/ParsedSignificantTerms.java

@@ -9,13 +9,13 @@
 package org.elasticsearch.search.aggregations.bucket.terms;
 
 import org.elasticsearch.common.CheckedBiConsumer;
-import org.elasticsearch.core.CheckedFunction;
 import org.elasticsearch.common.CheckedSupplier;
-import org.elasticsearch.common.xcontent.ParseField;
 import org.elasticsearch.common.xcontent.ObjectParser;
+import org.elasticsearch.common.xcontent.ParseField;
 import org.elasticsearch.common.xcontent.XContentBuilder;
 import org.elasticsearch.common.xcontent.XContentParser;
 import org.elasticsearch.common.xcontent.XContentParserUtils;
+import org.elasticsearch.core.CheckedFunction;
 import org.elasticsearch.search.aggregations.Aggregation;
 import org.elasticsearch.search.aggregations.Aggregations;
 import org.elasticsearch.search.aggregations.ParsedMultiBucketAggregation;
@@ -84,9 +84,11 @@ public abstract class ParsedSignificantTerms extends ParsedMultiBucketAggregatio
         return aggregation;
     }
 
-    static void declareParsedSignificantTermsFields(final ObjectParser<? extends ParsedSignificantTerms, Void> objectParser,
-                                     final CheckedFunction<XContentParser, ParsedSignificantTerms.ParsedBucket, IOException> bucketParser) {
-        declareMultiBucketAggregationFields(objectParser, bucketParser::apply, bucketParser::apply);
+    static void declareParsedSignificantTermsFields(
+        final ObjectParser<? extends ParsedSignificantTerms, Void> objectParser,
+        final CheckedFunction<XContentParser, ParsedSignificantTerms.ParsedBucket, IOException> bucketParser
+    ) {
+        declareMultiBucketAggregationFields(objectParser, bucketParser, bucketParser);
         objectParser.declareLong((parsedTerms, value) -> parsedTerms.subsetSize = value , CommonFields.DOC_COUNT);
         objectParser.declareLong((parsedTerms, value) -> parsedTerms.supersetSize = value ,
                 new ParseField(InternalMappedSignificantTerms.BG_COUNT));

+ 1 - 1
server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/ParsedTerms.java

@@ -70,7 +70,7 @@ public abstract class ParsedTerms extends ParsedMultiBucketAggregation<ParsedTer
 
     static void declareParsedTermsFields(final ObjectParser<? extends ParsedTerms, Void> objectParser,
                                          final CheckedFunction<XContentParser, ParsedBucket, IOException> bucketParser) {
-        declareMultiBucketAggregationFields(objectParser, bucketParser::apply, bucketParser::apply);
+        declareMultiBucketAggregationFields(objectParser, bucketParser, bucketParser);
         objectParser.declareLong((parsedTerms, value) -> parsedTerms.docCountErrorUpperBound = value ,
                 DOC_COUNT_ERROR_UPPER_BOUND_FIELD_NAME);
         objectParser.declareLong((parsedTerms, value) -> parsedTerms.sumOtherDocCount = value,

+ 1 - 0
server/src/main/java/org/elasticsearch/search/aggregations/pipeline/BucketScriptPipelineAggregator.java

@@ -43,6 +43,7 @@ public class BucketScriptPipelineAggregator extends PipelineAggregator {
 
     @Override
     public InternalAggregation reduce(InternalAggregation aggregation, ReduceContext reduceContext) {
+        @SuppressWarnings({"rawtypes", "unchecked"})
         InternalMultiBucketAggregation<InternalMultiBucketAggregation, InternalMultiBucketAggregation.InternalBucket> originalAgg =
                 (InternalMultiBucketAggregation<InternalMultiBucketAggregation, InternalMultiBucketAggregation.InternalBucket>) aggregation;
         List<? extends InternalMultiBucketAggregation.InternalBucket> buckets = originalAgg.getBuckets();

+ 1 - 0
server/src/main/java/org/elasticsearch/search/aggregations/pipeline/BucketSortPipelineAggregationBuilder.java

@@ -43,6 +43,7 @@ public class BucketSortPipelineAggregationBuilder extends AbstractPipelineAggreg
     private static final ParseField FROM = new ParseField("from");
     private static final ParseField SIZE = new ParseField("size");
 
+    @SuppressWarnings("unchecked")
     public static final ConstructingObjectParser<BucketSortPipelineAggregationBuilder, String> PARSER = new ConstructingObjectParser<>(NAME,
             false, (a, context) -> new BucketSortPipelineAggregationBuilder(context, (List<FieldSortBuilder>) a[0]));
 

+ 2 - 0
server/src/main/java/org/elasticsearch/search/aggregations/pipeline/BucketSortPipelineAggregator.java

@@ -40,6 +40,7 @@ public class BucketSortPipelineAggregator extends PipelineAggregator {
 
     @Override
     public InternalAggregation reduce(InternalAggregation aggregation, ReduceContext reduceContext) {
+        @SuppressWarnings({"rawtypes", "unchecked"})
         InternalMultiBucketAggregation<InternalMultiBucketAggregation, InternalMultiBucketAggregation.InternalBucket> originalAgg =
                 (InternalMultiBucketAggregation<InternalMultiBucketAggregation, InternalMultiBucketAggregation.InternalBucket>) aggregation;
         List<? extends InternalMultiBucketAggregation.InternalBucket> buckets = originalAgg.getBuckets();
@@ -87,6 +88,7 @@ public class BucketSortPipelineAggregator extends PipelineAggregator {
             this.sortValues = resolveAndCacheSortValues();
         }
 
+        @SuppressWarnings("unchecked")
         private Map<FieldSortBuilder, Comparable<Object>> resolveAndCacheSortValues() {
             Map<FieldSortBuilder, Comparable<Object>> resolved = new HashMap<>();
             for (FieldSortBuilder sort : sorts) {

+ 1 - 0
server/src/main/java/org/elasticsearch/search/aggregations/pipeline/CumulativeSumPipelineAggregator.java

@@ -36,6 +36,7 @@ public class CumulativeSumPipelineAggregator extends PipelineAggregator {
 
     @Override
     public InternalAggregation reduce(InternalAggregation aggregation, ReduceContext reduceContext) {
+        @SuppressWarnings("rawtypes")
         InternalMultiBucketAggregation<? extends InternalMultiBucketAggregation, ? extends InternalMultiBucketAggregation.InternalBucket>
                 histo = (InternalMultiBucketAggregation<? extends InternalMultiBucketAggregation, ? extends
                 InternalMultiBucketAggregation.InternalBucket>) aggregation;

+ 1 - 0
server/src/main/java/org/elasticsearch/search/aggregations/pipeline/DerivativePipelineAggregator.java

@@ -40,6 +40,7 @@ public class DerivativePipelineAggregator extends PipelineAggregator {
 
     @Override
     public InternalAggregation reduce(InternalAggregation aggregation, ReduceContext reduceContext) {
+        @SuppressWarnings("rawtypes")
         InternalMultiBucketAggregation<? extends InternalMultiBucketAggregation, ? extends InternalMultiBucketAggregation.InternalBucket>
                 histo = (InternalMultiBucketAggregation<? extends InternalMultiBucketAggregation, ? extends
                 InternalMultiBucketAggregation.InternalBucket>) aggregation;

+ 1 - 0
server/src/main/java/org/elasticsearch/search/aggregations/pipeline/MovFnPipelineAggregator.java

@@ -63,6 +63,7 @@ public class MovFnPipelineAggregator extends PipelineAggregator {
 
     @Override
     public InternalAggregation reduce(InternalAggregation aggregation, InternalAggregation.ReduceContext reduceContext) {
+        @SuppressWarnings("rawtypes")
         InternalMultiBucketAggregation<? extends InternalMultiBucketAggregation, ? extends InternalMultiBucketAggregation.InternalBucket>
             histo = (InternalMultiBucketAggregation<? extends InternalMultiBucketAggregation, ? extends
             InternalMultiBucketAggregation.InternalBucket>) aggregation;

+ 1 - 0
server/src/main/java/org/elasticsearch/search/aggregations/pipeline/SerialDiffPipelineAggregator.java

@@ -42,6 +42,7 @@ public class SerialDiffPipelineAggregator extends PipelineAggregator {
 
     @Override
     public InternalAggregation reduce(InternalAggregation aggregation, ReduceContext reduceContext) {
+        @SuppressWarnings("rawtypes")
         InternalMultiBucketAggregation<? extends InternalMultiBucketAggregation, ? extends InternalMultiBucketAggregation.InternalBucket>
                 histo = (InternalMultiBucketAggregation<? extends InternalMultiBucketAggregation, ? extends
                 InternalMultiBucketAggregation.InternalBucket>) aggregation;