summaryrefslogtreecommitdiff
path: root/modules/lang-mustache
diff options
context:
space:
mode:
authorJack Conradson <osjdconrad@gmail.com>2016-11-10 09:59:13 -0800
committerJack Conradson <osjdconrad@gmail.com>2016-11-10 09:59:13 -0800
commitaeb97ff41298e26b107a733837dfe17f123c0c9b (patch)
tree8d37fa8c7365df2ce52626b003c1838572a62d88 /modules/lang-mustache
parent2e531902ffb776e6ea9d15e99ab904aa4cb256dc (diff)
Clean up of Script.
Closes #21321
Diffstat (limited to 'modules/lang-mustache')
-rw-r--r--modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/CustomMustacheFactory.java3
-rw-r--r--modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/MustacheScriptEngineService.java3
-rw-r--r--modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TemplateQueryBuilder.java6
-rw-r--r--modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TransportSearchTemplateAction.java8
-rw-r--r--modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/CustomMustacheFactoryTests.java2
-rw-r--r--modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/MustacheScriptEngineTests.java4
-rw-r--r--modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/TemplateQueryBuilderTests.java31
7 files changed, 32 insertions, 25 deletions
diff --git a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/CustomMustacheFactory.java b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/CustomMustacheFactory.java
index 95bae3732e..662cd86f79 100644
--- a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/CustomMustacheFactory.java
+++ b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/CustomMustacheFactory.java
@@ -30,7 +30,6 @@ import com.github.mustachejava.TemplateContext;
import com.github.mustachejava.codes.DefaultMustache;
import com.github.mustachejava.codes.IterableCode;
import com.github.mustachejava.codes.WriteCode;
-import org.elasticsearch.common.Strings;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentType;
@@ -54,6 +53,7 @@ public class CustomMustacheFactory extends DefaultMustacheFactory {
static final String CONTENT_TYPE_PARAM = "content_type";
+ static final String JSON_MIME_TYPE_WITH_CHARSET = "application/json; charset=UTF-8";
static final String JSON_MIME_TYPE = "application/json";
static final String PLAIN_TEXT_MIME_TYPE = "text/plain";
static final String X_WWW_FORM_URLENCODED_MIME_TYPE = "application/x-www-form-urlencoded";
@@ -63,6 +63,7 @@ public class CustomMustacheFactory extends DefaultMustacheFactory {
private static final Map<String, Supplier<Encoder>> ENCODERS;
static {
Map<String, Supplier<Encoder>> encoders = new HashMap<>();
+ encoders.put(JSON_MIME_TYPE_WITH_CHARSET, JsonEscapeEncoder::new);
encoders.put(JSON_MIME_TYPE, JsonEscapeEncoder::new);
encoders.put(PLAIN_TEXT_MIME_TYPE, DefaultEncoder::new);
encoders.put(X_WWW_FORM_URLENCODED_MIME_TYPE, UrlEncoder::new);
diff --git a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/MustacheScriptEngineService.java b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/MustacheScriptEngineService.java
index b2bc514327..08c0e1643b 100644
--- a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/MustacheScriptEngineService.java
+++ b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/MustacheScriptEngineService.java
@@ -83,8 +83,7 @@ public final class MustacheScriptEngineService extends AbstractComponent impleme
* Compile a template string to (in this case) a Mustache object than can
* later be re-used for execution to fill in missing parameter values.
*
- * @param templateSource
- * a string representing the template to compile.
+ * @param templateSource a string representing the template to compile.
* @return a compiled template object for later execution.
* */
@Override
diff --git a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TemplateQueryBuilder.java b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TemplateQueryBuilder.java
index 731659c4b7..3744416a4e 100644
--- a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TemplateQueryBuilder.java
+++ b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TemplateQueryBuilder.java
@@ -39,6 +39,7 @@ import org.elasticsearch.script.Script;
import org.elasticsearch.script.ScriptType;
import java.io.IOException;
+import java.util.Collections;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
@@ -57,11 +58,12 @@ public class TemplateQueryBuilder extends AbstractQueryBuilder<TemplateQueryBuil
private final Script template;
public TemplateQueryBuilder(String template, ScriptType scriptType, Map<String, Object> params) {
- this(new Script(template, scriptType, "mustache", params));
+ this(new Script(scriptType, "mustache", template, params));
}
public TemplateQueryBuilder(String template, ScriptType scriptType, Map<String, Object> params, XContentType ct) {
- this(new Script(template, scriptType, "mustache", params, ct));
+ this(new Script(scriptType, "mustache", template,
+ ct == null ? Collections.emptyMap() : Collections.singletonMap(Script.CONTENT_TYPE_OPTION, ct.mediaType()), params));
}
TemplateQueryBuilder(Script template) {
diff --git a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TransportSearchTemplateAction.java b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TransportSearchTemplateAction.java
index f323fcf450..e366b34e3d 100644
--- a/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TransportSearchTemplateAction.java
+++ b/modules/lang-mustache/src/main/java/org/elasticsearch/script/mustache/TransportSearchTemplateAction.java
@@ -40,7 +40,8 @@ import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.threadpool.ThreadPool;
import org.elasticsearch.transport.TransportService;
-import static java.util.Collections.emptyMap;
+import java.util.Collections;
+
import static org.elasticsearch.script.ScriptContext.Standard.SEARCH;
public class TransportSearchTemplateAction extends HandledTransportAction<SearchTemplateRequest, SearchTemplateResponse> {
@@ -66,8 +67,9 @@ public class TransportSearchTemplateAction extends HandledTransportAction<Search
protected void doExecute(SearchTemplateRequest request, ActionListener<SearchTemplateResponse> listener) {
final SearchTemplateResponse response = new SearchTemplateResponse();
try {
- Script script = new Script(request.getScript(), request.getScriptType(), TEMPLATE_LANG, request.getScriptParams());
- ExecutableScript executable = scriptService.executable(script, SEARCH, emptyMap());
+ Script script = new Script(request.getScriptType(), TEMPLATE_LANG, request.getScript(),
+ request.getScriptParams() == null ? Collections.emptyMap() : request.getScriptParams());
+ ExecutableScript executable = scriptService.executable(script, SEARCH);
BytesReference source = (BytesReference) executable.run();
response.setSource(source);
diff --git a/modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/CustomMustacheFactoryTests.java b/modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/CustomMustacheFactoryTests.java
index f2f0d6d80f..c1cba140ff 100644
--- a/modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/CustomMustacheFactoryTests.java
+++ b/modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/CustomMustacheFactoryTests.java
@@ -51,6 +51,8 @@ public class CustomMustacheFactoryTests extends ESTestCase {
e = expectThrows(IllegalArgumentException.class, () -> CustomMustacheFactory.createEncoder("test"));
assertThat(e.getMessage(), equalTo("No encoder found for MIME type [test]"));
+ assertThat(CustomMustacheFactory.createEncoder(CustomMustacheFactory.JSON_MIME_TYPE_WITH_CHARSET),
+ instanceOf(CustomMustacheFactory.JsonEscapeEncoder.class));
assertThat(CustomMustacheFactory.createEncoder(CustomMustacheFactory.JSON_MIME_TYPE),
instanceOf(CustomMustacheFactory.JsonEscapeEncoder.class));
assertThat(CustomMustacheFactory.createEncoder(CustomMustacheFactory.PLAIN_TEXT_MIME_TYPE),
diff --git a/modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/MustacheScriptEngineTests.java b/modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/MustacheScriptEngineTests.java
index ca4a6de716..20211e3935 100644
--- a/modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/MustacheScriptEngineTests.java
+++ b/modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/MustacheScriptEngineTests.java
@@ -84,7 +84,7 @@ public class MustacheScriptEngineTests extends ESTestCase {
XContentParser parser = XContentFactory.xContent(templateString).createParser(templateString);
Script script = Script.parse(parser, new ParseFieldMatcher(false));
CompiledScript compiledScript = new CompiledScript(ScriptType.INLINE, null, "mustache",
- qe.compile(null, script.getScript(), Collections.emptyMap()));
+ qe.compile(null, script.getIdOrCode(), Collections.emptyMap()));
ExecutableScript executableScript = qe.executable(compiledScript, script.getParams());
assertThat(((BytesReference) executableScript.run()).utf8ToString(), equalTo("{\"match_all\":{}}"));
}
@@ -95,7 +95,7 @@ public class MustacheScriptEngineTests extends ESTestCase {
XContentParser parser = XContentFactory.xContent(templateString).createParser(templateString);
Script script = Script.parse(parser, new ParseFieldMatcher(false));
CompiledScript compiledScript = new CompiledScript(ScriptType.INLINE, null, "mustache",
- qe.compile(null, script.getScript(), Collections.emptyMap()));
+ qe.compile(null, script.getIdOrCode(), Collections.emptyMap()));
ExecutableScript executableScript = qe.executable(compiledScript, script.getParams());
assertThat(((BytesReference) executableScript.run()).utf8ToString(), equalTo("{ \"match_all\":{} }"));
}
diff --git a/modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/TemplateQueryBuilderTests.java b/modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/TemplateQueryBuilderTests.java
index 41242a693d..7bff3f5984 100644
--- a/modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/TemplateQueryBuilderTests.java
+++ b/modules/lang-mustache/src/test/java/org/elasticsearch/script/mustache/TemplateQueryBuilderTests.java
@@ -22,7 +22,6 @@ package org.elasticsearch.script.mustache;
import org.apache.lucene.index.memory.MemoryIndex;
import org.apache.lucene.search.MatchAllDocsQuery;
import org.apache.lucene.search.Query;
-import org.elasticsearch.ElasticsearchParseException;
import org.elasticsearch.common.bytes.BytesArray;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
@@ -50,6 +49,8 @@ import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
+import static org.hamcrest.Matchers.containsString;
+
public class TemplateQueryBuilderTests extends AbstractQueryTestCase<TemplateQueryBuilder> {
/**
@@ -114,7 +115,7 @@ public class TemplateQueryBuilderTests extends AbstractQueryTestCase<TemplateQue
@Override
protected TemplateQueryBuilder doCreateTestQueryBuilder() {
- return new TemplateQueryBuilder(new Script(templateBase.toString(), ScriptType.INLINE, "mustache", null, null));
+ return new TemplateQueryBuilder(new Script(ScriptType.INLINE, "mustache", templateBase.toString(), Collections.emptyMap()));
}
@Override
@@ -138,9 +139,9 @@ public class TemplateQueryBuilderTests extends AbstractQueryTestCase<TemplateQue
String queryAsString = testQueryAsString.replace("inline", "bogusField");
try {
parseQuery(queryAsString);
- fail("ScriptParseException expected.");
- } catch (ElasticsearchParseException e) {
- assertTrue(e.getMessage().contains("bogusField"));
+ fail("IllegalArgumentException expected");
+ } catch (IllegalArgumentException e) {
+ assertThat(e.getMessage(), containsString("[script] unknown field [bogusField], parser not found"));
}
}
@@ -178,8 +179,8 @@ public class TemplateQueryBuilderTests extends AbstractQueryTestCase<TemplateQue
@Override
public void testMustRewrite() throws IOException {
String query = "{ \"match_all\" : {}}";
- QueryBuilder builder = new TemplateQueryBuilder(new Script(query, ScriptType.INLINE, "mockscript",
- Collections.emptyMap(), XContentType.JSON));
+ QueryBuilder builder = new TemplateQueryBuilder(new Script(ScriptType.INLINE, "mockscript", query,
+ Collections.singletonMap(Script.CONTENT_TYPE_OPTION, XContentType.JSON.mediaType()), Collections.emptyMap()));
try {
builder.toQuery(createShardContext());
fail();
@@ -191,24 +192,24 @@ public class TemplateQueryBuilderTests extends AbstractQueryTestCase<TemplateQue
public void testRewriteWithInnerName() throws IOException {
final String query = "{ \"match_all\" : {\"_name\" : \"foobar\"}}";
- QueryBuilder builder = new TemplateQueryBuilder(new Script(query, ScriptType.INLINE, "mockscript",
- Collections.emptyMap(), XContentType.JSON));
+ QueryBuilder builder = new TemplateQueryBuilder(new Script(ScriptType.INLINE, "mockscript", query,
+ Collections.singletonMap(Script.CONTENT_TYPE_OPTION, XContentType.JSON.mediaType()), Collections.emptyMap()));
assertEquals(new MatchAllQueryBuilder().queryName("foobar"), builder.rewrite(createShardContext()));
- builder = new TemplateQueryBuilder(new Script(query, ScriptType.INLINE, "mockscript",
- Collections.emptyMap(), XContentType.JSON)).queryName("outer");
+ builder = new TemplateQueryBuilder(new Script(ScriptType.INLINE, "mockscript", query, Collections.singletonMap(
+ Script.CONTENT_TYPE_OPTION, XContentType.JSON.mediaType()), Collections.emptyMap())).queryName("outer");
assertEquals(new BoolQueryBuilder().must(new MatchAllQueryBuilder().queryName("foobar")).queryName("outer"),
builder.rewrite(createShardContext()));
}
public void testRewriteWithInnerBoost() throws IOException {
final TermQueryBuilder query = new TermQueryBuilder("foo", "bar").boost(2);
- QueryBuilder builder = new TemplateQueryBuilder(new Script(query.toString(), ScriptType.INLINE, "mockscript",
- Collections.emptyMap(), XContentType.JSON));
+ QueryBuilder builder = new TemplateQueryBuilder(new Script(ScriptType.INLINE, "mockscript", query.toString(),
+ Collections.singletonMap(Script.CONTENT_TYPE_OPTION, XContentType.JSON.mediaType()), Collections.emptyMap()));
assertEquals(query, builder.rewrite(createShardContext()));
- builder = new TemplateQueryBuilder(new Script(query.toString(), ScriptType.INLINE, "mockscript",
- Collections.emptyMap(), XContentType.JSON)).boost(3);
+ builder = new TemplateQueryBuilder(new Script(ScriptType.INLINE, "mockscript", query.toString(),
+ Collections.singletonMap(Script.CONTENT_TYPE_OPTION, XContentType.JSON.mediaType()), Collections.emptyMap())).boost(3);
assertEquals(new BoolQueryBuilder().must(query).boost(3), builder.rewrite(createShardContext()));
}