[Stable plugin api] Drop api suffix in package names (#92905)

Refactoring that drops the api suffix from package name
This will have to be followed up by a plugins/examples fix in imports
Also set an artifact group name to `org.elasticsearch.plugin` in the plugin-api and plugin-analysis-api
This commit is contained in:
Przemyslaw Gomulka 2023-01-14 09:49:37 +01:00 committed by GitHub
parent 4573c5641e
commit 2cdaabe783
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
47 changed files with 165 additions and 176 deletions

View file

@ -54,8 +54,8 @@ public class InternalDistributionModuleCheckTaskProvider {
"org.elasticsearch.geo",
"org.elasticsearch.logging",
"org.elasticsearch.lz4",
"org.elasticsearch.plugin.analysis.api",
"org.elasticsearch.plugin.api",
"org.elasticsearch.plugin",
"org.elasticsearch.plugin.analysis",
"org.elasticsearch.pluginclassloader",
"org.elasticsearch.securesm",
"org.elasticsearch.server",

View file

@ -92,7 +92,7 @@ class StablePluginBuildPluginFuncTest extends AbstractGradleFuncTest {
file("src/main/java/org/acme/A.java") << """
package org.acme;
import org.elasticsearch.plugin.api.NamedComponent;
import org.elasticsearch.plugin.NamedComponent;
import org.elasticsearch.plugin.scanner.test_classes.ExtensibleClass;
@NamedComponent( "componentA")

View file

@ -11,8 +11,8 @@ package org.elasticsearch.gradle.internal.test;
import net.bytebuddy.ByteBuddy;
import net.bytebuddy.dynamic.DynamicType;
import org.elasticsearch.plugin.api.Extensible;
import org.elasticsearch.plugin.api.NamedComponent;
import org.elasticsearch.plugin.Extensible;
import org.elasticsearch.plugin.NamedComponent;
import org.elasticsearch.plugin.scanner.test_classes.ExtensibleClass;
import org.elasticsearch.plugin.scanner.test_classes.ExtensibleInterface;

View file

@ -5,7 +5,7 @@
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
package org.elasticsearch.plugin.api;
package org.elasticsearch.plugin;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
package org.elasticsearch.plugin.api;
package org.elasticsearch.plugin;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

View file

@ -8,7 +8,7 @@
package org.elasticsearch.plugin.scanner.test_classes;
import org.elasticsearch.plugin.api.Extensible;
import org.elasticsearch.plugin.Extensible;
@Extensible
public class ExtensibleClass {}

View file

@ -8,7 +8,7 @@
package org.elasticsearch.plugin.scanner.test_classes;
import org.elasticsearch.plugin.api.Extensible;
import org.elasticsearch.plugin.Extensible;
@Extensible
public interface ExtensibleInterface {}

View file

@ -8,7 +8,9 @@
package org.elasticsearch.plugin.scanner.test_classes;
@org.elasticsearch.plugin.api.NamedComponent("test_named_component")
import org.elasticsearch.plugin.NamedComponent;
@NamedComponent("test_named_component")
public class TestNamedComponent implements ExtensibleInterface {
}

View file

@ -9,6 +9,7 @@
apply plugin: 'elasticsearch.publish'
apply plugin: 'elasticsearch.build'
group = "org.elasticsearch.plugin"
tasks.named("loggerUsageCheck").configure {enabled = false }

View file

@ -6,9 +6,9 @@
* Side Public License, v 1.
*/
module org.elasticsearch.plugin.analysis.api {
module org.elasticsearch.plugin.analysis {
requires org.apache.lucene.core;
requires org.elasticsearch.plugin.api;
requires org.elasticsearch.plugin;
exports org.elasticsearch.plugin.analysis.api;
exports org.elasticsearch.plugin.analysis;
}

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
package org.elasticsearch.plugin.analysis.api;
package org.elasticsearch.plugin.analysis;
/**
* Enum representing the mode in which token filters and analyzers are allowed to operate.

View file

@ -6,11 +6,11 @@
* Side Public License, v 1.
*/
package org.elasticsearch.plugin.analysis.api;
package org.elasticsearch.plugin.analysis;
import org.apache.lucene.analysis.Analyzer;
import org.elasticsearch.plugin.api.Extensible;
import org.elasticsearch.plugin.api.Nameable;
import org.elasticsearch.plugin.Extensible;
import org.elasticsearch.plugin.Nameable;
/**
* An analysis component used to create Analyzers.

View file

@ -6,10 +6,10 @@
* Side Public License, v 1.
*/
package org.elasticsearch.plugin.analysis.api;
package org.elasticsearch.plugin.analysis;
import org.elasticsearch.plugin.api.Extensible;
import org.elasticsearch.plugin.api.Nameable;
import org.elasticsearch.plugin.Extensible;
import org.elasticsearch.plugin.Nameable;
import java.io.Reader;

View file

@ -6,11 +6,11 @@
* Side Public License, v 1.
*/
package org.elasticsearch.plugin.analysis.api;
package org.elasticsearch.plugin.analysis;
import org.apache.lucene.analysis.TokenStream;
import org.elasticsearch.plugin.api.Extensible;
import org.elasticsearch.plugin.api.Nameable;
import org.elasticsearch.plugin.Extensible;
import org.elasticsearch.plugin.Nameable;
/**
* An analysis component used to create token filters.

View file

@ -6,11 +6,11 @@
* Side Public License, v 1.
*/
package org.elasticsearch.plugin.analysis.api;
package org.elasticsearch.plugin.analysis;
import org.apache.lucene.analysis.Tokenizer;
import org.elasticsearch.plugin.api.Extensible;
import org.elasticsearch.plugin.api.Nameable;
import org.elasticsearch.plugin.Extensible;
import org.elasticsearch.plugin.Nameable;
/**
* An analysis component used to create tokenizers.

View file

@ -9,6 +9,7 @@
apply plugin: 'elasticsearch.publish'
apply plugin: 'elasticsearch.build'
group = "org.elasticsearch.plugin"
tasks.named("loggerUsageCheck").configure {enabled = false }

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
module org.elasticsearch.plugin.api {
exports org.elasticsearch.plugin.api;
exports org.elasticsearch.plugin.api.settings;
module org.elasticsearch.plugin {
exports org.elasticsearch.plugin;
exports org.elasticsearch.plugin.settings;
}

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
package org.elasticsearch.plugin.api;
package org.elasticsearch.plugin;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
package org.elasticsearch.plugin.api;
package org.elasticsearch.plugin;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
package org.elasticsearch.plugin.api;
package org.elasticsearch.plugin;
/**
* A named plugin component. Components with a name can be registered and fetched under a name given in

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
package org.elasticsearch.plugin.api;
package org.elasticsearch.plugin;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

View file

@ -12,14 +12,12 @@
* <ul>
* <li> The root package is org.elasticsearch.plugin</li>
* <li> Specialised API jars have their name following the root package.
* Interfaces and annotations used by plugin developers should be placed under it.
* i.e. org.elasticsearch.plugin.analysis
* </li>
* <li> Interfaces and annotations used by plugin developers are in `api` package
* i.e org.elasticsearch.plugin.analysis.api or org.elasticsearch.plugin.api
* </li>
* <li> packages which are not meant to be used by plugin developers should not be subpackages of api
* <li> packages which are not meant to be used by plugin developers should be under internal package suffix
* i.e org.elasticsearch.plugin.analysis.internal
* </li>
* </ul>
*/
package org.elasticsearch.plugin.api;
package org.elasticsearch.plugin;

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
package org.elasticsearch.plugin.api.settings;
package org.elasticsearch.plugin.settings;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
package org.elasticsearch.plugin.api.settings;
package org.elasticsearch.plugin.settings;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
package org.elasticsearch.plugin.api.settings;
package org.elasticsearch.plugin.settings;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
package org.elasticsearch.plugin.api.settings;
package org.elasticsearch.plugin.settings;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
package org.elasticsearch.plugin.api.settings;
package org.elasticsearch.plugin.settings;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
package org.elasticsearch.plugin.api.settings;
package org.elasticsearch.plugin.settings;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

View file

@ -9,7 +9,7 @@
module org.elasticsearch.plugin.scanner {
requires org.elasticsearch.base;
requires org.objectweb.asm;
requires org.elasticsearch.plugin.api;
requires org.elasticsearch.plugin;
requires org.elasticsearch.xcontent;
exports org.elasticsearch.plugin.scanner;

View file

@ -8,8 +8,8 @@
package org.elasticsearch.plugin.scanner;
import org.elasticsearch.plugin.api.Extensible;
import org.elasticsearch.plugin.api.NamedComponent;
import org.elasticsearch.plugin.Extensible;
import org.elasticsearch.plugin.NamedComponent;
import org.elasticsearch.xcontent.XContentBuilder;
import org.elasticsearch.xcontent.XContentFactory;
import org.objectweb.asm.AnnotationVisitor;

View file

@ -8,8 +8,8 @@
package org.elasticsearch.plugin.scanner;
import org.elasticsearch.plugin.api.Extensible;
import org.elasticsearch.plugin.api.NamedComponent;
import org.elasticsearch.plugin.Extensible;
import org.elasticsearch.plugin.NamedComponent;
import org.elasticsearch.plugin.scanner.test_model.ExtensibleClass;
import org.elasticsearch.plugin.scanner.test_model.ExtensibleInterface;
import org.elasticsearch.plugin.scanner.test_model.ImplementingExtensible;

View file

@ -8,7 +8,7 @@
package org.elasticsearch.plugin.scanner;
import org.elasticsearch.plugin.api.Extensible;
import org.elasticsearch.plugin.Extensible;
import org.elasticsearch.test.ESTestCase;
import org.hamcrest.Matchers;
import org.objectweb.asm.ClassReader;

View file

@ -64,13 +64,13 @@ public class NamedComponentScannerTests extends ESTestCase {
Path jar = dirWithJar.resolve("plugin.jar");
JarUtils.createJarWithEntries(jar, Map.of("p/A.class", InMemoryJavaCompiler.compile("p.A", """
package p;
import org.elasticsearch.plugin.api.*;
import org.elasticsearch.plugin.*;
import org.elasticsearch.plugin.scanner.test_model.*;
@NamedComponent("a_component")
public class A extends ExtensibleClass {}
"""), "p/B.class", InMemoryJavaCompiler.compile("p.B", """
package p;
import org.elasticsearch.plugin.api.*;
import org.elasticsearch.plugin.*;
import org.elasticsearch.plugin.scanner.test_model.*;
@NamedComponent("b_component")
public class B implements ExtensibleInterface{}
@ -107,7 +107,7 @@ public class NamedComponentScannerTests extends ESTestCase {
"p.CustomExtensibleInterface",
"""
package p;
import org.elasticsearch.plugin.api.*;
import org.elasticsearch.plugin.*;
import org.elasticsearch.plugin.scanner.test_model.*;
public interface CustomExtensibleInterface extends ExtensibleInterface {}
""",
@ -115,14 +115,14 @@ public class NamedComponentScannerTests extends ESTestCase {
"p.CustomExtensibleClass",
"""
package p;
import org.elasticsearch.plugin.api.*;
import org.elasticsearch.plugin.*;
import org.elasticsearch.plugin.scanner.test_model.*;
public class CustomExtensibleClass implements CustomExtensibleInterface {}
""",
"p.A",
"""
package p;
import org.elasticsearch.plugin.api.*;
import org.elasticsearch.plugin.*;
import org.elasticsearch.plugin.scanner.test_model.*;
@NamedComponent("a_component")
public class A extends CustomExtensibleClass {}
@ -130,7 +130,7 @@ public class NamedComponentScannerTests extends ESTestCase {
"p.B",
"""
package p;
import org.elasticsearch.plugin.api.*;
import org.elasticsearch.plugin.*;
import org.elasticsearch.plugin.scanner.test_model.*;
@NamedComponent("b_component")
public class B implements CustomExtensibleInterface{}

View file

@ -8,7 +8,7 @@
package org.elasticsearch.plugin.scanner.test_model;
import org.elasticsearch.plugin.api.Extensible;
import org.elasticsearch.plugin.Extensible;
@Extensible
public class ExtensibleClass {}

View file

@ -8,7 +8,7 @@
package org.elasticsearch.plugin.scanner.test_model;
import org.elasticsearch.plugin.api.Extensible;
import org.elasticsearch.plugin.Extensible;
@Extensible
public interface ExtensibleInterface {}

View file

@ -8,7 +8,9 @@
package org.elasticsearch.plugin.scanner.test_model;
@org.elasticsearch.plugin.api.NamedComponent("test_named_component")
import org.elasticsearch.plugin.NamedComponent;
@NamedComponent("test_named_component")
public class TestNamedComponent implements ExtensibleInterface {
}

View file

@ -24,8 +24,8 @@ module org.elasticsearch.server {
requires org.elasticsearch.securesm;
requires org.elasticsearch.xcontent;
requires org.elasticsearch.logging;
requires org.elasticsearch.plugin.api;
requires org.elasticsearch.plugin.analysis.api;
requires org.elasticsearch.plugin;
requires org.elasticsearch.plugin.analysis;
requires com.sun.jna;
requires hppc;

View file

@ -12,11 +12,11 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.env.Environment;
import org.elasticsearch.plugin.api.settings.BooleanSetting;
import org.elasticsearch.plugin.api.settings.IntSetting;
import org.elasticsearch.plugin.api.settings.ListSetting;
import org.elasticsearch.plugin.api.settings.LongSetting;
import org.elasticsearch.plugin.api.settings.StringSetting;
import org.elasticsearch.plugin.settings.BooleanSetting;
import org.elasticsearch.plugin.settings.IntSetting;
import org.elasticsearch.plugin.settings.ListSetting;
import org.elasticsearch.plugin.settings.LongSetting;
import org.elasticsearch.plugin.settings.StringSetting;
import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationHandler;

View file

@ -15,8 +15,13 @@ import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.env.Environment;
import org.elasticsearch.index.IndexSettings;
import org.elasticsearch.indices.analysis.AnalysisModule;
import org.elasticsearch.plugin.api.Inject;
import org.elasticsearch.plugin.api.settings.AnalysisSettings;
import org.elasticsearch.plugin.Inject;
import org.elasticsearch.plugin.analysis.AnalysisMode;
import org.elasticsearch.plugin.analysis.AnalyzerFactory;
import org.elasticsearch.plugin.analysis.CharFilterFactory;
import org.elasticsearch.plugin.analysis.TokenFilterFactory;
import org.elasticsearch.plugin.analysis.TokenizerFactory;
import org.elasticsearch.plugin.settings.AnalysisSettings;
import org.elasticsearch.plugins.scanners.PluginInfo;
import org.elasticsearch.plugins.scanners.StablePluginsRegistry;
@ -38,41 +43,25 @@ public class StableApiWrappers {
public static
Map<String, AnalysisModule.AnalysisProvider<org.elasticsearch.index.analysis.CharFilterFactory>>
oldApiForStableCharFilterFactory(StablePluginsRegistry stablePluginRegistry) {
return mapStablePluginApiToOld(
stablePluginRegistry,
org.elasticsearch.plugin.analysis.api.CharFilterFactory.class,
StableApiWrappers::wrapCharFilterFactory
);
return mapStablePluginApiToOld(stablePluginRegistry, CharFilterFactory.class, StableApiWrappers::wrapCharFilterFactory);
}
public static
Map<String, AnalysisModule.AnalysisProvider<org.elasticsearch.index.analysis.TokenFilterFactory>>
oldApiForTokenFilterFactory(StablePluginsRegistry stablePluginRegistry) {
return mapStablePluginApiToOld(
stablePluginRegistry,
org.elasticsearch.plugin.analysis.api.TokenFilterFactory.class,
StableApiWrappers::wrapTokenFilterFactory
);
return mapStablePluginApiToOld(stablePluginRegistry, TokenFilterFactory.class, StableApiWrappers::wrapTokenFilterFactory);
}
public static Map<String, AnalysisModule.AnalysisProvider<org.elasticsearch.index.analysis.TokenizerFactory>> oldApiForTokenizerFactory(
StablePluginsRegistry stablePluginRegistry
) {
return mapStablePluginApiToOld(
stablePluginRegistry,
org.elasticsearch.plugin.analysis.api.TokenizerFactory.class,
StableApiWrappers::wrapTokenizerFactory
);
return mapStablePluginApiToOld(stablePluginRegistry, TokenizerFactory.class, StableApiWrappers::wrapTokenizerFactory);
}
public static
Map<String, AnalysisModule.AnalysisProvider<org.elasticsearch.index.analysis.AnalyzerProvider<?>>>
oldApiForAnalyzerFactory(StablePluginsRegistry stablePluginRegistry) {
return mapStablePluginApiToOld(
stablePluginRegistry,
org.elasticsearch.plugin.analysis.api.AnalyzerFactory.class,
StableApiWrappers::wrapAnalyzerFactory
);
return mapStablePluginApiToOld(stablePluginRegistry, AnalyzerFactory.class, StableApiWrappers::wrapAnalyzerFactory);
}
private static <T, F> Map<String, AnalysisModule.AnalysisProvider<T>> mapStablePluginApiToOld(
@ -106,9 +95,7 @@ public class StableApiWrappers {
};
}
private static org.elasticsearch.index.analysis.CharFilterFactory wrapCharFilterFactory(
org.elasticsearch.plugin.analysis.api.CharFilterFactory charFilterFactory
) {
private static org.elasticsearch.index.analysis.CharFilterFactory wrapCharFilterFactory(CharFilterFactory charFilterFactory) {
return new org.elasticsearch.index.analysis.CharFilterFactory() {
@Override
public String name() {
@ -127,9 +114,7 @@ public class StableApiWrappers {
};
}
private static org.elasticsearch.index.analysis.TokenFilterFactory wrapTokenFilterFactory(
org.elasticsearch.plugin.analysis.api.TokenFilterFactory f
) {
private static org.elasticsearch.index.analysis.TokenFilterFactory wrapTokenFilterFactory(TokenFilterFactory f) {
return new org.elasticsearch.index.analysis.TokenFilterFactory() {
@Override
public String name() {
@ -151,17 +136,13 @@ public class StableApiWrappers {
return mapAnalysisMode(f.getAnalysisMode());
}
private org.elasticsearch.index.analysis.AnalysisMode mapAnalysisMode(
org.elasticsearch.plugin.analysis.api.AnalysisMode analysisMode
) {
private org.elasticsearch.index.analysis.AnalysisMode mapAnalysisMode(AnalysisMode analysisMode) {
return org.elasticsearch.index.analysis.AnalysisMode.valueOf(analysisMode.name());
}
};
}
private static org.elasticsearch.index.analysis.TokenizerFactory wrapTokenizerFactory(
org.elasticsearch.plugin.analysis.api.TokenizerFactory f
) {
private static org.elasticsearch.index.analysis.TokenizerFactory wrapTokenizerFactory(TokenizerFactory f) {
return new org.elasticsearch.index.analysis.TokenizerFactory() {
@Override
@ -176,9 +157,7 @@ public class StableApiWrappers {
};
}
private static org.elasticsearch.index.analysis.AnalyzerProvider<?> wrapAnalyzerFactory(
org.elasticsearch.plugin.analysis.api.AnalyzerFactory f
) {
private static org.elasticsearch.index.analysis.AnalyzerProvider<?> wrapAnalyzerFactory(AnalyzerFactory f) {
return new org.elasticsearch.index.analysis.AnalyzerProvider<>() {
@Override
public String name() {

View file

@ -10,6 +10,7 @@ package org.elasticsearch.plugins.scanners;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.elasticsearch.plugin.Extensible;
import java.util.Map;
@ -58,7 +59,7 @@ import static org.elasticsearch.core.Strings.format;
* "E2" : "E2"
* }
*
* @see org.elasticsearch.plugin.api.Extensible
* @see Extensible
*/
public class ExtensiblesRegistry {

View file

@ -27,7 +27,7 @@ public class StablePluginsRegistry {
effectively means that an interface which extends another interface marked with @Extensible is also extensible
NameToPluginInfo map is a map of Name to PluginInfo
i.e.
org.elasticsearch.plugin.analysis.api.TokenFilterFactory ->
org.elasticsearch.plugin.analysis.TokenFilterFactory ->
{"nori" -> {nori, org.elasticserach.plugin.analysis.new_nori.NoriReadingFormFilterFactory, classloaderInstance}
*/
private final Map<String /*Extensible */, NameToPluginInfo> namedComponents;

View file

@ -1,6 +1,6 @@
{
"org.elasticsearch.plugin.analysis.api.AnalyzerFactory":"org.elasticsearch.plugin.analysis.api.AnalyzerFactory",
"org.elasticsearch.plugin.analysis.api.CharFilterFactory":"org.elasticsearch.plugin.analysis.api.CharFilterFactory",
"org.elasticsearch.plugin.analysis.api.TokenFilterFactory":"org.elasticsearch.plugin.analysis.api.TokenFilterFactory",
"org.elasticsearch.plugin.analysis.api.TokenizerFactory":"org.elasticsearch.plugin.analysis.api.TokenizerFactory"
"org.elasticsearch.plugin.analysis.AnalyzerFactory":"org.elasticsearch.plugin.analysis.api.AnalyzerFactory",
"org.elasticsearch.plugin.analysis.CharFilterFactory":"org.elasticsearch.plugin.analysis.api.CharFilterFactory",
"org.elasticsearch.plugin.analysis.TokenFilterFactory":"org.elasticsearch.plugin.analysis.api.TokenFilterFactory",
"org.elasticsearch.plugin.analysis.TokenizerFactory":"org.elasticsearch.plugin.analysis.api.TokenizerFactory"
}

View file

@ -16,9 +16,10 @@ import org.elasticsearch.index.IndexSettings;
import org.elasticsearch.index.analysis.AnalysisRegistry;
import org.elasticsearch.index.analysis.IndexAnalyzers;
import org.elasticsearch.indices.analysis.lucene.ReplaceCharToNumber;
import org.elasticsearch.plugin.api.Inject;
import org.elasticsearch.plugin.api.NamedComponent;
import org.elasticsearch.plugin.api.settings.AnalysisSettings;
import org.elasticsearch.plugin.Inject;
import org.elasticsearch.plugin.NamedComponent;
import org.elasticsearch.plugin.analysis.CharFilterFactory;
import org.elasticsearch.plugin.settings.AnalysisSettings;
import org.elasticsearch.plugins.scanners.NameToPluginInfo;
import org.elasticsearch.plugins.scanners.NamedComponentReader;
import org.elasticsearch.plugins.scanners.PluginInfo;
@ -131,16 +132,13 @@ public class IncorrectSetupStablePluginsTests extends ESTestCase {
emptyList(),
new StablePluginsRegistry(
new NamedComponentReader(),
Map.of(
org.elasticsearch.plugin.analysis.api.CharFilterFactory.class.getCanonicalName(),
new NameToPluginInfo(mapOfCharFilters)
)
Map.of(CharFilterFactory.class.getCanonicalName(), new NameToPluginInfo(mapOfCharFilters))
)
).getAnalysisRegistry();
return registry;
}
public abstract static class AbstractCharFilterFactory implements org.elasticsearch.plugin.analysis.api.CharFilterFactory {
public abstract static class AbstractCharFilterFactory implements CharFilterFactory {
@Override
public Reader create(Reader reader) {

View file

@ -23,8 +23,12 @@ import org.elasticsearch.indices.analysis.lucene.AppendTokenFilter;
import org.elasticsearch.indices.analysis.lucene.CharSkippingTokenizer;
import org.elasticsearch.indices.analysis.lucene.ReplaceCharToNumber;
import org.elasticsearch.indices.analysis.lucene.SkipStartingWithDigitTokenFilter;
import org.elasticsearch.plugin.analysis.api.AnalysisMode;
import org.elasticsearch.plugin.api.NamedComponent;
import org.elasticsearch.plugin.NamedComponent;
import org.elasticsearch.plugin.analysis.AnalysisMode;
import org.elasticsearch.plugin.analysis.AnalyzerFactory;
import org.elasticsearch.plugin.analysis.CharFilterFactory;
import org.elasticsearch.plugin.analysis.TokenFilterFactory;
import org.elasticsearch.plugin.analysis.TokenizerFactory;
import org.elasticsearch.plugins.scanners.NameToPluginInfo;
import org.elasticsearch.plugins.scanners.NamedComponentReader;
import org.elasticsearch.plugins.scanners.PluginInfo;
@ -87,7 +91,7 @@ public class StableAnalysisPluginsNoSettingsTests extends ESTestCase {
}
@NamedComponent("stableCharFilterFactory")
public static class TestCharFilterFactory implements org.elasticsearch.plugin.analysis.api.CharFilterFactory {
public static class TestCharFilterFactory implements CharFilterFactory {
@Override
public Reader create(Reader reader) {
@ -101,7 +105,7 @@ public class StableAnalysisPluginsNoSettingsTests extends ESTestCase {
}
@NamedComponent("stableTokenFilterFactory")
public static class TestTokenFilterFactory implements org.elasticsearch.plugin.analysis.api.TokenFilterFactory {
public static class TestTokenFilterFactory implements TokenFilterFactory {
@Override
public TokenStream create(TokenStream tokenStream) {
@ -115,13 +119,13 @@ public class StableAnalysisPluginsNoSettingsTests extends ESTestCase {
@Override
public AnalysisMode getAnalysisMode() {
return org.elasticsearch.plugin.analysis.api.TokenFilterFactory.super.getAnalysisMode();
return TokenFilterFactory.super.getAnalysisMode();
}
}
@NamedComponent("stableTokenizerFactory")
public static class TestTokenizerFactory implements org.elasticsearch.plugin.analysis.api.TokenizerFactory {
public static class TestTokenizerFactory implements TokenizerFactory {
@Override
public Tokenizer create() {
@ -131,7 +135,7 @@ public class StableAnalysisPluginsNoSettingsTests extends ESTestCase {
}
@NamedComponent("stableAnalyzerFactory")
public static class TestAnalyzerFactory implements org.elasticsearch.plugin.analysis.api.AnalyzerFactory {
public static class TestAnalyzerFactory implements AnalyzerFactory {
@Override
public Analyzer create() {
@ -158,28 +162,28 @@ public class StableAnalysisPluginsNoSettingsTests extends ESTestCase {
new StablePluginsRegistry(
new NamedComponentReader(),
Map.of(
org.elasticsearch.plugin.analysis.api.CharFilterFactory.class.getCanonicalName(),
CharFilterFactory.class.getCanonicalName(),
new NameToPluginInfo(
Map.of(
"stableCharFilterFactory",
new PluginInfo("stableCharFilterFactory", TestCharFilterFactory.class.getName(), classLoader)
)
),
org.elasticsearch.plugin.analysis.api.TokenFilterFactory.class.getCanonicalName(),
TokenFilterFactory.class.getCanonicalName(),
new NameToPluginInfo(
Map.of(
"stableTokenFilterFactory",
new PluginInfo("stableTokenFilterFactory", TestTokenFilterFactory.class.getName(), classLoader)
)
),
org.elasticsearch.plugin.analysis.api.TokenizerFactory.class.getCanonicalName(),
TokenizerFactory.class.getCanonicalName(),
new NameToPluginInfo(
Map.of(
"stableTokenizerFactory",
new PluginInfo("stableTokenizerFactory", TestTokenizerFactory.class.getName(), classLoader)
)
),
org.elasticsearch.plugin.analysis.api.AnalyzerFactory.class.getCanonicalName(),
AnalyzerFactory.class.getCanonicalName(),
new NameToPluginInfo(
Map.of(
"stableAnalyzerFactory",

View file

@ -22,15 +22,19 @@ import org.elasticsearch.indices.analysis.lucene.AppendTokenFilter;
import org.elasticsearch.indices.analysis.lucene.CharSkippingTokenizer;
import org.elasticsearch.indices.analysis.lucene.ReplaceCharToNumber;
import org.elasticsearch.indices.analysis.lucene.SkipStartingWithDigitTokenFilter;
import org.elasticsearch.plugin.analysis.api.AnalysisMode;
import org.elasticsearch.plugin.api.Inject;
import org.elasticsearch.plugin.api.NamedComponent;
import org.elasticsearch.plugin.api.settings.AnalysisSettings;
import org.elasticsearch.plugin.api.settings.BooleanSetting;
import org.elasticsearch.plugin.api.settings.IntSetting;
import org.elasticsearch.plugin.api.settings.ListSetting;
import org.elasticsearch.plugin.api.settings.LongSetting;
import org.elasticsearch.plugin.api.settings.StringSetting;
import org.elasticsearch.plugin.Inject;
import org.elasticsearch.plugin.NamedComponent;
import org.elasticsearch.plugin.analysis.AnalysisMode;
import org.elasticsearch.plugin.analysis.AnalyzerFactory;
import org.elasticsearch.plugin.analysis.CharFilterFactory;
import org.elasticsearch.plugin.analysis.TokenFilterFactory;
import org.elasticsearch.plugin.analysis.TokenizerFactory;
import org.elasticsearch.plugin.settings.AnalysisSettings;
import org.elasticsearch.plugin.settings.BooleanSetting;
import org.elasticsearch.plugin.settings.IntSetting;
import org.elasticsearch.plugin.settings.ListSetting;
import org.elasticsearch.plugin.settings.LongSetting;
import org.elasticsearch.plugin.settings.StringSetting;
import org.elasticsearch.plugins.scanners.NameToPluginInfo;
import org.elasticsearch.plugins.scanners.NamedComponentReader;
import org.elasticsearch.plugins.scanners.PluginInfo;
@ -140,28 +144,28 @@ public class StableAnalysisPluginsWithSettingsTests extends ESTestCase {
new StablePluginsRegistry(
new NamedComponentReader(),
Map.of(
org.elasticsearch.plugin.analysis.api.CharFilterFactory.class.getCanonicalName(),
CharFilterFactory.class.getCanonicalName(),
new NameToPluginInfo(
Map.of(
"stableCharFilterFactory",
new PluginInfo("stableCharFilterFactory", TestCharFilterFactory.class.getName(), classLoader)
)
),
org.elasticsearch.plugin.analysis.api.TokenFilterFactory.class.getCanonicalName(),
TokenFilterFactory.class.getCanonicalName(),
new NameToPluginInfo(
Map.of(
"stableTokenFilterFactory",
new PluginInfo("stableTokenFilterFactory", TestTokenFilterFactory.class.getName(), classLoader)
)
),
org.elasticsearch.plugin.analysis.api.TokenizerFactory.class.getCanonicalName(),
TokenizerFactory.class.getCanonicalName(),
new NameToPluginInfo(
Map.of(
"stableTokenizerFactory",
new PluginInfo("stableTokenizerFactory", TestTokenizerFactory.class.getName(), classLoader)
)
),
org.elasticsearch.plugin.analysis.api.AnalyzerFactory.class.getCanonicalName(),
AnalyzerFactory.class.getCanonicalName(),
new NameToPluginInfo(
Map.of(
"stableAnalyzerFactory",
@ -193,7 +197,7 @@ public class StableAnalysisPluginsWithSettingsTests extends ESTestCase {
}
@NamedComponent("stableAnalyzerFactory")
public static class TestAnalyzerFactory implements org.elasticsearch.plugin.analysis.api.AnalyzerFactory {
public static class TestAnalyzerFactory implements AnalyzerFactory {
private final TestAnalysisSettings settings;
@ -229,7 +233,7 @@ public class StableAnalysisPluginsWithSettingsTests extends ESTestCase {
}
@NamedComponent("stableCharFilterFactory")
public static class TestCharFilterFactory implements org.elasticsearch.plugin.analysis.api.CharFilterFactory {
public static class TestCharFilterFactory implements CharFilterFactory {
private final String oldChar;
private final int newNumber;
@ -252,7 +256,7 @@ public class StableAnalysisPluginsWithSettingsTests extends ESTestCase {
}
@NamedComponent("stableTokenFilterFactory")
public static class TestTokenFilterFactory implements org.elasticsearch.plugin.analysis.api.TokenFilterFactory {
public static class TestTokenFilterFactory implements TokenFilterFactory {
private final long tokenFilterNumber;
@ -273,13 +277,13 @@ public class StableAnalysisPluginsWithSettingsTests extends ESTestCase {
@Override
public AnalysisMode getAnalysisMode() {
return org.elasticsearch.plugin.analysis.api.TokenFilterFactory.super.getAnalysisMode();
return TokenFilterFactory.super.getAnalysisMode();
}
}
@NamedComponent("stableTokenizerFactory")
public static class TestTokenizerFactory implements org.elasticsearch.plugin.analysis.api.TokenizerFactory {
public static class TestTokenizerFactory implements TokenizerFactory {
private final java.util.List<String> tokenizerListOfChars;
@Inject

View file

@ -14,8 +14,12 @@ import org.apache.lucene.analysis.Tokenizer;
import org.elasticsearch.env.Environment;
import org.elasticsearch.index.analysis.AnalyzerScope;
import org.elasticsearch.indices.analysis.AnalysisModule;
import org.elasticsearch.plugin.analysis.api.AnalysisMode;
import org.elasticsearch.plugin.api.NamedComponent;
import org.elasticsearch.plugin.NamedComponent;
import org.elasticsearch.plugin.analysis.AnalysisMode;
import org.elasticsearch.plugin.analysis.AnalyzerFactory;
import org.elasticsearch.plugin.analysis.CharFilterFactory;
import org.elasticsearch.plugin.analysis.TokenFilterFactory;
import org.elasticsearch.plugin.analysis.TokenizerFactory;
import org.elasticsearch.plugins.scanners.PluginInfo;
import org.elasticsearch.plugins.scanners.StablePluginsRegistry;
import org.elasticsearch.test.ESTestCase;
@ -36,9 +40,8 @@ public class StableApiWrappersTests extends ESTestCase {
public void testUnknownClass() throws IOException {
StablePluginsRegistry registry = Mockito.mock(StablePluginsRegistry.class);
Mockito.when(
registry.getPluginInfosForExtensible(eq(org.elasticsearch.plugin.analysis.api.AnalyzerFactory.class.getCanonicalName()))
).thenReturn(List.of(new PluginInfo("namedComponentName1", "someRandomName", getClass().getClassLoader())));
Mockito.when(registry.getPluginInfosForExtensible(eq(AnalyzerFactory.class.getCanonicalName())))
.thenReturn(List.of(new PluginInfo("namedComponentName1", "someRandomName", getClass().getClassLoader())));
Map<String, AnalysisModule.AnalysisProvider<org.elasticsearch.index.analysis.AnalyzerProvider<?>>> analysisProviderMap =
StableApiWrappers.oldApiForAnalyzerFactory(registry);
@ -56,9 +59,7 @@ public class StableApiWrappersTests extends ESTestCase {
public void testStablePluginHasNoArgConstructor() throws IOException {
StablePluginsRegistry registry = Mockito.mock(StablePluginsRegistry.class);
Mockito.when(
registry.getPluginInfosForExtensible(eq(org.elasticsearch.plugin.analysis.api.AnalyzerFactory.class.getCanonicalName()))
)
Mockito.when(registry.getPluginInfosForExtensible(eq(AnalyzerFactory.class.getCanonicalName())))
.thenReturn(
List.of(new PluginInfo("namedComponentName1", DefaultConstrAnalyzerFactory.class.getName(), getClass().getClassLoader()))
);
@ -79,9 +80,8 @@ public class StableApiWrappersTests extends ESTestCase {
public void testAnalyzerFactoryDelegation() throws IOException {
StablePluginsRegistry registry = Mockito.mock(StablePluginsRegistry.class);
Mockito.when(
registry.getPluginInfosForExtensible(eq(org.elasticsearch.plugin.analysis.api.AnalyzerFactory.class.getCanonicalName()))
).thenReturn(List.of(new PluginInfo("namedComponentName1", TestAnalyzerFactory.class.getName(), getClass().getClassLoader())));
Mockito.when(registry.getPluginInfosForExtensible(eq(AnalyzerFactory.class.getCanonicalName())))
.thenReturn(List.of(new PluginInfo("namedComponentName1", TestAnalyzerFactory.class.getName(), getClass().getClassLoader())));
Map<String, AnalysisModule.AnalysisProvider<org.elasticsearch.index.analysis.AnalyzerProvider<?>>> analysisProviderMap =
StableApiWrappers.oldApiForAnalyzerFactory(registry);
@ -107,9 +107,8 @@ public class StableApiWrappersTests extends ESTestCase {
public void testTokenizerFactoryDelegation() throws IOException {
StablePluginsRegistry registry = Mockito.mock(StablePluginsRegistry.class);
Mockito.when(
registry.getPluginInfosForExtensible(eq(org.elasticsearch.plugin.analysis.api.TokenizerFactory.class.getCanonicalName()))
).thenReturn(List.of(new PluginInfo("namedComponentName1", TestTokenizerFactory.class.getName(), getClass().getClassLoader())));
Mockito.when(registry.getPluginInfosForExtensible(eq(TokenizerFactory.class.getCanonicalName())))
.thenReturn(List.of(new PluginInfo("namedComponentName1", TestTokenizerFactory.class.getName(), getClass().getClassLoader())));
Map<String, AnalysisModule.AnalysisProvider<org.elasticsearch.index.analysis.TokenizerFactory>> analysisProviderMap =
StableApiWrappers.oldApiForTokenizerFactory(registry);
@ -130,9 +129,10 @@ public class StableApiWrappersTests extends ESTestCase {
public void testTokenFilterFactoryDelegation() throws IOException {
StablePluginsRegistry registry = Mockito.mock(StablePluginsRegistry.class);
Mockito.when(
registry.getPluginInfosForExtensible(eq(org.elasticsearch.plugin.analysis.api.TokenFilterFactory.class.getCanonicalName()))
).thenReturn(List.of(new PluginInfo("namedComponentName1", TestTokenFilterFactory.class.getName(), getClass().getClassLoader())));
Mockito.when(registry.getPluginInfosForExtensible(eq(TokenFilterFactory.class.getCanonicalName())))
.thenReturn(
List.of(new PluginInfo("namedComponentName1", TestTokenFilterFactory.class.getName(), getClass().getClassLoader()))
);
Map<String, AnalysisModule.AnalysisProvider<org.elasticsearch.index.analysis.TokenFilterFactory>> analysisProviderMap =
StableApiWrappers.oldApiForTokenFilterFactory(registry);
@ -168,9 +168,8 @@ public class StableApiWrappersTests extends ESTestCase {
public void testCharFilterFactoryDelegation() throws IOException {
StablePluginsRegistry registry = Mockito.mock(StablePluginsRegistry.class);
Mockito.when(
registry.getPluginInfosForExtensible(eq(org.elasticsearch.plugin.analysis.api.CharFilterFactory.class.getCanonicalName()))
).thenReturn(List.of(new PluginInfo("namedComponentName1", TestCharFilterFactory.class.getName(), getClass().getClassLoader())));
Mockito.when(registry.getPluginInfosForExtensible(eq(CharFilterFactory.class.getCanonicalName())))
.thenReturn(List.of(new PluginInfo("namedComponentName1", TestCharFilterFactory.class.getName(), getClass().getClassLoader())));
Map<String, AnalysisModule.AnalysisProvider<org.elasticsearch.index.analysis.CharFilterFactory>> analysisProviderMap =
StableApiWrappers.oldApiForStableCharFilterFactory(registry);
@ -198,7 +197,7 @@ public class StableApiWrappersTests extends ESTestCase {
}
@NamedComponent("DefaultConstrAnalyzerFactory")
public static class DefaultConstrAnalyzerFactory implements org.elasticsearch.plugin.analysis.api.AnalyzerFactory {
public static class DefaultConstrAnalyzerFactory implements AnalyzerFactory {
public DefaultConstrAnalyzerFactory(int x) {}
@ -210,7 +209,7 @@ public class StableApiWrappersTests extends ESTestCase {
}
@NamedComponent("TestAnalyzerFactory")
public static class TestAnalyzerFactory implements org.elasticsearch.plugin.analysis.api.AnalyzerFactory {
public static class TestAnalyzerFactory implements AnalyzerFactory {
@Override
public Analyzer create() {
@ -220,7 +219,7 @@ public class StableApiWrappersTests extends ESTestCase {
}
@NamedComponent("TestTokenizerFactory")
public static class TestTokenizerFactory implements org.elasticsearch.plugin.analysis.api.TokenizerFactory {
public static class TestTokenizerFactory implements TokenizerFactory {
@Override
public Tokenizer create() {
@ -229,7 +228,7 @@ public class StableApiWrappersTests extends ESTestCase {
}
@NamedComponent("TestTokenFilterFactory")
public static class TestTokenFilterFactory implements org.elasticsearch.plugin.analysis.api.TokenFilterFactory {
public static class TestTokenFilterFactory implements TokenFilterFactory {
@Override
public TokenStream create(TokenStream tokenStream) {
@ -254,7 +253,7 @@ public class StableApiWrappersTests extends ESTestCase {
}
@NamedComponent("TestCharFilterFactory")
public static class TestCharFilterFactory implements org.elasticsearch.plugin.analysis.api.CharFilterFactory {
public static class TestCharFilterFactory implements CharFilterFactory {
@Override
public Reader create(Reader reader) {

View file

@ -17,7 +17,7 @@ import org.elasticsearch.core.Strings;
import org.elasticsearch.env.Environment;
import org.elasticsearch.env.TestEnvironment;
import org.elasticsearch.index.IndexModule;
import org.elasticsearch.plugin.analysis.api.CharFilterFactory;
import org.elasticsearch.plugin.analysis.CharFilterFactory;
import org.elasticsearch.plugins.scanners.PluginInfo;
import org.elasticsearch.plugins.spi.BarPlugin;
import org.elasticsearch.plugins.spi.BarTestService;
@ -794,8 +794,8 @@ public class PluginsServiceTests extends ESTestCase {
JarUtils.createJarWithEntries(jar, Map.of("p/A.class", InMemoryJavaCompiler.compile("p.A", """
package p;
import java.util.Map;
import org.elasticsearch.plugin.analysis.api.CharFilterFactory;
import org.elasticsearch.plugin.api.NamedComponent;
import org.elasticsearch.plugin.analysis.CharFilterFactory;
import org.elasticsearch.plugin.NamedComponent;
import java.io.Reader;
@NamedComponent( "a_name")
public class A implements CharFilterFactory {
@ -808,7 +808,7 @@ public class PluginsServiceTests extends ESTestCase {
Path namedComponentFile = plugin.resolve("named_components.json");
Files.writeString(namedComponentFile, """
{
"org.elasticsearch.plugin.analysis.api.CharFilterFactory": {
"org.elasticsearch.plugin.analysis.CharFilterFactory": {
"a_name": "p.A"
}
}
@ -827,7 +827,7 @@ public class PluginsServiceTests extends ESTestCase {
// check ubermodule classloader usage
Collection<PluginInfo> stablePluginInfos = pluginService.getStablePluginRegistry()
.getPluginInfosForExtensible("org.elasticsearch.plugin.analysis.api.CharFilterFactory");
.getPluginInfosForExtensible("org.elasticsearch.plugin.analysis.CharFilterFactory");
assertThat(stablePluginInfos, hasSize(1));
ClassLoader stablePluginClassLoader = stablePluginInfos.stream().findFirst().orElseThrow().loader();
assertThat(stablePluginClassLoader, instanceOf(UberModuleClassLoader.class));