Class ExtensiblesRegistry

java.lang.Object
org.elasticsearch.plugins.scanners.ExtensiblesRegistry

public class ExtensiblesRegistry extends Object
A registry of Extensible interfaces/classes read from extensibles.json file. The file is generated during Elasticsearch built time (or commited) basing on the classes declared in stable plugins api (i.e. plugin-analysis-api) This file is present in server jar. a class/interface is directly extensible when is marked with @Extensible annotation a class/interface can be indirectly extensible when it extends/implements a directly extensible class Information about extensible interfaces/classes are stored in a map where: key and value are the same cannonical name of the class that is directly marked with @Extensible or key: a cannonical name of the class that is indirectly extensible but extends another extensible class (directly/indirectly) value: cannonical name of the class that is directly extensible The reason for indirectly extensible classes is to allow stable plugin apis to create hierarchies Example:
 @Extensible
 interface E{
     public void foo();
 }
 interface Eprim extends E{
 }

 class Aclass implements E{

 }

 @Extensible
 class E2 {
     public void bar(){}
 }
 
the content of extensibles.json should be { "E" : "E", "Eprim" : "E", "A" : "E", "E2" : "E2" }
See Also:
  • Field Details

  • Method Details

    • hasExtensible

      public boolean hasExtensible(String extensibleName)