|
33 | 33 | import org.elasticsearch.common.geo.builders.ShapeBuilder;
|
34 | 34 | import org.elasticsearch.common.inject.AbstractModule;
|
35 | 35 | import org.elasticsearch.common.inject.multibindings.Multibinder;
|
| 36 | +import org.elasticsearch.common.io.stream.NamedWriteable; |
36 | 37 | import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
37 | 38 | import org.elasticsearch.common.settings.Settings;
|
38 | 39 | import org.elasticsearch.index.query.BoolQueryParser;
|
@@ -283,14 +284,15 @@ public void registerSuggester(String key, Class<? extends Suggester> suggester)
|
283 | 284 | /**
|
284 | 285 | * Register a new ScoreFunctionParser.
|
285 | 286 | */
|
286 |
| - public void registerFunctionScoreParser(ScoreFunctionParser<?> parser) { |
| 287 | + public void registerFunctionScoreParser(ScoreFunctionParser<? extends ScoreFunctionBuilder> parser) { |
287 | 288 | for (String name: parser.getNames()) {
|
288 | 289 | Object oldValue = functionScoreParsers.putIfAbsent(name, parser);
|
289 | 290 | if (oldValue != null) {
|
290 | 291 | throw new IllegalArgumentException("Function score parser [" + oldValue + "] already registered for name [" + name + "]");
|
291 | 292 | }
|
292 | 293 | }
|
293 |
| - namedWriteableRegistry.registerPrototype(ScoreFunctionBuilder.class, parser.getBuilderPrototype()); |
| 294 | + @SuppressWarnings("unchecked") NamedWriteable<? extends ScoreFunctionBuilder> sfb = parser.getBuilderPrototype(); |
| 295 | + namedWriteableRegistry.registerPrototype(ScoreFunctionBuilder.class, sfb); |
294 | 296 | }
|
295 | 297 |
|
296 | 298 | public void registerQueryParser(Supplier<QueryParser<?>> parser) {
|
@@ -354,14 +356,15 @@ protected void configureFetchSubPhase() {
|
354 | 356 | public IndicesQueriesRegistry buildQueryParserRegistry() {
|
355 | 357 | Map<String, QueryParser<?>> queryParsersMap = new HashMap<>();
|
356 | 358 | for (Supplier<QueryParser<?>> parserSupplier : queryParsers) {
|
357 |
| - QueryParser<?> parser = parserSupplier.get(); |
| 359 | + QueryParser<? extends QueryBuilder> parser = parserSupplier.get(); |
358 | 360 | for (String name: parser.names()) {
|
359 | 361 | Object oldValue = queryParsersMap.putIfAbsent(name, parser);
|
360 | 362 | if (oldValue != null) {
|
361 | 363 | throw new IllegalArgumentException("Query parser [" + oldValue + "] already registered for name [" + name + "] while trying to register [" + parser + "]");
|
362 | 364 | }
|
363 | 365 | }
|
364 |
| - namedWriteableRegistry.registerPrototype(QueryBuilder.class, parser.getBuilderPrototype()); |
| 366 | + @SuppressWarnings("unchecked") NamedWriteable<? extends QueryBuilder> qb = parser.getBuilderPrototype(); |
| 367 | + namedWriteableRegistry.registerPrototype(QueryBuilder.class, qb); |
365 | 368 | }
|
366 | 369 | return new IndicesQueriesRegistry(settings, queryParsersMap);
|
367 | 370 | }
|
|
0 commit comments