Skip to content

Commit 9663fa4

Browse files
committed
Scripting: cleanup ScriptService & friends in preparation for #6418
- Added NAME constants for each script language, avoiding to repeat the same strings all over the place. - Simplified `compile` method signatures by removing a couple of variants. Note that all of these signatures are going to change again with #6418 as in order to compile/execute a script the caller will need to specify which operation is attempting to execute the script, info that will be provided as an additional mandatory argument. - Removed double call to ScriptService#verifyDynamicScripting for every indexed or dynamic script. - Decreased ScriptService inner classes visibility to private (CacheKey, IndexedScript, ApplySettings) - Moved ScriptService inner classes to the bottom of the class, I think it makes it more readable. - Resolved some compiler warnings Closes #9992
1 parent b182b9f commit 9663fa4

31 files changed

+244
-320
lines changed

src/main/java/org/elasticsearch/index/query/ScriptFilterParser.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public Filter parse(QueryParseContext parseContext) throws IOException, QueryPar
6868
CacheKeyFilter.Key cacheKey = null;
6969
// also, when caching, since its isCacheable is false, will result in loading all bit set...
7070
String script = null;
71-
String scriptLang = null;
71+
String scriptLang;
7272
Map<String, Object> params = null;
7373

7474
String filterName = null;
@@ -129,12 +129,9 @@ public static class ScriptFilter extends Filter {
129129

130130
private final SearchScript searchScript;
131131

132-
private final ScriptService.ScriptType scriptType;
133-
134132
public ScriptFilter(String scriptLang, String script, ScriptService.ScriptType scriptType, Map<String, Object> params, ScriptService scriptService, SearchLookup searchLookup) {
135133
this.script = script;
136134
this.params = params;
137-
this.scriptType = scriptType;
138135
this.searchScript = scriptService.search(searchLookup, scriptLang, script, scriptType, newHashMap(params));
139136
}
140137

src/main/java/org/elasticsearch/index/query/TemplateQueryBuilder.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import org.elasticsearch.ElasticsearchIllegalArgumentException;
2222
import org.elasticsearch.common.xcontent.XContentBuilder;
2323
import org.elasticsearch.script.ScriptService;
24-
import org.elasticsearch.search.aggregations.support.ValuesSource;
2524

2625
import java.io.IOException;
2726
import java.util.Map;

src/main/java/org/elasticsearch/index/query/TemplateQueryParser.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,15 @@
1919
package org.elasticsearch.index.query;
2020

2121
import org.apache.lucene.search.Query;
22-
import org.elasticsearch.ElasticsearchException;
2322
import org.elasticsearch.common.Nullable;
2423
import org.elasticsearch.common.bytes.BytesReference;
2524
import org.elasticsearch.common.inject.Inject;
26-
import org.elasticsearch.common.logging.ESLogger;
27-
import org.elasticsearch.common.logging.Loggers;
2825
import org.elasticsearch.common.xcontent.XContentBuilder;
2926
import org.elasticsearch.common.xcontent.XContentFactory;
3027
import org.elasticsearch.common.xcontent.XContentParser;
3128
import org.elasticsearch.script.ExecutableScript;
3229
import org.elasticsearch.script.ScriptService;
30+
import org.elasticsearch.script.mustache.MustacheScriptEngineService;
3331

3432
import java.io.IOException;
3533
import java.util.HashMap;
@@ -52,9 +50,9 @@ public class TemplateQueryParser implements QueryParser {
5250

5351
private final static Map<String,ScriptService.ScriptType> parametersToTypes = new HashMap<>();
5452
static {
55-
parametersToTypes.put("query",ScriptService.ScriptType.INLINE);
56-
parametersToTypes.put("file",ScriptService.ScriptType.FILE);
57-
parametersToTypes.put("id",ScriptService.ScriptType.INDEXED);
53+
parametersToTypes.put("query", ScriptService.ScriptType.INLINE);
54+
parametersToTypes.put("file", ScriptService.ScriptType.FILE);
55+
parametersToTypes.put("id", ScriptService.ScriptType.INDEXED);
5856
}
5957

6058
@Inject
@@ -78,15 +76,14 @@ public String[] names() {
7876
public Query parse(QueryParseContext parseContext) throws IOException {
7977
XContentParser parser = parseContext.parser();
8078
TemplateContext templateContext = parse(parser, PARAMS, parametersToTypes);
81-
ExecutableScript executable = this.scriptService.executable("mustache", templateContext.template(), templateContext.scriptType(), templateContext.params());
79+
ExecutableScript executable = this.scriptService.executable(MustacheScriptEngineService.NAME, templateContext.template(), templateContext.scriptType(), templateContext.params());
8280

8381
BytesReference querySource = (BytesReference) executable.run();
8482

8583
try (XContentParser qSourceParser = XContentFactory.xContent(querySource).createParser(querySource)) {
8684
final QueryParseContext context = new QueryParseContext(parseContext.index(), parseContext.indexQueryParserService());
8785
context.reset(qSourceParser);
88-
Query result = context.parseInnerQuery();
89-
return result;
86+
return context.parseInnerQuery();
9087
}
9188
}
9289

src/main/java/org/elasticsearch/index/query/functionscore/script/ScriptScoreFunctionParser.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ public String[] getNames() {
5656
public ScoreFunction parse(QueryParseContext parseContext, XContentParser parser) throws IOException, QueryParsingException {
5757
ScriptParameterParser scriptParameterParser = new ScriptParameterParser();
5858
String script = null;
59-
String scriptLang = null;
6059
Map<String, Object> vars = null;
6160
ScriptService.ScriptType scriptType = null;
6261
String currentFieldName = null;
@@ -82,15 +81,13 @@ public ScoreFunction parse(QueryParseContext parseContext, XContentParser parser
8281
script = scriptValue.script();
8382
scriptType = scriptValue.scriptType();
8483
}
85-
scriptLang = scriptParameterParser.lang();
86-
8784
if (script == null) {
8885
throw new QueryParsingException(parseContext.index(), NAMES[0] + " requires 'script' field");
8986
}
9087

9188
SearchScript searchScript;
9289
try {
93-
searchScript = parseContext.scriptService().search(parseContext.lookup(), scriptLang, script, scriptType, vars);
90+
searchScript = parseContext.scriptService().search(parseContext.lookup(), scriptParameterParser.lang(), script, scriptType, vars);
9491
return new ScriptScoreFunction(script, vars, searchScript);
9592
} catch (Exception e) {
9693
throw new QueryParsingException(parseContext.index(), NAMES[0] + " the script could not be loaded", e);

src/main/java/org/elasticsearch/rest/action/template/RestDeleteSearchTemplateAction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.elasticsearch.rest.RestController;
2525
import org.elasticsearch.rest.RestRequest;
2626
import org.elasticsearch.rest.action.script.RestDeleteIndexedScriptAction;
27+
import org.elasticsearch.script.mustache.MustacheScriptEngineService;
2728

2829
import static org.elasticsearch.rest.RestRequest.Method.DELETE;
2930

@@ -37,6 +38,6 @@ public RestDeleteSearchTemplateAction(Settings settings, RestController controll
3738

3839
@Override
3940
protected String getScriptLang(RestRequest request) {
40-
return "mustache";
41+
return MustacheScriptEngineService.NAME;
4142
}
4243
}

src/main/java/org/elasticsearch/rest/action/template/RestGetSearchTemplateAction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.elasticsearch.rest.RestController;
2525
import org.elasticsearch.rest.RestRequest;
2626
import org.elasticsearch.rest.action.script.RestGetIndexedScriptAction;
27+
import org.elasticsearch.script.mustache.MustacheScriptEngineService;
2728

2829
import static org.elasticsearch.rest.RestRequest.Method.GET;
2930

@@ -40,7 +41,7 @@ public RestGetSearchTemplateAction(Settings settings, RestController controller,
4041

4142
@Override
4243
protected String getScriptLang(RestRequest request) {
43-
return "mustache";
44+
return MustacheScriptEngineService.NAME;
4445
}
4546

4647
@Override

src/main/java/org/elasticsearch/rest/action/template/RestPutSearchTemplateAction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.elasticsearch.common.settings.Settings;
2424
import org.elasticsearch.rest.*;
2525
import org.elasticsearch.rest.action.script.RestPutIndexedScriptAction;
26+
import org.elasticsearch.script.mustache.MustacheScriptEngineService;
2627

2728
import static org.elasticsearch.rest.RestRequest.Method.POST;
2829
import static org.elasticsearch.rest.RestRequest.Method.PUT;
@@ -58,6 +59,6 @@ public void handleRequest(RestRequest request, RestChannel channel, final Client
5859

5960
@Override
6061
protected String getScriptLang(RestRequest request) {
61-
return "mustache";
62+
return MustacheScriptEngineService.NAME;
6263
}
6364
}

src/main/java/org/elasticsearch/script/NativeScriptEngineService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
*/
3535
public class NativeScriptEngineService extends AbstractComponent implements ScriptEngineService {
3636

37+
public static final String NAME = "native";
38+
3739
private final ImmutableMap<String, NativeScriptFactory> scripts;
3840

3941
@Inject
@@ -44,7 +46,7 @@ public NativeScriptEngineService(Settings settings, Map<String, NativeScriptFact
4446

4547
@Override
4648
public String[] types() {
47-
return new String[]{"native"};
49+
return new String[]{NAME};
4850
}
4951

5052
@Override

0 commit comments

Comments
 (0)