Signifies that the annotated type is an extension point. Extension points are interfaces or non-final classes that
may be subclassed in extensions in order to add functionality to Druid. Extension points may change in breaking ways
only between major Druid release lines (e.g. 0.10.x -> 0.11.0), but otherwise must remain stable. Extension points
may change at any time in non-breaking ways, however, such as by adding new default methods to an interface.
All public and protected fields, methods, and constructors of annotated classes and interfaces are considered
stable in this sense. If a class is not annotated, but an individual field, method, or constructor is
annotated, then only that particular field, method, or constructor is considered an extension API.
Extension points are all considered public APIs in the sense of
PublicApi
, even if not explicitly annotated
as such.
Note that there are number of injectable interfaces that are not annotated with
ExtensionPoint
. You may
still extend these interfaces in extensions, but your extension may need to be recompiled even for a minor
update of Druid.