Browse Source

[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
Przemyslaw Gomulka 2 years ago
parent
commit
2cdaabe783
47 changed files with 165 additions and 176 deletions
  1. 2 2
      build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionModuleCheckTaskProvider.java
  2. 1 1
      build-tools/src/integTest/groovy/org/elasticsearch/gradle/plugin/StablePluginBuildPluginFuncTest.groovy
  3. 2 2
      build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/StableApiJarMocks.java
  4. 1 1
      build-tools/src/testFixtures/java/org/elasticsearch/plugin/Extensible.java
  5. 1 1
      build-tools/src/testFixtures/java/org/elasticsearch/plugin/NamedComponent.java
  6. 1 1
      build-tools/src/testFixtures/java/org/elasticsearch/plugin/scanner/test_classes/ExtensibleClass.java
  7. 1 1
      build-tools/src/testFixtures/java/org/elasticsearch/plugin/scanner/test_classes/ExtensibleInterface.java
  8. 3 1
      build-tools/src/testFixtures/java/org/elasticsearch/plugin/scanner/test_classes/TestNamedComponent.java
  9. 1 0
      libs/plugin-analysis-api/build.gradle
  10. 3 3
      libs/plugin-analysis-api/src/main/java/module-info.java
  11. 1 1
      libs/plugin-analysis-api/src/main/java/org/elasticsearch/plugin/analysis/AnalysisMode.java
  12. 3 3
      libs/plugin-analysis-api/src/main/java/org/elasticsearch/plugin/analysis/AnalyzerFactory.java
  13. 3 3
      libs/plugin-analysis-api/src/main/java/org/elasticsearch/plugin/analysis/CharFilterFactory.java
  14. 3 3
      libs/plugin-analysis-api/src/main/java/org/elasticsearch/plugin/analysis/TokenFilterFactory.java
  15. 3 3
      libs/plugin-analysis-api/src/main/java/org/elasticsearch/plugin/analysis/TokenizerFactory.java
  16. 1 0
      libs/plugin-api/build.gradle
  17. 3 3
      libs/plugin-api/src/main/java/module-info.java
  18. 1 1
      libs/plugin-api/src/main/java/org/elasticsearch/plugin/Extensible.java
  19. 1 1
      libs/plugin-api/src/main/java/org/elasticsearch/plugin/Inject.java
  20. 1 1
      libs/plugin-api/src/main/java/org/elasticsearch/plugin/Nameable.java
  21. 1 1
      libs/plugin-api/src/main/java/org/elasticsearch/plugin/NamedComponent.java
  22. 3 5
      libs/plugin-api/src/main/java/org/elasticsearch/plugin/package-info.java
  23. 1 1
      libs/plugin-api/src/main/java/org/elasticsearch/plugin/settings/AnalysisSettings.java
  24. 1 1
      libs/plugin-api/src/main/java/org/elasticsearch/plugin/settings/BooleanSetting.java
  25. 1 1
      libs/plugin-api/src/main/java/org/elasticsearch/plugin/settings/IntSetting.java
  26. 1 1
      libs/plugin-api/src/main/java/org/elasticsearch/plugin/settings/ListSetting.java
  27. 1 1
      libs/plugin-api/src/main/java/org/elasticsearch/plugin/settings/LongSetting.java
  28. 1 1
      libs/plugin-api/src/main/java/org/elasticsearch/plugin/settings/StringSetting.java
  29. 1 1
      libs/plugin-scanner/src/main/java/module-info.java
  30. 2 2
      libs/plugin-scanner/src/main/java/org/elasticsearch/plugin/scanner/NamedComponentScanner.java
  31. 2 2
      libs/plugin-scanner/src/test/java/org/elasticsearch/plugin/scanner/AnnotatedHierarchyVisitorTests.java
  32. 1 1
      libs/plugin-scanner/src/test/java/org/elasticsearch/plugin/scanner/ClassScannerTests.java
  33. 6 6
      libs/plugin-scanner/src/test/java/org/elasticsearch/plugin/scanner/NamedComponentScannerTests.java
  34. 1 1
      libs/plugin-scanner/src/test/java/org/elasticsearch/plugin/scanner/test_model/ExtensibleClass.java
  35. 1 1
      libs/plugin-scanner/src/test/java/org/elasticsearch/plugin/scanner/test_model/ExtensibleInterface.java
  36. 3 1
      libs/plugin-scanner/src/test/java/org/elasticsearch/plugin/scanner/test_model/TestNamedComponent.java
  37. 2 2
      server/src/main/java/module-info.java
  38. 5 5
      server/src/main/java/org/elasticsearch/indices/analysis/wrappers/SettingsInvocationHandler.java
  39. 16 37
      server/src/main/java/org/elasticsearch/indices/analysis/wrappers/StableApiWrappers.java
  40. 2 1
      server/src/main/java/org/elasticsearch/plugins/scanners/ExtensiblesRegistry.java
  41. 1 1
      server/src/main/java/org/elasticsearch/plugins/scanners/StablePluginsRegistry.java
  42. 4 4
      server/src/main/resources/org/elasticsearch/plugins/scanners/extensibles.json
  43. 6 8
      server/src/test/java/org/elasticsearch/indices/analysis/IncorrectSetupStablePluginsTests.java
  44. 15 11
      server/src/test/java/org/elasticsearch/indices/analysis/StableAnalysisPluginsNoSettingsTests.java
  45. 22 18
      server/src/test/java/org/elasticsearch/indices/analysis/StableAnalysisPluginsWithSettingsTests.java
  46. 24 25
      server/src/test/java/org/elasticsearch/indices/analysis/wrappers/StableApiWrappersTests.java
  47. 5 5
      server/src/test/java/org/elasticsearch/plugins/PluginsServiceTests.java

+ 2 - 2
build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionModuleCheckTaskProvider.java

@@ -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",

+ 1 - 1
build-tools/src/integTest/groovy/org/elasticsearch/gradle/plugin/StablePluginBuildPluginFuncTest.groovy

@@ -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")

+ 2 - 2
build-tools/src/testFixtures/java/org/elasticsearch/gradle/internal/test/StableApiJarMocks.java

@@ -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;
 

+ 1 - 1
build-tools/src/testFixtures/java/org/elasticsearch/plugin/api/Extensible.java → build-tools/src/testFixtures/java/org/elasticsearch/plugin/Extensible.java

@@ -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;

+ 1 - 1
build-tools/src/testFixtures/java/org/elasticsearch/plugin/api/NamedComponent.java → build-tools/src/testFixtures/java/org/elasticsearch/plugin/NamedComponent.java

@@ -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;

+ 1 - 1
build-tools/src/testFixtures/java/org/elasticsearch/plugin/scanner/test_classes/ExtensibleClass.java

@@ -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 {}

+ 1 - 1
build-tools/src/testFixtures/java/org/elasticsearch/plugin/scanner/test_classes/ExtensibleInterface.java

@@ -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 {}

+ 3 - 1
build-tools/src/testFixtures/java/org/elasticsearch/plugin/scanner/test_classes/TestNamedComponent.java

@@ -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 {
 
 }

+ 1 - 0
libs/plugin-analysis-api/build.gradle

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

+ 3 - 3
libs/plugin-analysis-api/src/main/java/module-info.java

@@ -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;
 }

+ 1 - 1
libs/plugin-analysis-api/src/main/java/org/elasticsearch/plugin/analysis/api/AnalysisMode.java → libs/plugin-analysis-api/src/main/java/org/elasticsearch/plugin/analysis/AnalysisMode.java

@@ -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.

+ 3 - 3
libs/plugin-analysis-api/src/main/java/org/elasticsearch/plugin/analysis/api/AnalyzerFactory.java → libs/plugin-analysis-api/src/main/java/org/elasticsearch/plugin/analysis/AnalyzerFactory.java

@@ -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.

+ 3 - 3
libs/plugin-analysis-api/src/main/java/org/elasticsearch/plugin/analysis/api/CharFilterFactory.java → libs/plugin-analysis-api/src/main/java/org/elasticsearch/plugin/analysis/CharFilterFactory.java

@@ -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;
 

+ 3 - 3
libs/plugin-analysis-api/src/main/java/org/elasticsearch/plugin/analysis/api/TokenFilterFactory.java → libs/plugin-analysis-api/src/main/java/org/elasticsearch/plugin/analysis/TokenFilterFactory.java

@@ -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.

+ 3 - 3
libs/plugin-analysis-api/src/main/java/org/elasticsearch/plugin/analysis/api/TokenizerFactory.java → libs/plugin-analysis-api/src/main/java/org/elasticsearch/plugin/analysis/TokenizerFactory.java

@@ -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.

+ 1 - 0
libs/plugin-api/build.gradle

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

+ 3 - 3
libs/plugin-api/src/main/java/module-info.java

@@ -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;
 }

+ 1 - 1
libs/plugin-api/src/main/java/org/elasticsearch/plugin/api/Extensible.java → libs/plugin-api/src/main/java/org/elasticsearch/plugin/Extensible.java

@@ -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;

+ 1 - 1
libs/plugin-api/src/main/java/org/elasticsearch/plugin/api/Inject.java → libs/plugin-api/src/main/java/org/elasticsearch/plugin/Inject.java

@@ -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;

+ 1 - 1
libs/plugin-api/src/main/java/org/elasticsearch/plugin/api/Nameable.java → libs/plugin-api/src/main/java/org/elasticsearch/plugin/Nameable.java

@@ -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

+ 1 - 1
libs/plugin-api/src/main/java/org/elasticsearch/plugin/api/NamedComponent.java → libs/plugin-api/src/main/java/org/elasticsearch/plugin/NamedComponent.java

@@ -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;

+ 3 - 5
libs/plugin-api/src/main/java/org/elasticsearch/plugin/api/package-info.java → libs/plugin-api/src/main/java/org/elasticsearch/plugin/package-info.java

@@ -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;

+ 1 - 1
libs/plugin-api/src/main/java/org/elasticsearch/plugin/api/settings/AnalysisSettings.java → libs/plugin-api/src/main/java/org/elasticsearch/plugin/settings/AnalysisSettings.java

@@ -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;

+ 1 - 1
libs/plugin-api/src/main/java/org/elasticsearch/plugin/api/settings/BooleanSetting.java → libs/plugin-api/src/main/java/org/elasticsearch/plugin/settings/BooleanSetting.java

@@ -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;

+ 1 - 1
libs/plugin-api/src/main/java/org/elasticsearch/plugin/api/settings/IntSetting.java → libs/plugin-api/src/main/java/org/elasticsearch/plugin/settings/IntSetting.java

@@ -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;

+ 1 - 1
libs/plugin-api/src/main/java/org/elasticsearch/plugin/api/settings/ListSetting.java → libs/plugin-api/src/main/java/org/elasticsearch/plugin/settings/ListSetting.java

@@ -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;

+ 1 - 1
libs/plugin-api/src/main/java/org/elasticsearch/plugin/api/settings/LongSetting.java → libs/plugin-api/src/main/java/org/elasticsearch/plugin/settings/LongSetting.java

@@ -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;

+ 1 - 1
libs/plugin-api/src/main/java/org/elasticsearch/plugin/api/settings/StringSetting.java → libs/plugin-api/src/main/java/org/elasticsearch/plugin/settings/StringSetting.java

@@ -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;

+ 1 - 1
libs/plugin-scanner/src/main/java/module-info.java

@@ -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;

+ 2 - 2
libs/plugin-scanner/src/main/java/org/elasticsearch/plugin/scanner/NamedComponentScanner.java

@@ -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;

+ 2 - 2
libs/plugin-scanner/src/test/java/org/elasticsearch/plugin/scanner/AnnotatedHierarchyVisitorTests.java

@@ -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;

+ 1 - 1
libs/plugin-scanner/src/test/java/org/elasticsearch/plugin/scanner/ClassScannerTests.java

@@ -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;

+ 6 - 6
libs/plugin-scanner/src/test/java/org/elasticsearch/plugin/scanner/NamedComponentScannerTests.java

@@ -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{}

+ 1 - 1
libs/plugin-scanner/src/test/java/org/elasticsearch/plugin/scanner/test_model/ExtensibleClass.java

@@ -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 {}

+ 1 - 1
libs/plugin-scanner/src/test/java/org/elasticsearch/plugin/scanner/test_model/ExtensibleInterface.java

@@ -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 {}

+ 3 - 1
libs/plugin-scanner/src/test/java/org/elasticsearch/plugin/scanner/test_model/TestNamedComponent.java

@@ -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 {
 
 }

+ 2 - 2
server/src/main/java/module-info.java

@@ -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;

+ 5 - 5
server/src/main/java/org/elasticsearch/indices/analysis/wrappers/SettingsInvocationHandler.java

@@ -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;

+ 16 - 37
server/src/main/java/org/elasticsearch/indices/analysis/wrappers/StableApiWrappers.java

@@ -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() {

+ 2 - 1
server/src/main/java/org/elasticsearch/plugins/scanners/ExtensiblesRegistry.java

@@ -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 {
 

+ 1 - 1
server/src/main/java/org/elasticsearch/plugins/scanners/StablePluginsRegistry.java

@@ -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;

+ 4 - 4
server/src/main/resources/org/elasticsearch/plugins/scanners/extensibles.json

@@ -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"
 }

+ 6 - 8
server/src/test/java/org/elasticsearch/indices/analysis/IncorrectSetupStablePluginsTests.java

@@ -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) {

+ 15 - 11
server/src/test/java/org/elasticsearch/indices/analysis/StableAnalysisPluginsNoSettingsTests.java

@@ -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",

+ 22 - 18
server/src/test/java/org/elasticsearch/indices/analysis/StableAnalysisPluginsWithSettingsTests.java

@@ -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

+ 24 - 25
server/src/test/java/org/elasticsearch/indices/analysis/wrappers/StableApiWrappersTests.java

@@ -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) {

+ 5 - 5
server/src/test/java/org/elasticsearch/plugins/PluginsServiceTests.java

@@ -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));