Merge remote-tracking branch 'dakrone/there-can-be-only-one2'
This commit is contained in:
commit
864ba8dac1
|
@ -54,8 +54,8 @@ public class NativeScriptEngineService extends AbstractComponent implements Scri
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return Collections.emptyList();
|
return ""; // Native scripts have no extensions
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -33,7 +33,7 @@ public interface ScriptEngineService extends Closeable {
|
||||||
|
|
||||||
String getType();
|
String getType();
|
||||||
|
|
||||||
List<String> getExtensions();
|
String getExtension();
|
||||||
|
|
||||||
Object compile(String script, Map<String, String> params);
|
Object compile(String script, Map<String, String> params);
|
||||||
|
|
||||||
|
|
|
@ -170,9 +170,7 @@ public class ScriptService extends AbstractComponent implements Closeable {
|
||||||
for (ScriptEngineService scriptEngine : scriptEngines) {
|
for (ScriptEngineService scriptEngine : scriptEngines) {
|
||||||
String language = scriptEngineRegistry.getLanguage(scriptEngine.getClass());
|
String language = scriptEngineRegistry.getLanguage(scriptEngine.getClass());
|
||||||
enginesByLangBuilder.put(language, scriptEngine);
|
enginesByLangBuilder.put(language, scriptEngine);
|
||||||
for (String ext : scriptEngine.getExtensions()) {
|
enginesByExtBuilder.put(scriptEngine.getExtension(), scriptEngine);
|
||||||
enginesByExtBuilder.put(ext, scriptEngine);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
this.scriptEnginesByLang = unmodifiableMap(enginesByLangBuilder);
|
this.scriptEnginesByLang = unmodifiableMap(enginesByLangBuilder);
|
||||||
this.scriptEnginesByExt = unmodifiableMap(enginesByExtBuilder);
|
this.scriptEnginesByExt = unmodifiableMap(enginesByExtBuilder);
|
||||||
|
|
|
@ -241,8 +241,8 @@ public class ScriptModesTests extends ESTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return Collections.unmodifiableList(Arrays.asList("custom", "test"));
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -145,7 +145,7 @@ public class ScriptServiceTests extends ESTestCase {
|
||||||
public void testScriptsWithoutExtensions() throws IOException {
|
public void testScriptsWithoutExtensions() throws IOException {
|
||||||
buildScriptService(Settings.EMPTY);
|
buildScriptService(Settings.EMPTY);
|
||||||
Path testFileNoExt = scriptsFilePath.resolve("test_no_ext");
|
Path testFileNoExt = scriptsFilePath.resolve("test_no_ext");
|
||||||
Path testFileWithExt = scriptsFilePath.resolve("test_script.tst");
|
Path testFileWithExt = scriptsFilePath.resolve("test_script.test");
|
||||||
Streams.copy("test_file_no_ext".getBytes("UTF-8"), Files.newOutputStream(testFileNoExt));
|
Streams.copy("test_file_no_ext".getBytes("UTF-8"), Files.newOutputStream(testFileNoExt));
|
||||||
Streams.copy("test_file".getBytes("UTF-8"), Files.newOutputStream(testFileWithExt));
|
Streams.copy("test_file".getBytes("UTF-8"), Files.newOutputStream(testFileWithExt));
|
||||||
resourceWatcherService.notifyNow();
|
resourceWatcherService.notifyNow();
|
||||||
|
@ -173,7 +173,7 @@ public class ScriptServiceTests extends ESTestCase {
|
||||||
Path testHiddenFile = scriptsFilePath.resolve(".hidden_file");
|
Path testHiddenFile = scriptsFilePath.resolve(".hidden_file");
|
||||||
Streams.copy("test_hidden_file".getBytes("UTF-8"), Files.newOutputStream(testHiddenFile));
|
Streams.copy("test_hidden_file".getBytes("UTF-8"), Files.newOutputStream(testHiddenFile));
|
||||||
|
|
||||||
Path testFileScript = scriptsFilePath.resolve("file_script.tst");
|
Path testFileScript = scriptsFilePath.resolve("file_script.test");
|
||||||
Streams.copy("test_file_script".getBytes("UTF-8"), Files.newOutputStream(testFileScript));
|
Streams.copy("test_file_script".getBytes("UTF-8"), Files.newOutputStream(testFileScript));
|
||||||
resourceWatcherService.notifyNow();
|
resourceWatcherService.notifyNow();
|
||||||
|
|
||||||
|
@ -510,16 +510,14 @@ public class ScriptServiceTests extends ESTestCase {
|
||||||
|
|
||||||
public static final String NAME = "test";
|
public static final String NAME = "test";
|
||||||
|
|
||||||
public static final List<String> EXTENSIONS = Collections.unmodifiableList(Arrays.asList("test", "tst"));
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getType() {
|
public String getType() {
|
||||||
return NAME;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return EXTENSIONS;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -560,8 +558,8 @@ public class ScriptServiceTests extends ESTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return EXTENSIONS;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -73,16 +73,14 @@ public class ScriptSettingsTests extends ESTestCase {
|
||||||
|
|
||||||
public static final String NAME = "custom";
|
public static final String NAME = "custom";
|
||||||
|
|
||||||
public static final List<String> TYPES = Collections.unmodifiableList(Arrays.asList("test"));
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getType() {
|
public String getType() {
|
||||||
return NAME;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return Collections.unmodifiableList(Arrays.asList("test"));
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -382,8 +382,6 @@ public class AvgIT extends AbstractNumericTestCase {
|
||||||
|
|
||||||
public static final String NAME = "extract_field";
|
public static final String NAME = "extract_field";
|
||||||
|
|
||||||
public static final List<String> TYPES = Collections.singletonList(NAME);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
}
|
}
|
||||||
|
@ -394,8 +392,8 @@ public class AvgIT extends AbstractNumericTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return TYPES;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -509,8 +507,6 @@ public class AvgIT extends AbstractNumericTestCase {
|
||||||
|
|
||||||
public static final String NAME = "field_value";
|
public static final String NAME = "field_value";
|
||||||
|
|
||||||
public static final List<String> TYPES = Collections.singletonList(NAME);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
}
|
}
|
||||||
|
@ -521,8 +517,8 @@ public class AvgIT extends AbstractNumericTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return TYPES;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -378,8 +378,6 @@ public class SumIT extends AbstractNumericTestCase {
|
||||||
|
|
||||||
public static final String NAME = "extract_field";
|
public static final String NAME = "extract_field";
|
||||||
|
|
||||||
public static final List<String> TYPES = Collections.singletonList(NAME);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
}
|
}
|
||||||
|
@ -390,8 +388,8 @@ public class SumIT extends AbstractNumericTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return TYPES;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -507,8 +505,6 @@ public class SumIT extends AbstractNumericTestCase {
|
||||||
|
|
||||||
public static final String NAME = "field_value";
|
public static final String NAME = "field_value";
|
||||||
|
|
||||||
public static final List<String> TYPES = Collections.singletonList(NAME);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
}
|
}
|
||||||
|
@ -519,8 +515,8 @@ public class SumIT extends AbstractNumericTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return TYPES;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -236,8 +236,6 @@ public class ValueCountIT extends ESIntegTestCase {
|
||||||
|
|
||||||
public static final String NAME = "field_value";
|
public static final String NAME = "field_value";
|
||||||
|
|
||||||
public static final List<String> TYPES = Collections.singletonList(NAME);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
}
|
}
|
||||||
|
@ -248,8 +246,8 @@ public class ValueCountIT extends ESIntegTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return TYPES;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -103,8 +103,6 @@ public class UpdateIT extends ESIntegTestCase {
|
||||||
|
|
||||||
public static final String NAME = "put_values";
|
public static final String NAME = "put_values";
|
||||||
|
|
||||||
public static final List<String> TYPES = Collections.singletonList(NAME);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
}
|
}
|
||||||
|
@ -115,8 +113,8 @@ public class UpdateIT extends ESIntegTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return TYPES;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -192,8 +190,6 @@ public class UpdateIT extends ESIntegTestCase {
|
||||||
|
|
||||||
public static final String NAME = "field_inc";
|
public static final String NAME = "field_inc";
|
||||||
|
|
||||||
public static final List<String> TYPES = Collections.singletonList(NAME);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
}
|
}
|
||||||
|
@ -204,8 +200,8 @@ public class UpdateIT extends ESIntegTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return TYPES;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -274,8 +270,6 @@ public class UpdateIT extends ESIntegTestCase {
|
||||||
|
|
||||||
public static final String NAME = "scripted_upsert";
|
public static final String NAME = "scripted_upsert";
|
||||||
|
|
||||||
public static final List<String> TYPES = Collections.singletonList(NAME);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
}
|
}
|
||||||
|
@ -286,8 +280,8 @@ public class UpdateIT extends ESIntegTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return TYPES;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -356,8 +350,6 @@ public class UpdateIT extends ESIntegTestCase {
|
||||||
|
|
||||||
public static final String NAME = "extract_ctx";
|
public static final String NAME = "extract_ctx";
|
||||||
|
|
||||||
public static final List<String> TYPES = Collections.singletonList(NAME);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
}
|
}
|
||||||
|
@ -368,8 +360,8 @@ public class UpdateIT extends ESIntegTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return TYPES;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -93,3 +93,14 @@ script engine in particular registered both `"lang": "js"` and `"lang":
|
||||||
"javascript"`. Script engines can now only register a single language. All
|
"javascript"`. Script engines can now only register a single language. All
|
||||||
references to `"lang": "js"` should be changed to `"lang": "javascript"` for
|
references to `"lang": "js"` should be changed to `"lang": "javascript"` for
|
||||||
existing users of the lang-javascript plugin.
|
existing users of the lang-javascript plugin.
|
||||||
|
|
||||||
|
==== Scripting engines now register only a single extension
|
||||||
|
|
||||||
|
Prior to 5.0.0 scripting engines could register multiple extensions. The only
|
||||||
|
engine doing this was the Javascript engine, which registered "js" and
|
||||||
|
"javascript". It now only registers the "js" file extension for on-disk scripts.
|
||||||
|
|
||||||
|
==== `.javascript` files are no longer supported (use `.js`)
|
||||||
|
|
||||||
|
The Javascript engine previously registered "js" and "javascript". It now only
|
||||||
|
registers the "js" file extension for on-disk scripts.
|
||||||
|
|
|
@ -62,8 +62,6 @@ public class ExpressionScriptEngineService extends AbstractComponent implements
|
||||||
|
|
||||||
public static final String NAME = "expression";
|
public static final String NAME = "expression";
|
||||||
|
|
||||||
public static final List<String> TYPES = Collections.singletonList(NAME);
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public ExpressionScriptEngineService(Settings settings) {
|
public ExpressionScriptEngineService(Settings settings) {
|
||||||
super(settings);
|
super(settings);
|
||||||
|
@ -75,8 +73,8 @@ public class ExpressionScriptEngineService extends AbstractComponent implements
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return TYPES;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -76,7 +76,6 @@ public class GroovyScriptEngineService extends AbstractComponent implements Scri
|
||||||
*/
|
*/
|
||||||
public static final String NAME = "groovy";
|
public static final String NAME = "groovy";
|
||||||
|
|
||||||
public static final List<String> TYPES = Collections.singletonList(NAME);
|
|
||||||
/**
|
/**
|
||||||
* The name of the Groovy compiler setting to use associated with activating <code>invokedynamic</code> support.
|
* The name of the Groovy compiler setting to use associated with activating <code>invokedynamic</code> support.
|
||||||
*/
|
*/
|
||||||
|
@ -166,8 +165,8 @@ public class GroovyScriptEngineService extends AbstractComponent implements Scri
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return TYPES;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -55,8 +55,6 @@ public final class MustacheScriptEngineService extends AbstractComponent impleme
|
||||||
|
|
||||||
public static final String NAME = "mustache";
|
public static final String NAME = "mustache";
|
||||||
|
|
||||||
public static final List<String> TYPES = Collections.singletonList(NAME);
|
|
||||||
|
|
||||||
static final String CONTENT_TYPE_PARAM = "content_type";
|
static final String CONTENT_TYPE_PARAM = "content_type";
|
||||||
static final String JSON_CONTENT_TYPE = "application/json";
|
static final String JSON_CONTENT_TYPE = "application/json";
|
||||||
static final String PLAIN_TEXT_CONTENT_TYPE = "text/plain";
|
static final String PLAIN_TEXT_CONTENT_TYPE = "text/plain";
|
||||||
|
@ -117,8 +115,8 @@ public final class MustacheScriptEngineService extends AbstractComponent impleme
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return TYPES;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -53,21 +53,6 @@ public final class PainlessScriptEngineService extends AbstractComponent impleme
|
||||||
*/
|
*/
|
||||||
public static final String NAME = "painless";
|
public static final String NAME = "painless";
|
||||||
|
|
||||||
/**
|
|
||||||
* Standard list of names for the Painless language. (There is only one.)
|
|
||||||
*/
|
|
||||||
public static final List<String> TYPES = Collections.singletonList(NAME);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Standard extension of the Painless language.
|
|
||||||
*/
|
|
||||||
public static final String EXTENSION = "painless";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Standard list of extensions for the Painless language. (There is only one.)
|
|
||||||
*/
|
|
||||||
public static final List<String> EXTENSIONS = Collections.singletonList(EXTENSION);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default compiler settings to be used.
|
* Default compiler settings to be used.
|
||||||
*/
|
*/
|
||||||
|
@ -112,8 +97,8 @@ public final class PainlessScriptEngineService extends AbstractComponent impleme
|
||||||
* @return Always contains only the single extension of the language.
|
* @return Always contains only the single extension of the language.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return EXTENSIONS;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -70,7 +70,7 @@ public class JavaScriptScriptEngineService extends AbstractComponent implements
|
||||||
|
|
||||||
public static final String NAME = "javascript";
|
public static final String NAME = "javascript";
|
||||||
|
|
||||||
public static final List<String> EXTENSIONS = Collections.unmodifiableList(Arrays.asList("js", "javascript"));
|
public static final String EXTENSION = "js";
|
||||||
|
|
||||||
private final AtomicLong counter = new AtomicLong();
|
private final AtomicLong counter = new AtomicLong();
|
||||||
|
|
||||||
|
@ -166,8 +166,8 @@ public class JavaScriptScriptEngineService extends AbstractComponent implements
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return EXTENSIONS;
|
return EXTENSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -40,6 +40,6 @@ public class PythonPlugin extends Plugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onModule(ScriptModule module) {
|
public void onModule(ScriptModule module) {
|
||||||
module.addScriptEngine(new ScriptEngineRegistry.ScriptEngineRegistration(PythonScriptEngineService.class, PythonScriptEngineService.TYPE));
|
module.addScriptEngine(new ScriptEngineRegistry.ScriptEngineRegistration(PythonScriptEngineService.class, PythonScriptEngineService.NAME));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,7 +58,8 @@ import java.util.Map;
|
||||||
//TODO we can optimize the case for Map<String, Object> similar to PyStringMap
|
//TODO we can optimize the case for Map<String, Object> similar to PyStringMap
|
||||||
public class PythonScriptEngineService extends AbstractComponent implements ScriptEngineService {
|
public class PythonScriptEngineService extends AbstractComponent implements ScriptEngineService {
|
||||||
|
|
||||||
public static final String TYPE = "python";
|
public static final String NAME = "python";
|
||||||
|
public static final String EXTENSION = "py";
|
||||||
|
|
||||||
private final PythonInterpreter interp;
|
private final PythonInterpreter interp;
|
||||||
|
|
||||||
|
@ -97,12 +98,12 @@ public class PythonScriptEngineService extends AbstractComponent implements Scri
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getType() {
|
public String getType() {
|
||||||
return TYPE;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return Collections.unmodifiableList(Arrays.asList("py"));
|
return EXTENSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -38,8 +38,6 @@ public class MockScriptEngine implements ScriptEngineService {
|
||||||
|
|
||||||
public static final String NAME = "mockscript";
|
public static final String NAME = "mockscript";
|
||||||
|
|
||||||
public static final List<String> TYPES = Collections.singletonList(NAME);
|
|
||||||
|
|
||||||
public static class TestPlugin extends Plugin {
|
public static class TestPlugin extends Plugin {
|
||||||
|
|
||||||
public TestPlugin() {
|
public TestPlugin() {
|
||||||
|
@ -68,8 +66,8 @@ public class MockScriptEngine implements ScriptEngineService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> getExtensions() {
|
public String getExtension() {
|
||||||
return TYPES;
|
return NAME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue