From ad1eb642b782cde98c4ea331ed944f24e1a3c483 Mon Sep 17 00:00:00 2001 From: Ry Biesemeyer Date: Thu, 4 Apr 2024 18:48:24 +0000 Subject: [PATCH 1/2] add test ensuring `PainlessPlugin#baseWhiteList()` remains stable-API --- .../painless/PainlessPluginTests.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 modules/lang-painless/src/test/java/org/elasticsearch/painless/PainlessPluginTests.java diff --git a/modules/lang-painless/src/test/java/org/elasticsearch/painless/PainlessPluginTests.java b/modules/lang-painless/src/test/java/org/elasticsearch/painless/PainlessPluginTests.java new file mode 100644 index 0000000000000..96fce4e99b8d0 --- /dev/null +++ b/modules/lang-painless/src/test/java/org/elasticsearch/painless/PainlessPluginTests.java @@ -0,0 +1,30 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +package org.elasticsearch.painless; + +import org.elasticsearch.painless.spi.Whitelist; +import org.elasticsearch.test.ESTestCase; + +import java.util.List; + +import static org.hamcrest.Matchers.empty; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.not; + +public class PainlessPluginTests extends ESTestCase { + + /** + * The {@link PainlessPlugin#baseWhiteList()} signature is relied on from outside + * the Elasticsearch code-base and is considered part of the plugin's external API. + */ + public void testBaseWhiteList() { + final List baseWhiteList = PainlessPlugin.baseWhiteList(); + assertThat(baseWhiteList, is(not(empty()))); + } +} From d77ef01ef3d7ad1d0fe28e75f6257a0c250a6eab Mon Sep 17 00:00:00 2001 From: Ry Biesemeyer Date: Thu, 4 Apr 2024 18:56:13 +0000 Subject: [PATCH 2/2] backport stable-API `PainlessPlugin#baseWhiteList()` from `main` --- .../main/java/org/elasticsearch/painless/PainlessPlugin.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessPlugin.java b/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessPlugin.java index 068821793e44c..81660866c9196 100644 --- a/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessPlugin.java +++ b/modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessPlugin.java @@ -74,6 +74,10 @@ public final class PainlessPlugin extends Plugin implements ScriptPlugin, Extens WhitelistLoader.loadFromResourceFiles(PainlessPlugin.class, WhitelistAnnotationParser.BASE_ANNOTATION_PARSERS, BASE_WHITELIST_FILES) ); + public static List baseWhiteList() { + return BASE_WHITELISTS; + } + /* * Contexts from Core that need custom whitelists can add them to the map below. * Whitelist resources should be added as appropriately named, separate files