Skip to content

Commit 89bd168

Browse files
committed
Scripting: Deprecate native scripts (#24692)
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
1 parent c81791b commit 89bd168

File tree

3 files changed

+12
-0
lines changed

3 files changed

+12
-0
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,12 @@
1919

2020
package org.elasticsearch.script;
2121

22+
import org.apache.logging.log4j.Logger;
2223
import org.apache.lucene.index.LeafReaderContext;
2324
import org.elasticsearch.common.Nullable;
2425
import org.elasticsearch.common.component.AbstractComponent;
26+
import org.elasticsearch.common.logging.DeprecationLogger;
27+
import org.elasticsearch.common.logging.Loggers;
2528
import org.elasticsearch.common.settings.Settings;
2629
import org.elasticsearch.search.lookup.SearchLookup;
2730

@@ -41,6 +44,11 @@ public class NativeScriptEngineService extends AbstractComponent implements Scri
4144

4245
public NativeScriptEngineService(Settings settings, Map<String, NativeScriptFactory> scripts) {
4346
super(settings);
47+
if (scripts.isEmpty() == false) {
48+
Logger logger = Loggers.getLogger(ScriptModule.class);
49+
DeprecationLogger deprecationLogger = new DeprecationLogger(logger);
50+
deprecationLogger.deprecated("Native scripts are deprecated. Use a custom ScriptEngine to write scripts in java.");
51+
}
4452
this.scripts = unmodifiableMap(scripts);
4553
}
4654

core/src/main/java/org/elasticsearch/script/NativeScriptFactory.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@
3131
* @see AbstractSearchScript
3232
* @see AbstractLongSearchScript
3333
* @see AbstractDoubleSearchScript
34+
* @deprecated Create a {@link ScriptEngine} instead of using native scripts
3435
*/
36+
@Deprecated
3537
public interface NativeScriptFactory {
3638

3739
/**

core/src/test/java/org/elasticsearch/script/NativeScriptTests.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public void testNativeScript() throws InterruptedException {
5555
CompiledScript compiledScript = scriptModule.getScriptService().compile(script, ScriptContext.Standard.SEARCH);
5656
ExecutableScript executable = scriptModule.getScriptService().executable(compiledScript, script.getParams());
5757
assertThat(executable.run().toString(), equalTo("test"));
58+
assertWarnings("Native scripts are deprecated. Use a custom ScriptEngine to write scripts in java.");
5859
}
5960

6061
public void testFineGrainedSettingsDontAffectNativeScripts() throws IOException {
@@ -82,6 +83,7 @@ public void testFineGrainedSettingsDontAffectNativeScripts() throws IOException
8283
assertThat(scriptService.compile(new Script(ScriptType.INLINE, NativeScriptEngineService.NAME, "my", Collections.emptyMap()),
8384
scriptContext), notNullValue());
8485
}
86+
assertWarnings("Native scripts are deprecated. Use a custom ScriptEngine to write scripts in java.");
8587
}
8688

8789
public static class MyNativeScriptFactory implements NativeScriptFactory {

0 commit comments

Comments
 (0)