From 10cca163b6f767146cf363de5982872d27acd67f Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Mon, 15 May 2017 14:51:01 -0700 Subject: [PATCH 1/2] Scripting: Deprecate native scripts Native scripts are no longer documented and instead using a ScriptEngine is recommended. This change adds a deprecation warning for removal in 6.0. relates #19966 --- .../java/org/elasticsearch/script/NativeScriptEngine.java | 8 ++++++++ .../java/org/elasticsearch/script/NativeScriptTests.java | 2 ++ 2 files changed, 10 insertions(+) diff --git a/core/src/main/java/org/elasticsearch/script/NativeScriptEngine.java b/core/src/main/java/org/elasticsearch/script/NativeScriptEngine.java index 7bd2f62e15145..1b3fb23a7f9a5 100644 --- a/core/src/main/java/org/elasticsearch/script/NativeScriptEngine.java +++ b/core/src/main/java/org/elasticsearch/script/NativeScriptEngine.java @@ -19,9 +19,12 @@ package org.elasticsearch.script; +import org.apache.logging.log4j.Logger; import org.apache.lucene.index.LeafReaderContext; import org.elasticsearch.common.Nullable; import org.elasticsearch.common.component.AbstractComponent; +import org.elasticsearch.common.logging.DeprecationLogger; +import org.elasticsearch.common.logging.Loggers; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.search.lookup.SearchLookup; @@ -41,6 +44,11 @@ public class NativeScriptEngine extends AbstractComponent implements ScriptEngin public NativeScriptEngine(Settings settings, Map scripts) { super(settings); + if (scripts.isEmpty() == false) { + Logger logger = Loggers.getLogger(ScriptModule.class); + DeprecationLogger deprecationLogger = new DeprecationLogger(logger); + deprecationLogger.deprecated("Native scripts are deprecated. Use a custom ScriptEngine to write scripts in java."); + } this.scripts = unmodifiableMap(scripts); } diff --git a/core/src/test/java/org/elasticsearch/script/NativeScriptTests.java b/core/src/test/java/org/elasticsearch/script/NativeScriptTests.java index 7f56f3de4b373..0960bc71bea4b 100644 --- a/core/src/test/java/org/elasticsearch/script/NativeScriptTests.java +++ b/core/src/test/java/org/elasticsearch/script/NativeScriptTests.java @@ -55,6 +55,7 @@ public void testNativeScript() throws InterruptedException { CompiledScript compiledScript = scriptModule.getScriptService().compile(script, ScriptContext.Standard.SEARCH); ExecutableScript executable = scriptModule.getScriptService().executable(compiledScript, script.getParams()); assertThat(executable.run().toString(), equalTo("test")); + assertWarnings("Native scripts are deprecated. Use a custom ScriptEngine to write scripts in java."); } public void testFineGrainedSettingsDontAffectNativeScripts() throws IOException { @@ -82,6 +83,7 @@ public void testFineGrainedSettingsDontAffectNativeScripts() throws IOException assertThat(scriptService.compile(new Script(ScriptType.INLINE, NativeScriptEngine.NAME, "my", Collections.emptyMap()), scriptContext), notNullValue()); } + assertWarnings("Native scripts are deprecated. Use a custom ScriptEngine to write scripts in java."); } public static class MyNativeScriptFactory implements NativeScriptFactory { From c818ea595cad813abb306714a20a4b0451d83ec6 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Tue, 16 May 2017 09:12:49 -0700 Subject: [PATCH 2/2] add deprecated annotation to NativeScriptFactory --- .../main/java/org/elasticsearch/script/NativeScriptFactory.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/src/main/java/org/elasticsearch/script/NativeScriptFactory.java b/core/src/main/java/org/elasticsearch/script/NativeScriptFactory.java index 7fca2501903be..a53f7115821d7 100644 --- a/core/src/main/java/org/elasticsearch/script/NativeScriptFactory.java +++ b/core/src/main/java/org/elasticsearch/script/NativeScriptFactory.java @@ -31,7 +31,9 @@ * @see AbstractSearchScript * @see AbstractLongSearchScript * @see AbstractDoubleSearchScript + * @deprecated Create a {@link ScriptEngine} instead of using native scripts */ +@Deprecated public interface NativeScriptFactory { /**