diff --git a/.editorconfig b/.editorconfig index 4003907bdd14a..0c8a9dfd38ba2 100644 --- a/.editorconfig +++ b/.editorconfig @@ -19,6 +19,9 @@ ij_continuation_indent_size = 2 indent_size = 2 max_line_length = 150 +[*.md] +max_line_length = 80 + [*.groovy] indent_size = 4 ij_continuation_indent_size = 4 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 46963321a0960..3e08516f86814 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,7 +1,7 @@ Contributing to elasticsearch ============================= -Elasticsearch is a free and open project and we love to receive contributions from our community — you! There are many ways to contribute, from writing tutorials or blog posts, improving the documentation, submitting bug reports and feature requests or writing code which can be incorporated into Elasticsearch itself. +Elasticsearch is a free and open project and we love to receive contributions from our community — you! There are many ways to contribute, from writing tutorials or blog posts, improving the documentation, submitting bug reports and feature requests or writing code which can be incorporated into Elasticsearch itself. If you want to be rewarded for your contributions, sign up for the [Elastic Contributor Program](https://www.elastic.co/community/contributor). Each time you make a valid contribution, you’ll earn points that increase your chances of winning prizes and being recognized as a top contributor. @@ -38,14 +38,14 @@ Contributing code and documentation changes ------------------------------------------- If you would like to contribute a new feature or a bug fix to Elasticsearch, -please discuss your idea first on the Github issue. If there is no Github issue +please discuss your idea first on the GitHub issue. If there is no GitHub issue for your idea, please open one. It may be that somebody is already working on it, or that there are particular complexities that you should know about before starting the implementation. There are often a number of ways to fix a problem and it is important to find the right approach before spending time on a PR that cannot be merged. -We add the `help wanted` label to existing Github issues for which community +We add the `help wanted` label to existing GitHub issues for which community contributions are particularly welcome, and we use the `good first issue` label to mark issues that we think will be suitable for new contributors. @@ -147,7 +147,6 @@ and then run `curl` in another window like this: curl -u elastic:password localhost:9200 - ### Importing the project into IntelliJ IDEA The minimum IntelliJ IDEA version required to import the Elasticsearch project is 2020.1 @@ -427,26 +426,25 @@ We require license headers on all Java files. With the exception of the top-level `x-pack` directory, all contributed code should have the following license header unless instructed otherwise: - /* - * 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. - */ + /* + * 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. + */ The top-level `x-pack` directory contains code covered by the [Elastic license](licenses/ELASTIC-LICENSE-2.0.txt). Community contributions to this code are welcome, and should have the following license header unless instructed otherwise: - /* - * 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; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - + /* + * 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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ It is important that the only code covered by the Elastic licence is contained within the top-level `x-pack` directory. The build will fail its pre-commit @@ -456,52 +454,63 @@ checks if contributed code does not have the appropriate license headers. > be automatically configured to add the correct license header to new source > files based on the source location. +### Type-checking, generics and casting + +You should try to write code that does not require suppressing any warnings from +the compiler, e.g. suppressing type-checking, raw generics, and so on. However, +this isn't always possible or practical. In such cases, you should use the +`@SuppressWarnings` annotations to silence the compiler warning, trying to keep +the scope of the suppression as small as possible. Where a piece of code +requires a lot of suppressions, it may be better to apply a single suppression +at a higher level e.g. at the method or even class level. Use your judgement. + +There are also cases where the compiler simply refuses to accept an assignment +or cast of any kind, because it lacks the information to know that the types are +OK. In such cases, you can use +the [`Types.forciblyCast`](libs/core/src/main/java/org/elasticsearch/core/Types.java) +utility method. As the name suggests, you can coerce any type to any other type, +so please use it as a last resort. + ### Creating A Distribution Run all build commands from within the root directory: -```sh -cd elasticsearch/ -``` + cd elasticsearch/ To build a darwin-tar distribution, run this command: -```sh -./gradlew -p distribution/archives/darwin-tar assemble -``` + ./gradlew -p distribution/archives/darwin-tar assemble You will find the distribution under: -`./distribution/archives/darwin-tar/build/distributions/` + + ./distribution/archives/darwin-tar/build/distributions/ To create all build artifacts (e.g., plugins and Javadocs) as well as distributions in all formats, run this command: -```sh -./gradlew assemble -``` + ./gradlew assemble -> **NOTE:** Running the task above will fail if you don't have a available +> **NOTE:** Running the task above will fail if you don't have an available > Docker installation. The package distributions (Debian and RPM) can be found under: -`./distribution/packages/(deb|rpm|oss-deb|oss-rpm)/build/distributions/` + + ./distribution/packages/(deb|rpm|oss-deb|oss-rpm)/build/distributions/ The archive distributions (tar and zip) can be found under: -`./distribution/archives/(darwin-tar|linux-tar|windows-zip|oss-darwin-tar|oss-linux-tar|oss-windows-zip)/build/distributions/` + + ./distribution/archives/(darwin-tar|linux-tar|windows-zip|oss-darwin-tar|oss-linux-tar|oss-windows-zip)/build/distributions/ ### Running The Full Test Suite Before submitting your changes, run the test suite to make sure that nothing is broken, with: -```sh -./gradlew check -``` + ./gradlew check If your changes affect only the documentation, run: -```sh -./gradlew -p docs check -``` + ./gradlew -p docs check + For more information about testing code examples in the documentation, see https://github.com/elastic/elasticsearch/blob/master/docs/README.asciidoc diff --git a/server/src/main/java/org/apache/lucene/queries/SearchAfterSortedDocQuery.java b/server/src/main/java/org/apache/lucene/queries/SearchAfterSortedDocQuery.java index cd8248229972e..d9e5a10b2343f 100644 --- a/server/src/main/java/org/apache/lucene/queries/SearchAfterSortedDocQuery.java +++ b/server/src/main/java/org/apache/lucene/queries/SearchAfterSortedDocQuery.java @@ -46,7 +46,7 @@ public SearchAfterSortedDocQuery(Sort sort, FieldDoc after) { this.sort = Objects.requireNonNull(sort); this.after = after; int numFields = sort.getSort().length; - this.fieldComparators = new FieldComparator[numFields]; + this.fieldComparators = new FieldComparator[numFields]; this.reverseMuls = new int[numFields]; for (int i = 0; i < numFields; i++) { SortField sortField = sort.getSort()[i]; diff --git a/server/src/main/java/org/elasticsearch/action/search/BottomSortValuesCollector.java b/server/src/main/java/org/elasticsearch/action/search/BottomSortValuesCollector.java index fe342b92165f4..b36820b3692fd 100644 --- a/server/src/main/java/org/elasticsearch/action/search/BottomSortValuesCollector.java +++ b/server/src/main/java/org/elasticsearch/action/search/BottomSortValuesCollector.java @@ -15,13 +15,15 @@ import org.elasticsearch.search.DocValueFormat; import org.elasticsearch.search.SearchSortValuesAndFormats; +import static org.elasticsearch.core.Types.forciblyCast; + /** * Utility class to keep track of the bottom doc's sort values in a distributed search. */ class BottomSortValuesCollector { private final int topNSize; private final SortField[] sortFields; - private final FieldComparator[] comparators; + private final FieldComparator[] comparators; private final int[] reverseMuls; private volatile long totalHits; @@ -29,7 +31,7 @@ class BottomSortValuesCollector { BottomSortValuesCollector(int topNSize, SortField[] sortFields) { this.topNSize = topNSize; - this.comparators = new FieldComparator[sortFields.length]; + this.comparators = new FieldComparator[sortFields.length]; this.reverseMuls = new int[sortFields.length]; this.sortFields = sortFields; for (int i = 0; i < sortFields.length; i++) { @@ -90,7 +92,7 @@ private FieldDoc extractBottom(TopFieldDocs topDocs) { private int compareValues(Object[] v1, Object[] v2) { for (int i = 0; i < v1.length; i++) { - int cmp = reverseMuls[i] * comparators[i].compareValues(v1[i], v2[i]); + int cmp = reverseMuls[i] * comparators[i].compareValues(forciblyCast(v1[i]), forciblyCast(v2[i])); if (cmp != 0) { return cmp; } diff --git a/server/src/main/java/org/elasticsearch/action/search/CanMatchPreFilterSearchPhase.java b/server/src/main/java/org/elasticsearch/action/search/CanMatchPreFilterSearchPhase.java index 361c34daa5344..09ae052bd1d5e 100644 --- a/server/src/main/java/org/elasticsearch/action/search/CanMatchPreFilterSearchPhase.java +++ b/server/src/main/java/org/elasticsearch/action/search/CanMatchPreFilterSearchPhase.java @@ -36,6 +36,8 @@ import java.util.stream.IntStream; import java.util.stream.Stream; +import static org.elasticsearch.core.Types.forciblyCast; + /** * This search phase can be used as an initial search phase to pre-filter search shards based on query rewriting. * The queries are rewritten against the shards and based on the rewrite result shards might be able to be excluded @@ -185,7 +187,11 @@ private static boolean shouldSortShards(MinAndMax[] minAndMaxes) { private static Comparator shardComparator(GroupShardsIterator shardsIts, MinAndMax[] minAndMaxes, SortOrder order) { - final Comparator comparator = Comparator.comparing(index -> minAndMaxes[index], MinAndMax.getComparator(order)); + final Comparator comparator = Comparator.comparing( + index -> minAndMaxes[index], + forciblyCast(MinAndMax.getComparator(order)) + ); + return comparator.thenComparing(index -> shardsIts.get(index)); } @@ -197,7 +203,7 @@ private static final class CanMatchSearchPhaseResults extends SearchPhaseResults CanMatchSearchPhaseResults(int size) { super(size); possibleMatches = new FixedBitSet(size); - minAndMaxes = new MinAndMax[size]; + minAndMaxes = new MinAndMax[size]; } @Override diff --git a/server/src/main/java/org/elasticsearch/action/support/broadcast/node/TransportBroadcastByNodeAction.java b/server/src/main/java/org/elasticsearch/action/support/broadcast/node/TransportBroadcastByNodeAction.java index 200ea2e3c6755..e403999b44b17 100644 --- a/server/src/main/java/org/elasticsearch/action/support/broadcast/node/TransportBroadcastByNodeAction.java +++ b/server/src/main/java/org/elasticsearch/action/support/broadcast/node/TransportBroadcastByNodeAction.java @@ -110,7 +110,7 @@ public TransportBroadcastByNodeAction( private Response newResponse( Request request, - AtomicReferenceArray responses, + AtomicReferenceArray responses, List unavailableShardExceptions, Map> nodes, ClusterState clusterState) { @@ -126,6 +126,7 @@ private Response newResponse( exceptions.add(new DefaultShardOperationFailedException(shard.getIndexName(), shard.getId(), exception)); } } else { + @SuppressWarnings("unchecked") NodeResponse response = (NodeResponse) responses.get(i); broadcastByNodeResponses.addAll(response.results); totalShards += response.getTotalShards(); @@ -401,7 +402,7 @@ public void messageReceived(final NodeRequest request, TransportChannel channel, if (logger.isTraceEnabled()) { logger.trace("[{}] executing operation on [{}] shards", actionName, totalShards); } - final AtomicArray shardResultOrExceptions = new AtomicArray(totalShards); + final AtomicArray shardResultOrExceptions = new AtomicArray<>(totalShards); final AtomicInteger counter = new AtomicInteger(shards.size()); int shardIndex = -1; @@ -430,6 +431,7 @@ public void onFailure(Exception e) { } } + @SuppressWarnings("unchecked") private void finishHim(NodeRequest request, TransportChannel channel, Task task, AtomicArray shardResultOrExceptions) { if (task instanceof CancellableTask) { diff --git a/server/src/main/java/org/elasticsearch/action/support/replication/TransportBroadcastReplicationAction.java b/server/src/main/java/org/elasticsearch/action/support/replication/TransportBroadcastReplicationAction.java index cafaa07f9b0cb..a1858855c555e 100644 --- a/server/src/main/java/org/elasticsearch/action/support/replication/TransportBroadcastReplicationAction.java +++ b/server/src/main/java/org/elasticsearch/action/support/replication/TransportBroadcastReplicationAction.java @@ -133,7 +133,7 @@ protected List shards(Request request, ClusterState clusterState) { protected abstract ShardRequest newShardRequest(Request request, ShardId shardId); - private void finishAndNotifyListener(ActionListener listener, CopyOnWriteArrayList shardsResponses) { + private void finishAndNotifyListener(ActionListener listener, CopyOnWriteArrayList shardsResponses) { logger.trace("{}: got all shard responses", actionName); int successfulShards = 0; int failedShards = 0; @@ -159,6 +159,6 @@ private void finishAndNotifyListener(ActionListener listener, CopyOnWriteArrayLi listener.onResponse(newResponse(successfulShards, failedShards, totalNumCopies, shardFailures)); } - protected abstract BroadcastResponse newResponse(int successfulShards, int failedShards, int totalNumCopies, + protected abstract Response newResponse(int successfulShards, int failedShards, int totalNumCopies, List shardFailures); } diff --git a/server/src/main/java/org/elasticsearch/index/fielddata/ordinals/MultiOrdinals.java b/server/src/main/java/org/elasticsearch/index/fielddata/ordinals/MultiOrdinals.java index c0ed3ddf00609..22c745b5c3af0 100644 --- a/server/src/main/java/org/elasticsearch/index/fielddata/ordinals/MultiOrdinals.java +++ b/server/src/main/java/org/elasticsearch/index/fielddata/ordinals/MultiOrdinals.java @@ -95,7 +95,7 @@ public SortedSetDocValues ordinals(ValuesHolder values) { if (multiValued) { return new MultiDocs(this, values); } else { - return (SortedSetDocValues) DocValues.singleton(new SingleDocs(this, values)); + return DocValues.singleton(new SingleDocs(this, values)); } } diff --git a/server/src/main/java/org/elasticsearch/index/fielddata/ordinals/SinglePackedOrdinals.java b/server/src/main/java/org/elasticsearch/index/fielddata/ordinals/SinglePackedOrdinals.java index 2e0a6eee2b152..308fb8602bc74 100644 --- a/server/src/main/java/org/elasticsearch/index/fielddata/ordinals/SinglePackedOrdinals.java +++ b/server/src/main/java/org/elasticsearch/index/fielddata/ordinals/SinglePackedOrdinals.java @@ -49,7 +49,7 @@ public Collection getChildResources() { @Override public SortedSetDocValues ordinals(ValuesHolder values) { - return (SortedSetDocValues) DocValues.singleton(new Docs(this, values)); + return DocValues.singleton(new Docs(this, values)); } private static class Docs extends AbstractSortedDocValues { diff --git a/server/src/main/java/org/elasticsearch/index/query/AbstractGeometryQueryBuilder.java b/server/src/main/java/org/elasticsearch/index/query/AbstractGeometryQueryBuilder.java index 4cb05dc39f1f7..32fe4f649c082 100644 --- a/server/src/main/java/org/elasticsearch/index/query/AbstractGeometryQueryBuilder.java +++ b/server/src/main/java/org/elasticsearch/index/query/AbstractGeometryQueryBuilder.java @@ -126,7 +126,7 @@ protected AbstractGeometryQueryBuilder(String fieldName, Supplier supp this.fieldName = fieldName; this.shape = null; this.supplier = supplier; - this.indexedShapeId = indexedShapeId;; + this.indexedShapeId = indexedShapeId; } /** @@ -190,6 +190,7 @@ public String fieldName() { * @param geometry the geometry * @return this */ + @SuppressWarnings("unchecked") public QB shape(Geometry geometry) { if (geometry == null) { throw new IllegalArgumentException("No geometry defined"); @@ -218,6 +219,7 @@ public String indexedShapeId() { * @param indexedShapeIndex Name of the index where the indexed Shape is * @return this */ + @SuppressWarnings("unchecked") public QB indexedShapeIndex(String indexedShapeIndex) { this.indexedShapeIndex = indexedShapeIndex; return (QB)this; @@ -237,6 +239,7 @@ public String indexedShapeIndex() { * @param indexedShapePath Path of the field where the Shape itself is defined * @return this */ + @SuppressWarnings("unchecked") public QB indexedShapePath(String indexedShapePath) { this.indexedShapePath = indexedShapePath; return (QB)this; @@ -255,6 +258,7 @@ public String indexedShapePath() { * @param indexedShapeRouting indexed shape routing * @return this */ + @SuppressWarnings("unchecked") public QB indexedShapeRouting(String indexedShapeRouting) { this.indexedShapeRouting = indexedShapeRouting; return (QB)this; @@ -275,6 +279,7 @@ public String indexedShapeRouting() { * @param relation relation of the shapes * @return this */ + @SuppressWarnings("unchecked") public QB relation(ShapeRelation relation) { if (relation == null) { throw new IllegalArgumentException("No Shape Relation defined"); @@ -427,6 +432,7 @@ protected void doXContent(XContentBuilder builder, Params params) throws IOExcep } @Override + @SuppressWarnings("rawtypes") protected boolean doEquals(AbstractGeometryQueryBuilder other) { return Objects.equals(fieldName, other.fieldName) && Objects.equals(indexedShapeId, other.indexedShapeId) diff --git a/server/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java b/server/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java index 5b6e12d09b8fd..1d44ed1d08d99 100644 --- a/server/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java +++ b/server/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java @@ -206,6 +206,7 @@ public Item(@Nullable String index, XContentBuilder doc) { /** * Read from a stream. */ + @SuppressWarnings("unchecked") Item(StreamInput in) throws IOException { index = in.readOptionalString(); if (in.getVersion().before(Version.V_8_0_0)) { diff --git a/server/src/main/java/org/elasticsearch/index/query/QueryBuilders.java b/server/src/main/java/org/elasticsearch/index/query/QueryBuilders.java index 5ffdbae44249a..d8d872a773523 100644 --- a/server/src/main/java/org/elasticsearch/index/query/QueryBuilders.java +++ b/server/src/main/java/org/elasticsearch/index/query/QueryBuilders.java @@ -644,7 +644,7 @@ public static GeoShapeQueryBuilder geoShapeQuery(String name, Geometry shape) th * @deprecated use {@link #geoShapeQuery(String, Geometry)} instead */ @Deprecated - public static GeoShapeQueryBuilder geoShapeQuery(String name, ShapeBuilder shape) throws IOException { + public static GeoShapeQueryBuilder geoShapeQuery(String name, ShapeBuilder shape) throws IOException { return new GeoShapeQueryBuilder(name, shape.buildGeometry()); } @@ -668,7 +668,7 @@ public static GeoShapeQueryBuilder geoIntersectionQuery(String name, Geometry sh * @deprecated use {@link #geoIntersectionQuery(String, Geometry)} instead */ @Deprecated - public static GeoShapeQueryBuilder geoIntersectionQuery(String name, ShapeBuilder shape) throws IOException { + public static GeoShapeQueryBuilder geoIntersectionQuery(String name, ShapeBuilder shape) throws IOException { GeoShapeQueryBuilder builder = geoShapeQuery(name, shape); builder.relation(ShapeRelation.INTERSECTS); return builder; @@ -696,7 +696,7 @@ public static GeoShapeQueryBuilder geoWithinQuery(String name, Geometry shape) t * @deprecated use {@link #geoWithinQuery(String, Geometry)} instead */ @Deprecated - public static GeoShapeQueryBuilder geoWithinQuery(String name, ShapeBuilder shape) throws IOException { + public static GeoShapeQueryBuilder geoWithinQuery(String name, ShapeBuilder shape) throws IOException { GeoShapeQueryBuilder builder = geoShapeQuery(name, shape); builder.relation(ShapeRelation.WITHIN); return builder; @@ -724,7 +724,7 @@ public static GeoShapeQueryBuilder geoDisjointQuery(String name, Geometry shape) * @deprecated use {@link #geoDisjointQuery(String, Geometry)} instead */ @Deprecated - public static GeoShapeQueryBuilder geoDisjointQuery(String name, ShapeBuilder shape) throws IOException { + public static GeoShapeQueryBuilder geoDisjointQuery(String name, ShapeBuilder shape) throws IOException { GeoShapeQueryBuilder builder = geoShapeQuery(name, shape); builder.relation(ShapeRelation.DISJOINT); return builder; diff --git a/server/src/main/java/org/elasticsearch/index/query/TermsQueryBuilder.java b/server/src/main/java/org/elasticsearch/index/query/TermsQueryBuilder.java index f1e9b7647bcd4..5b9ee24eeb565 100644 --- a/server/src/main/java/org/elasticsearch/index/query/TermsQueryBuilder.java +++ b/server/src/main/java/org/elasticsearch/index/query/TermsQueryBuilder.java @@ -390,6 +390,7 @@ protected QueryBuilder doRewrite(QueryRewriteContext queryRewriteContext) { return this; } + @SuppressWarnings("rawtypes") private abstract static class Values extends AbstractCollection implements Writeable { private static Values readFrom(StreamInput in) throws IOException { @@ -477,6 +478,7 @@ public final void clear() { * When users send a query contain a lot of terms, A {@link BytesReference} can help * gc and reduce the cost of {@link #doWriteTo}, which can be slow for lots of terms. */ + @SuppressWarnings("rawtypes") private static class BinaryValues extends Values { private final BytesReference valueRef; @@ -577,6 +579,7 @@ private int consumerHeadersAndGetListSize(StreamInput in) throws IOException { * * TODO: remove in 9.0.0 */ + @SuppressWarnings("rawtypes") private static class ListValues extends Values { private final List values; @@ -611,6 +614,7 @@ public Object[] toArray(Object[] a) { } @Override + @SuppressWarnings("unchecked") public Object[] toArray(IntFunction generator) { return values.toArray(generator); } diff --git a/server/src/main/java/org/elasticsearch/index/query/functionscore/ScoreFunctionBuilders.java b/server/src/main/java/org/elasticsearch/index/query/functionscore/ScoreFunctionBuilders.java index 11b0800cebd14..66be29cac0c58 100644 --- a/server/src/main/java/org/elasticsearch/index/query/functionscore/ScoreFunctionBuilders.java +++ b/server/src/main/java/org/elasticsearch/index/query/functionscore/ScoreFunctionBuilders.java @@ -69,7 +69,7 @@ public static RandomScoreFunctionBuilder randomFunction() { } public static WeightBuilder weightFactorFunction(float weight) { - return (WeightBuilder)(new WeightBuilder().setWeight(weight)); + return new WeightBuilder().setWeight(weight); } public static FieldValueFactorFunctionBuilder fieldValueFactorFunction(String fieldName) { diff --git a/server/src/main/java/org/elasticsearch/index/reindex/BulkByScrollTask.java b/server/src/main/java/org/elasticsearch/index/reindex/BulkByScrollTask.java index 27edf252d6a07..f43bc75b6c28d 100644 --- a/server/src/main/java/org/elasticsearch/index/reindex/BulkByScrollTask.java +++ b/server/src/main/java/org/elasticsearch/index/reindex/BulkByScrollTask.java @@ -367,11 +367,10 @@ public static class Status implements Task.Status, SuccessfullyProcessed { FIELDS_SET.add(SLICES_FIELD); } - @SuppressWarnings("unchecked") static final ConstructingObjectParser, Void> RETRIES_PARSER = new ConstructingObjectParser<>( "bulk_by_scroll_task_status_retries", true, - a -> new Tuple(a[0], a[1]) + a -> new Tuple<>(((Long) a[0]), (Long) a[1]) ); static { RETRIES_PARSER.declareLong(constructorArg(), new ParseField(RETRIES_BULK_FIELD)); diff --git a/server/src/main/java/org/elasticsearch/rest/action/RestActions.java b/server/src/main/java/org/elasticsearch/rest/action/RestActions.java index d4edc9a4b9687..dfe80e2b779a7 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/RestActions.java +++ b/server/src/main/java/org/elasticsearch/rest/action/RestActions.java @@ -163,6 +163,7 @@ public static void buildNodesHeader(final XContentBuilder builder, final Params * @return Never {@code null}. * @throws IOException if building the response causes an issue */ + @SuppressWarnings({"rawtypes", "unchecked"}) public static BytesRestResponse nodesResponse(final XContentBuilder builder, final Params params, final NodesResponse response) @@ -214,7 +215,7 @@ public static QueryBuilder getQueryContent(String fieldName, XContentParser requ * }); * */ - public static class NodesResponseRestListener + public static class NodesResponseRestListener & ToXContent> extends RestBuilderListener { public NodesResponseRestListener(RestChannel channel) { diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestClusterUpdateSettingsAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestClusterUpdateSettingsAction.java index a3313ae1a6438..dd6503112e814 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestClusterUpdateSettingsAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestClusterUpdateSettingsAction.java @@ -40,6 +40,7 @@ public String getName() { } @Override + @SuppressWarnings("unchecked") public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException { final ClusterUpdateSettingsRequest clusterUpdateSettingsRequest = Requests.clusterUpdateSettingsRequest(); clusterUpdateSettingsRequest.timeout(request.paramAsTime("timeout", clusterUpdateSettingsRequest.timeout())); @@ -50,10 +51,10 @@ public RestChannelConsumer prepareRequest(final RestRequest request, final NodeC source = parser.map(); } if (source.containsKey(TRANSIENT)) { - clusterUpdateSettingsRequest.transientSettings((Map) source.get(TRANSIENT)); + clusterUpdateSettingsRequest.transientSettings((Map) source.get(TRANSIENT)); } if (source.containsKey(PERSISTENT)) { - clusterUpdateSettingsRequest.persistentSettings((Map) source.get(PERSISTENT)); + clusterUpdateSettingsRequest.persistentSettings((Map) source.get(PERSISTENT)); } return channel -> client.admin().cluster().updateSettings(clusterUpdateSettingsRequest, new RestToXContentListener<>(channel)); diff --git a/server/src/main/java/org/elasticsearch/rest/action/cat/RestTable.java b/server/src/main/java/org/elasticsearch/rest/action/cat/RestTable.java index df388e82d37a3..d944d82df5413 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/cat/RestTable.java +++ b/server/src/main/java/org/elasticsearch/rest/action/cat/RestTable.java @@ -419,6 +419,7 @@ static class TableIndexComparator implements Comparator { this.ordering = ordering; } + @SuppressWarnings("unchecked") private int compareCell(Object o1, Object o2) { if (o1 == null && o2 == null) { return 0; diff --git a/server/src/main/java/org/elasticsearch/search/sort/MinAndMax.java b/server/src/main/java/org/elasticsearch/search/sort/MinAndMax.java index af7b88ca81ce7..62872adda2fcd 100644 --- a/server/src/main/java/org/elasticsearch/search/sort/MinAndMax.java +++ b/server/src/main/java/org/elasticsearch/search/sort/MinAndMax.java @@ -58,8 +58,8 @@ public T getMax() { /** * Return a {@link Comparator} for {@link MinAndMax} values according to the provided {@link SortOrder}. */ - public static Comparator> getComparator(SortOrder order) { - Comparator> cmp = order == SortOrder.ASC ? + public static > Comparator> getComparator(SortOrder order) { + Comparator> cmp = order == SortOrder.ASC ? Comparator.comparing(MinAndMax::getMin) : Comparator.comparing(MinAndMax::getMax); if (order == SortOrder.DESC) { cmp = cmp.reversed(); diff --git a/server/src/test/java/org/elasticsearch/action/search/CanMatchPreFilterSearchPhaseTests.java b/server/src/test/java/org/elasticsearch/action/search/CanMatchPreFilterSearchPhaseTests.java index a7a0f24451808..0ae9d743e6143 100644 --- a/server/src/test/java/org/elasticsearch/action/search/CanMatchPreFilterSearchPhaseTests.java +++ b/server/src/test/java/org/elasticsearch/action/search/CanMatchPreFilterSearchPhaseTests.java @@ -65,6 +65,7 @@ import java.util.stream.IntStream; import static org.elasticsearch.action.search.SearchAsyncActionTests.getShardsIter; +import static org.elasticsearch.core.Types.forciblyCast; import static org.hamcrest.Matchers.equalTo; import static org.mockito.Mockito.mock; @@ -353,7 +354,7 @@ public void run() { latch.await(); ShardId[] expected = IntStream.range(0, shardIds.size()) .boxed() - .sorted(Comparator.comparing(minAndMaxes::get, MinAndMax.getComparator(order)).thenComparing(shardIds::get)) + .sorted(Comparator.comparing(minAndMaxes::get, forciblyCast(MinAndMax.getComparator(order))).thenComparing(shardIds::get)) .map(shardIds::get) .toArray(ShardId[]::new); if (shardToSkip.size() == expected.length) { diff --git a/server/src/test/java/org/elasticsearch/cluster/action/shard/ShardStartedClusterStateTaskExecutorTests.java b/server/src/test/java/org/elasticsearch/cluster/action/shard/ShardStartedClusterStateTaskExecutorTests.java index 6655a94efd5ab..627b89010a847 100644 --- a/server/src/test/java/org/elasticsearch/cluster/action/shard/ShardStartedClusterStateTaskExecutorTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/action/shard/ShardStartedClusterStateTaskExecutorTests.java @@ -64,7 +64,7 @@ public void setUp() throws Exception { public void testEmptyTaskListProducesSameClusterState() throws Exception { final ClusterState clusterState = stateWithNoShard(); - final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, Collections.emptyList()); + final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, Collections.emptyList()); assertSame(clusterState, result.resultingState); } @@ -77,11 +77,11 @@ public void testNonExistentIndexMarkedAsSuccessful() throws Exception { "test", ShardLongFieldRange.UNKNOWN); - final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, singletonList(entry)); + final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, singletonList(entry)); assertSame(clusterState, result.resultingState); assertThat(result.executionResults.size(), equalTo(1)); assertThat(result.executionResults.containsKey(entry), is(true)); - assertThat(((ClusterStateTaskExecutor.TaskResult) result.executionResults.get(entry)).isSuccess(), is(true)); + assertThat(result.executionResults.get(entry).isSuccess(), is(true)); } public void testNonExistentShardsAreMarkedAsSuccessful() throws Exception { @@ -109,12 +109,12 @@ public void testNonExistentShardsAreMarkedAsSuccessful() throws Exception { ).collect(Collectors.toList()); - final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, tasks); + final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, tasks); assertSame(clusterState, result.resultingState); assertThat(result.executionResults.size(), equalTo(tasks.size())); tasks.forEach(task -> { assertThat(result.executionResults.containsKey(task), is(true)); - assertThat(((ClusterStateTaskExecutor.TaskResult) result.executionResults.get(task)).isSuccess(), is(true)); + assertThat(result.executionResults.get(task).isSuccess(), is(true)); }); } @@ -137,12 +137,12 @@ public void testNonInitializingShardAreMarkedAsSuccessful() throws Exception { return new StartedShardEntry(shardId, allocationId, primaryTerm, "test", ShardLongFieldRange.UNKNOWN); }).collect(Collectors.toList()); - final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, tasks); + final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, tasks); assertSame(clusterState, result.resultingState); assertThat(result.executionResults.size(), equalTo(tasks.size())); tasks.forEach(task -> { assertThat(result.executionResults.containsKey(task), is(true)); - assertThat(((ClusterStateTaskExecutor.TaskResult) result.executionResults.get(task)).isSuccess(), is(true)); + assertThat(result.executionResults.get(task).isSuccess(), is(true)); }); } @@ -163,12 +163,12 @@ public void testStartedShards() throws Exception { final String replicaAllocationId = replicaShard.allocationId().getId(); tasks.add(new StartedShardEntry(shardId, replicaAllocationId, primaryTerm, "test", ShardLongFieldRange.UNKNOWN)); } - final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, tasks); + final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, tasks); assertNotSame(clusterState, result.resultingState); assertThat(result.executionResults.size(), equalTo(tasks.size())); tasks.forEach(task -> { assertThat(result.executionResults.containsKey(task), is(true)); - assertThat(((ClusterStateTaskExecutor.TaskResult) result.executionResults.get(task)).isSuccess(), is(true)); + assertThat(result.executionResults.get(task).isSuccess(), is(true)); final IndexShardRoutingTable shardRoutingTable = result.resultingState.routingTable().shardRoutingTable(task.shardId); assertThat(shardRoutingTable.getByAllocationId(task.allocationId).state(), is(ShardRoutingState.STARTED)); @@ -189,12 +189,12 @@ public void testDuplicateStartsAreOkay() throws Exception { .mapToObj(i -> new StartedShardEntry(shardId, allocationId, primaryTerm, "test", ShardLongFieldRange.UNKNOWN)) .collect(Collectors.toList()); - final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, tasks); + final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, tasks); assertNotSame(clusterState, result.resultingState); assertThat(result.executionResults.size(), equalTo(tasks.size())); tasks.forEach(task -> { assertThat(result.executionResults.containsKey(task), is(true)); - assertThat(((ClusterStateTaskExecutor.TaskResult) result.executionResults.get(task)).isSuccess(), is(true)); + assertThat(result.executionResults.get(task).isSuccess(), is(true)); final IndexShardRoutingTable shardRoutingTable = result.resultingState.routingTable().shardRoutingTable(task.shardId); assertThat(shardRoutingTable.getByAllocationId(task.allocationId).state(), is(ShardRoutingState.STARTED)); @@ -224,11 +224,11 @@ public void testPrimaryTermsMismatch() throws Exception { "primary terms does not match on primary", ShardLongFieldRange.UNKNOWN); - final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, singletonList(task)); + final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, singletonList(task)); assertSame(clusterState, result.resultingState); assertThat(result.executionResults.size(), equalTo(1)); assertThat(result.executionResults.containsKey(task), is(true)); - assertThat(((ClusterStateTaskExecutor.TaskResult) result.executionResults.get(task)).isSuccess(), is(true)); + assertThat(result.executionResults.get(task).isSuccess(), is(true)); IndexShardRoutingTable shardRoutingTable = result.resultingState.routingTable().shardRoutingTable(task.shardId); assertThat(shardRoutingTable.getByAllocationId(task.allocationId).state(), is(ShardRoutingState.INITIALIZING)); assertSame(clusterState, result.resultingState); @@ -237,11 +237,11 @@ public void testPrimaryTermsMismatch() throws Exception { final StartedShardEntry task = new StartedShardEntry( shardId, primaryAllocationId, primaryTerm, "primary terms match on primary", ShardLongFieldRange.UNKNOWN); - final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, singletonList(task)); + final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, singletonList(task)); assertNotSame(clusterState, result.resultingState); assertThat(result.executionResults.size(), equalTo(1)); assertThat(result.executionResults.containsKey(task), is(true)); - assertThat(((ClusterStateTaskExecutor.TaskResult) result.executionResults.get(task)).isSuccess(), is(true)); + assertThat(result.executionResults.get(task).isSuccess(), is(true)); IndexShardRoutingTable shardRoutingTable = result.resultingState.routingTable().shardRoutingTable(task.shardId); assertThat(shardRoutingTable.getByAllocationId(task.allocationId).state(), is(ShardRoutingState.STARTED)); assertNotSame(clusterState, result.resultingState); @@ -255,11 +255,11 @@ public void testPrimaryTermsMismatch() throws Exception { final StartedShardEntry task = new StartedShardEntry( shardId, replicaAllocationId, replicaPrimaryTerm, "test on replica", ShardLongFieldRange.UNKNOWN); - final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, singletonList(task)); + final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, singletonList(task)); assertNotSame(clusterState, result.resultingState); assertThat(result.executionResults.size(), equalTo(1)); assertThat(result.executionResults.containsKey(task), is(true)); - assertThat(((ClusterStateTaskExecutor.TaskResult) result.executionResults.get(task)).isSuccess(), is(true)); + assertThat(result.executionResults.get(task).isSuccess(), is(true)); IndexShardRoutingTable shardRoutingTable = result.resultingState.routingTable().shardRoutingTable(task.shardId); assertThat(shardRoutingTable.getByAllocationId(task.allocationId).state(), is(ShardRoutingState.STARTED)); assertNotSame(clusterState, result.resultingState); @@ -288,12 +288,12 @@ public void testExpandsTimestampRange() throws Exception { final String replicaAllocationId = replicaShard.allocationId().getId(); tasks.add(new StartedShardEntry(shardId, replicaAllocationId, primaryTerm, "test", shardTimestampRange)); } - final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, tasks); + final ClusterStateTaskExecutor.ClusterTasksResult result = executeTasks(clusterState, tasks); assertNotSame(clusterState, result.resultingState); assertThat(result.executionResults.size(), equalTo(tasks.size())); tasks.forEach(task -> { assertThat(result.executionResults.containsKey(task), is(true)); - assertThat(((ClusterStateTaskExecutor.TaskResult) result.executionResults.get(task)).isSuccess(), is(true)); + assertThat(result.executionResults.get(task).isSuccess(), is(true)); final IndexShardRoutingTable shardRoutingTable = result.resultingState.routingTable().shardRoutingTable(task.shardId); assertThat(shardRoutingTable.getByAllocationId(task.allocationId).state(), is(ShardRoutingState.STARTED)); @@ -311,7 +311,7 @@ public void testExpandsTimestampRange() throws Exception { }); } - private ClusterStateTaskExecutor.ClusterTasksResult executeTasks(final ClusterState state, + private ClusterStateTaskExecutor.ClusterTasksResult executeTasks(final ClusterState state, final List tasks) throws Exception { final ClusterStateTaskExecutor.ClusterTasksResult result = executor.execute(state, tasks); assertThat(result, notNullValue()); diff --git a/server/src/test/java/org/elasticsearch/cluster/metadata/IndexNameExpressionResolverTests.java b/server/src/test/java/org/elasticsearch/cluster/metadata/IndexNameExpressionResolverTests.java index 2d46154f5aba5..f0d3816218789 100644 --- a/server/src/test/java/org/elasticsearch/cluster/metadata/IndexNameExpressionResolverTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/metadata/IndexNameExpressionResolverTests.java @@ -1606,7 +1606,7 @@ public void testConcreteWriteIndexWithNoWriteIndexWithSingleIndex() { .indexAliases(state, "test-0", x -> true, true, new HashSet<>(Arrays.asList("test-0", "test-alias"))); Arrays.sort(strings); assertArrayEquals(new String[] {"test-alias"}, strings); - DocWriteRequest request = randomFrom(new IndexRequest("test-alias"), + DocWriteRequest request = randomFrom(new IndexRequest("test-alias"), new UpdateRequest("test-alias", "_id"), new DeleteRequest("test-alias")); IllegalArgumentException exception = expectThrows(IllegalArgumentException.class, () -> indexNameExpressionResolver.concreteWriteIndex(state, request.indicesOptions(), request.indices()[0], false, false)); @@ -1626,7 +1626,7 @@ public void testConcreteWriteIndexWithNoWriteIndexWithMultipleIndices() { .indexAliases(state, "test-0", x -> true, true, new HashSet<>(Arrays.asList("test-0", "test-1", "test-alias"))); Arrays.sort(strings); assertArrayEquals(new String[] {"test-alias"}, strings); - DocWriteRequest request = randomFrom(new IndexRequest("test-alias"), + DocWriteRequest request = randomFrom(new IndexRequest("test-alias"), new UpdateRequest("test-alias", "_id"), new DeleteRequest("test-alias")); IllegalArgumentException exception = expectThrows(IllegalArgumentException.class, () -> indexNameExpressionResolver.concreteWriteIndex(state, request.indicesOptions(), request.indices()[0], false, false)); diff --git a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexServiceTests.java b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexServiceTests.java index e383c083ce03f..19c6d0af06755 100644 --- a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexServiceTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexServiceTests.java @@ -546,6 +546,7 @@ public void testValidateDotIndex() { })); } + @SuppressWarnings("unchecked") public void testParseMappingsAppliesDataFromTemplateAndRequest() throws Exception { IndexTemplateMetadata templateMetadata = addMatchingTemplate(templateBuilder -> { templateBuilder.putAlias(AliasMetadata.builder("alias1")); @@ -608,6 +609,7 @@ public void testAliasNameWithMathExpression() { assertEquals("date-math-based-2021-01-01", aliasMetadata.get(0).alias() ); } + @SuppressWarnings("unchecked") public void testRequestDataHavePriorityOverTemplateData() throws Exception { CompressedXContent templateMapping = createMapping("test", "text"); CompressedXContent reqMapping = createMapping("test", "keyword"); diff --git a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataTests.java b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataTests.java index 6dff09a6a9f74..10a632b6054c8 100644 --- a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataTests.java @@ -922,7 +922,7 @@ public static void assertMultiField(Map properties, String field "}"; public void testTransientSettingsOverridePersistentSettings() { - final Setting setting = Setting.simpleString("key"); + final Setting setting = Setting.simpleString("key"); final Metadata metadata = Metadata.builder() .persistentSettings(Settings.builder().put(setting.getKey(), "persistent-value").build()) .transientSettings(Settings.builder().put(setting.getKey(), "transient-value").build()).build(); diff --git a/server/src/test/java/org/elasticsearch/cluster/serialization/DiffableTests.java b/server/src/test/java/org/elasticsearch/cluster/serialization/DiffableTests.java index ee631b1db27e6..2edf28a07da83 100644 --- a/server/src/test/java/org/elasticsearch/cluster/serialization/DiffableTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/serialization/DiffableTests.java @@ -48,12 +48,15 @@ protected TestDiffable createValue(Integer key, boolean before) { } @Override - protected MapDiff diff(Map before, Map after) { + protected MapDiff> diff( + Map before, + Map after + ) { return DiffableUtils.diff(before, after, keySerializer); } @Override - protected MapDiff readDiff(StreamInput in) throws IOException { + protected MapDiff> readDiff(StreamInput in) throws IOException { return useProtoForDiffableSerialization ? DiffableUtils.readJdkMapDiff(in, keySerializer, TestDiffable::readFrom, TestDiffable::readDiffFrom) : DiffableUtils.readJdkMapDiff(in, keySerializer, diffableValueSerializer()); @@ -72,12 +75,12 @@ protected String createValue(Integer key, boolean before) { } @Override - protected MapDiff diff(Map before, Map after) { + protected MapDiff> diff(Map before, Map after) { return DiffableUtils.diff(before, after, keySerializer, nonDiffableValueSerializer()); } @Override - protected MapDiff readDiff(StreamInput in) throws IOException { + protected MapDiff> readDiff(StreamInput in) throws IOException { return DiffableUtils.readJdkMapDiff(in, keySerializer, nonDiffableValueSerializer()); } }.execute(); @@ -96,12 +99,15 @@ protected TestDiffable createValue(Integer key, boolean before) { } @Override - protected MapDiff diff(ImmutableOpenMap before, ImmutableOpenMap after) { + protected MapDiff> diff( + ImmutableOpenMap before, + ImmutableOpenMap after + ) { return DiffableUtils.diff(before, after, keySerializer); } @Override - protected MapDiff readDiff(StreamInput in) throws IOException { + protected MapDiff> readDiff(StreamInput in) throws IOException { return useProtoForDiffableSerialization ? DiffableUtils.readImmutableOpenMapDiff(in, keySerializer, new DiffableUtils.DiffableValueReader<>(TestDiffable::readFrom, TestDiffable::readDiffFrom)) @@ -121,12 +127,15 @@ protected String createValue(Integer key, boolean before) { } @Override - protected MapDiff diff(ImmutableOpenMap before, ImmutableOpenMap after) { + protected MapDiff> diff( + ImmutableOpenMap before, + ImmutableOpenMap after + ) { return DiffableUtils.diff(before, after, keySerializer, nonDiffableValueSerializer()); } @Override - protected MapDiff readDiff(StreamInput in) throws IOException { + protected MapDiff> readDiff(StreamInput in) throws IOException { return DiffableUtils.readImmutableOpenMapDiff(in, keySerializer, nonDiffableValueSerializer()); } }.execute(); @@ -145,12 +154,15 @@ protected TestDiffable createValue(Integer key, boolean before) { } @Override - protected MapDiff diff(ImmutableOpenIntMap before, ImmutableOpenIntMap after) { + protected MapDiff> diff( + ImmutableOpenIntMap before, + ImmutableOpenIntMap after + ) { return DiffableUtils.diff(before, after, keySerializer); } @Override - protected MapDiff readDiff(StreamInput in) throws IOException { + protected MapDiff> readDiff(StreamInput in) throws IOException { return useProtoForDiffableSerialization ? DiffableUtils.readImmutableOpenIntMapDiff(in, keySerializer, TestDiffable::readFrom, TestDiffable::readDiffFrom) : DiffableUtils.readImmutableOpenIntMapDiff(in, keySerializer, diffableValueSerializer()); @@ -169,12 +181,15 @@ protected String createValue(Integer key, boolean before) { } @Override - protected MapDiff diff(ImmutableOpenIntMap before, ImmutableOpenIntMap after) { + protected MapDiff> diff( + ImmutableOpenIntMap before, + ImmutableOpenIntMap after + ) { return DiffableUtils.diff(before, after, keySerializer, nonDiffableValueSerializer()); } @Override - protected MapDiff readDiff(StreamInput in) throws IOException { + protected MapDiff> readDiff(StreamInput in) throws IOException { return DiffableUtils.readImmutableOpenIntMapDiff(in, keySerializer, nonDiffableValueSerializer()); } }.execute(); @@ -279,7 +294,7 @@ public void execute() throws IOException { MapDiff diffMap = diff(beforeMap, afterMap); // check properties of diffMap - assertThat(new HashSet(diffMap.getDeletes()), equalTo(keysToRemove)); + assertThat(new HashSet<>(diffMap.getDeletes()), equalTo(keysToRemove)); if (diffableValues()) { assertThat(diffMap.getDiffs().keySet(), equalTo(keysToOverride)); for (Integer key : keysToOverride) { @@ -329,7 +344,7 @@ public void execute() throws IOException { abstract class JdkMapDriver extends MapDriver, V> { @Override - protected Map createMap(Map values) { + protected Map createMap(Map values) { return values; } @@ -347,7 +362,7 @@ protected int size(Map map) { abstract class ImmutableOpenMapDriver extends MapDriver, V> { @Override - protected ImmutableOpenMap createMap(Map values) { + protected ImmutableOpenMap createMap(Map values) { return ImmutableOpenMap.builder().putAll(values).build(); } @@ -366,7 +381,7 @@ protected int size(ImmutableOpenMap map) { abstract class ImmutableOpenIntMapDriver extends MapDriver, V> { @Override - protected ImmutableOpenIntMap createMap(Map values) { + protected ImmutableOpenIntMap createMap(Map values) { return ImmutableOpenIntMap.builder().putAll(values).build(); } diff --git a/server/src/test/java/org/elasticsearch/cluster/service/TaskBatcherTests.java b/server/src/test/java/org/elasticsearch/cluster/service/TaskBatcherTests.java index 40d448fe723c6..19a10eaeff0c8 100644 --- a/server/src/test/java/org/elasticsearch/cluster/service/TaskBatcherTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/service/TaskBatcherTests.java @@ -53,10 +53,11 @@ class TestTaskBatcher extends TaskBatcher { super(logger, threadExecutor); } + @SuppressWarnings("unchecked") @Override protected void run(Object batchingKey, List tasks, String tasksSummary) { - List updateTasks = (List) tasks; - ((TestExecutor) batchingKey).execute(updateTasks.stream().map(t -> t.task).collect(Collectors.toList())); + List updateTasks = (List) tasks; + ((TestExecutor) batchingKey).execute(updateTasks.stream().map(t -> t.task).collect(Collectors.toList())); updateTasks.forEach(updateTask -> updateTask.listener.processed(updateTask.source)); } @@ -77,6 +78,7 @@ class UpdateTask extends BatchedTask { } @Override + @SuppressWarnings("unchecked") public String describeTasks(List tasks) { return ((TestExecutor) batchingKey).describeTasks( tasks.stream().map(BatchedTask::getTask).collect(Collectors.toList())); diff --git a/server/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java b/server/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java index c55e2618daeff..09c22ce707f01 100644 --- a/server/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java +++ b/server/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java @@ -103,6 +103,7 @@ import static com.carrotsearch.randomizedtesting.RandomizedTest.getRandom; import static org.elasticsearch.env.Environment.PATH_HOME_SETTING; +import static org.elasticsearch.test.CheckedFunctionUtils.anyCheckedFunction; import static org.hamcrest.Matchers.notNullValue; import static org.junit.Assert.assertThat; import static org.mockito.Matchers.any; @@ -133,6 +134,7 @@ public class ClusterStateChanges { private final NodeRemovalClusterStateTaskExecutor nodeRemovalExecutor; private final JoinTaskExecutor joinTaskExecutor; + @SuppressWarnings("unchecked") public ClusterStateChanges(NamedXContentRegistry xContentRegistry, ThreadPool threadPool) { ClusterSettings clusterSettings = new ClusterSettings(SETTINGS, ClusterSettings.BUILT_IN_CLUSTER_SETTINGS); allocationService = new AllocationService(new AllocationDeciders( @@ -157,7 +159,7 @@ public ClusterStateChanges(NamedXContentRegistry xContentRegistry, ThreadPool th IndicesService indicesService = mock(IndicesService.class); // MetadataCreateIndexService uses withTempIndexService to check mappings -> fake it here try { - when(indicesService.withTempIndexService(any(IndexMetadata.class), any(CheckedFunction.class))) + when(indicesService.withTempIndexService(any(IndexMetadata.class), anyCheckedFunction())) .then(invocationOnMock -> { IndexService indexService = mock(IndexService.class); IndexMetadata indexMetadata = (IndexMetadata) invocationOnMock.getArguments()[0]; @@ -167,8 +169,7 @@ public ClusterStateChanges(NamedXContentRegistry xContentRegistry, ThreadPool th when(mapperService.documentMapper()).thenReturn(null); when(indexService.getIndexEventListener()).thenReturn(new IndexEventListener() {}); when(indexService.getIndexSortSupplier()).thenReturn(() -> null); - //noinspection unchecked - return ((CheckedFunction) invocationOnMock.getArguments()[1]).apply(indexService); + return ((CheckedFunction) invocationOnMock.getArguments()[1]).apply(indexService); }); } catch (Exception e) { /* diff --git a/server/src/test/java/org/elasticsearch/indices/recovery/RecoverySourceHandlerTests.java b/server/src/test/java/org/elasticsearch/indices/recovery/RecoverySourceHandlerTests.java index ef5144a5732e6..ab0fc8f1cb174 100644 --- a/server/src/test/java/org/elasticsearch/indices/recovery/RecoverySourceHandlerTests.java +++ b/server/src/test/java/org/elasticsearch/indices/recovery/RecoverySourceHandlerTests.java @@ -507,6 +507,7 @@ protected void failEngine(IOException cause) { IOUtils.close(store); } + @SuppressWarnings("unchecked") public void testThrowExceptionOnPrimaryRelocatedBeforePhase1Started() throws IOException { final RecoverySettings recoverySettings = new RecoverySettings(Settings.EMPTY, service); final StartRecoveryRequest request = getStartRecoveryRequest(); @@ -574,6 +575,7 @@ void phase2(long startingSeqNo, long endingSeqNo, Translog.Snapshot snapshot, assertFalse(phase2Called.get()); } + @SuppressWarnings("unchecked") public void testCancellationsDoesNotLeakPrimaryPermits() throws Exception { final CancellableThreads cancellableThreads = new CancellableThreads(); final IndexShard shard = mock(IndexShard.class); diff --git a/server/src/test/java/org/elasticsearch/ingest/IngestServiceTests.java b/server/src/test/java/org/elasticsearch/ingest/IngestServiceTests.java index 1dfee9c6f8c68..6458cfc76cf18 100644 --- a/server/src/test/java/org/elasticsearch/ingest/IngestServiceTests.java +++ b/server/src/test/java/org/elasticsearch/ingest/IngestServiceTests.java @@ -934,7 +934,7 @@ public void testBulkRequestExecutionWithFailures() throws Exception { int numRequest = scaledRandomIntBetween(8, 64); int numIndexRequests = 0; for (int i = 0; i < numRequest; i++) { - DocWriteRequest request; + DocWriteRequest request; if (randomBoolean()) { if (randomBoolean()) { request = new DeleteRequest("_index", "_id"); diff --git a/server/src/test/java/org/elasticsearch/monitor/jvm/JvmGcMonitorServiceSettingsTests.java b/server/src/test/java/org/elasticsearch/monitor/jvm/JvmGcMonitorServiceSettingsTests.java index 24440a6e1fcae..8b16c378b3b19 100644 --- a/server/src/test/java/org/elasticsearch/monitor/jvm/JvmGcMonitorServiceSettingsTests.java +++ b/server/src/test/java/org/elasticsearch/monitor/jvm/JvmGcMonitorServiceSettingsTests.java @@ -80,9 +80,8 @@ public void testMissingSetting() throws InterruptedException { Settings.Builder builder = Settings.builder(); // drop a random setting or two - for (@SuppressWarnings("unchecked") AbstractMap.SimpleEntry entry : randomSubsetOf(randomIntBetween(1, 2), - entries.toArray(new AbstractMap.SimpleEntry[0]))) { - builder.put(entry.getKey(), entry.getValue()); + for (AbstractMap.SimpleEntry entry : randomSubsetOf(randomIntBetween(1, 2), entries)) { + builder.put(entry.getKey(), entry.getValue()); } // we should get an exception that a setting is missing diff --git a/server/src/test/java/org/elasticsearch/persistent/PersistentTasksDecidersTestCase.java b/server/src/test/java/org/elasticsearch/persistent/PersistentTasksDecidersTestCase.java index ff4b22d09841d..0bbf5a696d75e 100644 --- a/server/src/test/java/org/elasticsearch/persistent/PersistentTasksDecidersTestCase.java +++ b/server/src/test/java/org/elasticsearch/persistent/PersistentTasksDecidersTestCase.java @@ -103,6 +103,7 @@ protected static ClusterState createClusterStateWithTasks(final int nbNodes, fin } /** Asserts that the given cluster state contains nbTasks tasks that are assigned **/ + @SuppressWarnings("rawtypes") protected static void assertNbAssignedTasks(final long nbTasks, final ClusterState clusterState) { assertPersistentTasks(nbTasks, clusterState, PersistentTasksCustomMetadata.PersistentTask::isAssigned); } @@ -113,6 +114,7 @@ protected static void assertNbUnassignedTasks(final long nbTasks, final ClusterS } /** Asserts that the cluster state contains nbTasks tasks that verify the given predicate **/ + @SuppressWarnings("rawtypes") protected static void assertPersistentTasks(final long nbTasks, final ClusterState clusterState, final Predicate predicate) { diff --git a/server/src/test/java/org/elasticsearch/plugins/PluginsServiceTests.java b/server/src/test/java/org/elasticsearch/plugins/PluginsServiceTests.java index 6a21be7db67ce..313eb0f26949d 100644 --- a/server/src/test/java/org/elasticsearch/plugins/PluginsServiceTests.java +++ b/server/src/test/java/org/elasticsearch/plugins/PluginsServiceTests.java @@ -12,13 +12,13 @@ import org.apache.lucene.util.Constants; import org.apache.lucene.util.LuceneTestCase; import org.elasticsearch.Version; -import org.elasticsearch.jdk.JarHell; -import org.elasticsearch.core.Tuple; -import org.elasticsearch.core.PathUtils; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.core.PathUtils; +import org.elasticsearch.core.Tuple; import org.elasticsearch.env.Environment; import org.elasticsearch.env.TestEnvironment; import org.elasticsearch.index.IndexModule; +import org.elasticsearch.jdk.JarHell; import org.elasticsearch.test.ESTestCase; import org.hamcrest.Matchers; @@ -71,10 +71,35 @@ public Settings additionalSettings() { public static class FilterablePlugin extends Plugin implements ScriptPlugin {} - static PluginsService newPluginsService(Settings settings, Class... classpathPlugins) { + static PluginsService newPluginsService(Settings settings) { + return new PluginsService( + settings, null, null, + TestEnvironment.newEnvironment(settings).pluginsFile(), List.of() + ); + } + + static PluginsService newPluginsService(Settings settings, Class classpathPlugin) { + return new PluginsService( + settings, null, null, + TestEnvironment.newEnvironment(settings).pluginsFile(), List.of(classpathPlugin) + ); + } + + static PluginsService newPluginsService(Settings settings, List> classpathPlugins) { + return new PluginsService( + settings, null, null, + TestEnvironment.newEnvironment(settings).pluginsFile(), classpathPlugins + ); + } + + static PluginsService newPluginsService( + Settings settings, + Class classpathPlugin1, + Class classpathPlugin2 + ) { return new PluginsService( settings, null, null, - TestEnvironment.newEnvironment(settings).pluginsFile(), Arrays.asList(classpathPlugins) + TestEnvironment.newEnvironment(settings).pluginsFile(), List.of(classpathPlugin1, classpathPlugin2) ); } @@ -136,7 +161,6 @@ public void testHiddenFiles() throws IOException { .build(); final Path hidden = home.resolve("plugins").resolve(".hidden"); Files.createDirectories(hidden); - @SuppressWarnings("unchecked") final IllegalStateException e = expectThrows( IllegalStateException.class, () -> newPluginsService(settings)); @@ -156,7 +180,7 @@ public void testDesktopServicesStoreFiles() throws IOException { final Path desktopServicesStore = plugins.resolve(".DS_Store"); Files.createFile(desktopServicesStore); if (Constants.MAC_OS_X) { - @SuppressWarnings("unchecked") final PluginsService pluginsService = newPluginsService(settings); + final PluginsService pluginsService = newPluginsService(settings); assertNotNull(pluginsService); } else { final IllegalStateException e = expectThrows(IllegalStateException.class, () -> newPluginsService(settings)); @@ -409,9 +433,9 @@ public static class DummyClass2 {} public static class DummyClass3 {} - void makeJar(Path jarFile, Class... classes) throws Exception { + void makeJar(Path jarFile, Class... classes) throws Exception { try (ZipOutputStream out = new ZipOutputStream(Files.newOutputStream(jarFile))) { - for (Class clazz : classes) { + for (Class clazz : classes) { String relativePath = clazz.getCanonicalName().replaceAll("\\.", "/") + ".class"; if (relativePath.contains(PluginsServiceTests.class.getSimpleName())) { // static inner class of this test diff --git a/server/src/test/java/org/elasticsearch/script/ScriptContextInfoTests.java b/server/src/test/java/org/elasticsearch/script/ScriptContextInfoTests.java index 863c2a5f4867f..f8071b21b3965 100644 --- a/server/src/test/java/org/elasticsearch/script/ScriptContextInfoTests.java +++ b/server/src/test/java/org/elasticsearch/script/ScriptContextInfoTests.java @@ -68,7 +68,7 @@ public void testPrimitiveContext() { assertEquals(eparams.get(i).v2(), info.execute.parameters.get(i).name); } assertEquals(2, info.getters.size()); - HashMap getters = new HashMap(Map.of("getByte","byte", "getChar","char")); + HashMap getters = new HashMap<>(Map.of("getByte","byte", "getChar","char")); for (ScriptContextInfo.ScriptMethodInfo getter: info.getters) { assertEquals(0, getter.parameters.size()); String returnType = getters.remove(getter.name); @@ -109,7 +109,7 @@ public void testCustomTypeContext() { assertEquals(eparams.get(i).v2(), info.execute.parameters.get(i).name); } assertEquals(2, info.getters.size()); - HashMap getters = new HashMap(Map.of("getCustom1",ct1, "getCustom2",ct2)); + HashMap getters = new HashMap<>(Map.of("getCustom1",ct1, "getCustom2",ct2)); for (ScriptContextInfo.ScriptMethodInfo getter: info.getters) { assertEquals(0, getter.parameters.size()); String returnType = getters.remove(getter.name); @@ -118,7 +118,7 @@ public void testCustomTypeContext() { } assertEquals(0, getters.size()); - HashMap methods = new HashMap(Map.of("getCustom1",ct1, "getCustom2",ct2, "execute",ct0)); + HashMap methods = new HashMap<>(Map.of("getCustom1",ct1, "getCustom2",ct2, "execute",ct0)); for (ScriptContextInfo.ScriptMethodInfo method: info.methods()) { String returnType = methods.remove(method.name); assertNotNull(returnType); @@ -199,7 +199,7 @@ public void testGetterConditional() { Set getters = new ScriptContextInfo("getter_conditional", GetterConditional.class).getters; assertEquals(2, getters.size()); - HashMap methods = new HashMap(Map.of("getNonDefault1","boolean", "getNonDefault2","float")); + HashMap methods = new HashMap<>(Map.of("getNonDefault1","boolean", "getNonDefault2","float")); for (ScriptContextInfo.ScriptMethodInfo method: getters) { String returnType = methods.remove(method.name); assertNotNull(returnType); diff --git a/server/src/test/java/org/elasticsearch/script/ScriptServiceTests.java b/server/src/test/java/org/elasticsearch/script/ScriptServiceTests.java index 2d2273bf038bf..938d04c1e805a 100644 --- a/server/src/test/java/org/elasticsearch/script/ScriptServiceTests.java +++ b/server/src/test/java/org/elasticsearch/script/ScriptServiceTests.java @@ -489,7 +489,7 @@ public void testFallbackToContextDefaults() throws IOException { assertEquals(ingest.cacheExpireDefault, holder.contextCache.get(name).get().cacheExpire); } - private void assertCompileRejected(String lang, String script, ScriptType scriptType, ScriptContext scriptContext) { + private void assertCompileRejected(String lang, String script, ScriptType scriptType, ScriptContext scriptContext) { try { scriptService.compile(new Script(scriptType, lang, script, Collections.emptyMap()), scriptContext); fail("compile should have been rejected for lang [" + lang + "], " + @@ -499,7 +499,7 @@ private void assertCompileRejected(String lang, String script, ScriptType script } } - private void assertCompileAccepted(String lang, String script, ScriptType scriptType, ScriptContext scriptContext) { + private void assertCompileAccepted(String lang, String script, ScriptType scriptType, ScriptContext scriptContext) { assertThat( scriptService.compile(new Script(scriptType, lang, script, Collections.emptyMap()), scriptContext), notNullValue() diff --git a/server/src/test/java/org/elasticsearch/search/NestedIdentityTests.java b/server/src/test/java/org/elasticsearch/search/NestedIdentityTests.java index 588350627038d..74198942f19f2 100644 --- a/server/src/test/java/org/elasticsearch/search/NestedIdentityTests.java +++ b/server/src/test/java/org/elasticsearch/search/NestedIdentityTests.java @@ -114,7 +114,7 @@ private static NestedIdentity mutate(NestedIdentity original) { } List> mutations = new ArrayList<>(); int offset = original.getOffset(); - NestedIdentity child = (NestedIdentity) original.getChild(); + NestedIdentity child = original.getChild(); String fieldName = original.getField().string(); mutations.add(() -> new NestedIdentity(original.getField().string() + "_prefix", offset, child)); diff --git a/server/src/test/java/org/elasticsearch/search/SearchModuleTests.java b/server/src/test/java/org/elasticsearch/search/SearchModuleTests.java index 2c2d4c6381876..a978c99dba098 100644 --- a/server/src/test/java/org/elasticsearch/search/SearchModuleTests.java +++ b/server/src/test/java/org/elasticsearch/search/SearchModuleTests.java @@ -605,13 +605,14 @@ public String getWriteableName() { } } - private static class TestSuggestion extends Suggestion { + @SuppressWarnings("rawtypes") + private static class TestSuggestion extends Suggestion { TestSuggestion(StreamInput in) throws IOException { super(in); } @Override - protected Entry newEntry(StreamInput in) throws IOException { + protected T newEntry(StreamInput in) throws IOException { return null; } diff --git a/server/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsAggregatorTests.java b/server/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsAggregatorTests.java index 9efa40e469ebc..f969f24d55ae1 100644 --- a/server/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsAggregatorTests.java +++ b/server/src/test/java/org/elasticsearch/search/aggregations/metrics/TopHitsAggregatorTests.java @@ -65,7 +65,7 @@ public void testTopLevel() throws Exception { public void testNoResults() throws Exception { TopHits result = (TopHits) testCase(new MatchNoDocsQuery(), topHits("_name").sort("string", SortOrder.DESC)); - SearchHits searchHits = ((TopHits) result).getHits(); + SearchHits searchHits = result.getHits(); assertEquals(0L, searchHits.getTotalHits().value); assertFalse(AggregationInspectionHelper.hasValue(((InternalTopHits)result))); } diff --git a/server/src/test/java/org/elasticsearch/search/lookup/LeafStoredFieldsLookupTests.java b/server/src/test/java/org/elasticsearch/search/lookup/LeafStoredFieldsLookupTests.java index a744a70819400..536b649e8fd2b 100644 --- a/server/src/test/java/org/elasticsearch/search/lookup/LeafStoredFieldsLookupTests.java +++ b/server/src/test/java/org/elasticsearch/search/lookup/LeafStoredFieldsLookupTests.java @@ -42,7 +42,7 @@ public void setUp() throws Exception { } public void testBasicLookup() { - FieldLookup fieldLookup = (FieldLookup) fieldsLookup.get("field"); + FieldLookup fieldLookup = fieldsLookup.get("field"); assertEquals("field", fieldLookup.fieldType().name()); List values = fieldLookup.getValues(); @@ -52,7 +52,7 @@ public void testBasicLookup() { } public void testLookupWithFieldAlias() { - FieldLookup fieldLookup = (FieldLookup) fieldsLookup.get("alias"); + FieldLookup fieldLookup = fieldsLookup.get("alias"); assertEquals("field", fieldLookup.fieldType().name()); List values = fieldLookup.getValues(); diff --git a/server/src/test/java/org/elasticsearch/search/sort/FieldSortBuilderTests.java b/server/src/test/java/org/elasticsearch/search/sort/FieldSortBuilderTests.java index ac057fbe7724a..0996d9d8e3c8d 100644 --- a/server/src/test/java/org/elasticsearch/search/sort/FieldSortBuilderTests.java +++ b/server/src/test/java/org/elasticsearch/search/sort/FieldSortBuilderTests.java @@ -470,7 +470,8 @@ public void testGetMaxNumericSortValue() throws IOException { try (Directory dir = newDirectory()) { int numDocs = randomIntBetween(10, 30); - final Comparable[] values = new Comparable[numDocs]; + @SuppressWarnings("rawtypes") + final Comparable[] values = new Comparable[numDocs]; try (RandomIndexWriter writer = new RandomIndexWriter(random(), dir)) { for (int i = 0; i < numDocs; i++) { Document doc = new Document(); diff --git a/server/src/test/java/org/elasticsearch/search/sort/GeoDistanceSortBuilderTests.java b/server/src/test/java/org/elasticsearch/search/sort/GeoDistanceSortBuilderTests.java index 8d302e9d401d9..966967e21e348 100644 --- a/server/src/test/java/org/elasticsearch/search/sort/GeoDistanceSortBuilderTests.java +++ b/server/src/test/java/org/elasticsearch/search/sort/GeoDistanceSortBuilderTests.java @@ -561,8 +561,7 @@ public QueryBuilder doRewrite(QueryRewriteContext queryRewriteContext) throws IO } }; sortBuilder.setNestedSort(new NestedSortBuilder("path").setFilter(rangeQuery)); - GeoDistanceSortBuilder rewritten = (GeoDistanceSortBuilder) sortBuilder - .rewrite(createMockSearchExecutionContext()); + GeoDistanceSortBuilder rewritten = sortBuilder.rewrite(createMockSearchExecutionContext()); assertNotSame(rangeQuery, rewritten.getNestedSort().getFilter()); } diff --git a/server/src/test/java/org/elasticsearch/search/suggest/SuggestTests.java b/server/src/test/java/org/elasticsearch/search/suggest/SuggestTests.java index c35efd601a1bd..13a9d40bde2da 100644 --- a/server/src/test/java/org/elasticsearch/search/suggest/SuggestTests.java +++ b/server/src/test/java/org/elasticsearch/search/suggest/SuggestTests.java @@ -103,7 +103,7 @@ public void testFromXContent() throws IOException { assertNull(parser.nextToken()); } assertEquals(suggest.size(), parsed.size()); - for (Suggestion suggestion : suggest) { + for (Suggestion suggestion : suggest) { Suggestion> parsedSuggestion = parsed.getSuggestion(suggestion.getName()); assertNotNull(parsedSuggestion); assertEquals(suggestion.getClass(), parsedSuggestion.getClass()); diff --git a/server/src/test/java/org/elasticsearch/search/suggest/SuggestionEntryTests.java b/server/src/test/java/org/elasticsearch/search/suggest/SuggestionEntryTests.java index 9f0631775048d..8768b8ce37e28 100644 --- a/server/src/test/java/org/elasticsearch/search/suggest/SuggestionEntryTests.java +++ b/server/src/test/java/org/elasticsearch/search/suggest/SuggestionEntryTests.java @@ -30,12 +30,13 @@ import static org.elasticsearch.common.xcontent.XContentHelper.toXContent; import static org.elasticsearch.common.xcontent.XContentParserUtils.ensureExpectedToken; +import static org.elasticsearch.core.Types.forciblyCast; import static org.elasticsearch.test.XContentTestUtils.insertRandomFields; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertToXContentEquivalent; public class SuggestionEntryTests extends ESTestCase { - private static final Map, Function> ENTRY_PARSERS = new HashMap<>(); + private static final Map>, Function>> ENTRY_PARSERS = new HashMap<>(); static { ENTRY_PARSERS.put(TermSuggestion.Entry.class, TermSuggestion.Entry::fromXContent); ENTRY_PARSERS.put(PhraseSuggestion.Entry.class, PhraseSuggestion.Entry::fromXContent); @@ -46,27 +47,27 @@ public class SuggestionEntryTests extends ESTestCase { * Create a randomized Suggestion.Entry */ @SuppressWarnings("unchecked") - public static Entry createTestItem(Class entryType) { + public static Entry createTestItem(Class> entryType) { Text entryText = new Text(randomAlphaOfLengthBetween(5, 15)); int offset = randomInt(); int length = randomInt(); - Entry entry; + Entry entry; Supplier