Module org.elasticsearch.server
Class ExtensiblesRegistry
java.lang.Object
org.elasticsearch.plugins.scanners.ExtensiblesRegistry
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 Summary
-
Method Summary
-
Field Details
-
INSTANCE
-
-
Method Details
-
hasExtensible
-