Skip to content

Commit 7140d18

Browse files
committed
Fix IntelliJ query builder type inference issues
Relates #15429
1 parent 5a91ad1 commit 7140d18

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

core/src/main/java/org/elasticsearch/search/SearchModule.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.elasticsearch.common.geo.builders.ShapeBuilder;
3434
import org.elasticsearch.common.inject.AbstractModule;
3535
import org.elasticsearch.common.inject.multibindings.Multibinder;
36+
import org.elasticsearch.common.io.stream.NamedWriteable;
3637
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
3738
import org.elasticsearch.common.settings.Settings;
3839
import org.elasticsearch.index.query.BoolQueryParser;
@@ -283,14 +284,15 @@ public void registerSuggester(String key, Class<? extends Suggester> suggester)
283284
/**
284285
* Register a new ScoreFunctionParser.
285286
*/
286-
public void registerFunctionScoreParser(ScoreFunctionParser<?> parser) {
287+
public void registerFunctionScoreParser(ScoreFunctionParser<? extends ScoreFunctionBuilder> parser) {
287288
for (String name: parser.getNames()) {
288289
Object oldValue = functionScoreParsers.putIfAbsent(name, parser);
289290
if (oldValue != null) {
290291
throw new IllegalArgumentException("Function score parser [" + oldValue + "] already registered for name [" + name + "]");
291292
}
292293
}
293-
namedWriteableRegistry.registerPrototype(ScoreFunctionBuilder.class, parser.getBuilderPrototype());
294+
@SuppressWarnings("unchecked") NamedWriteable<? extends ScoreFunctionBuilder> sfb = parser.getBuilderPrototype();
295+
namedWriteableRegistry.registerPrototype(ScoreFunctionBuilder.class, sfb);
294296
}
295297

296298
public void registerQueryParser(Supplier<QueryParser<?>> parser) {
@@ -354,14 +356,15 @@ protected void configureFetchSubPhase() {
354356
public IndicesQueriesRegistry buildQueryParserRegistry() {
355357
Map<String, QueryParser<?>> queryParsersMap = new HashMap<>();
356358
for (Supplier<QueryParser<?>> parserSupplier : queryParsers) {
357-
QueryParser<?> parser = parserSupplier.get();
359+
QueryParser<? extends QueryBuilder> parser = parserSupplier.get();
358360
for (String name: parser.names()) {
359361
Object oldValue = queryParsersMap.putIfAbsent(name, parser);
360362
if (oldValue != null) {
361363
throw new IllegalArgumentException("Query parser [" + oldValue + "] already registered for name [" + name + "] while trying to register [" + parser + "]");
362364
}
363365
}
364-
namedWriteableRegistry.registerPrototype(QueryBuilder.class, parser.getBuilderPrototype());
366+
@SuppressWarnings("unchecked") NamedWriteable<? extends QueryBuilder> qb = parser.getBuilderPrototype();
367+
namedWriteableRegistry.registerPrototype(QueryBuilder.class, qb);
365368
}
366369
return new IndicesQueriesRegistry(settings, queryParsersMap);
367370
}

0 commit comments

Comments
 (0)