public class PluginInstaller extends java.lang.Object implements FeatureInstaller<java.lang.Object>, BindingInstaller
Plugin
annotation into set multibinding by base class
defined in annotation.
Registered set may be later injected in code as Set<BaseType> plugins
.
To use Map<String, BaseType>
create new annotation, annotated with @Plugin
.
Use new annotation to define plugins. It's value attribute will be used as key (this way you can use
different enums for different plugin types and not need to always write plugin interface.
Constructor and Description |
---|
PluginInstaller() |
Modifier and Type | Method and Description |
---|---|
<T> void |
install(com.google.inject.Binder binder,
java.lang.Class<? extends T> type,
boolean lazy)
Called to apply custom binding for installed feature.
|
boolean |
matches(java.lang.Class<?> type)
NOTE: consider using
ru.vyarus.dropwizard.guice.module.installer.util.FeatureUtils to simplify checks
(for example, types most likely must be checks to be not abstract). |
void |
report()
Called to log registered endpoints in dropwizard log fashion.
|
public boolean matches(java.lang.Class<?> type)
FeatureInstaller
ru.vyarus.dropwizard.guice.module.installer.util.FeatureUtils
to simplify checks
(for example, types most likely must be checks to be not abstract).
When type accepted by any extension it's registered in guice module.
matches
in interface FeatureInstaller<java.lang.Object>
type
- type to checkpublic <T> void install(com.google.inject.Binder binder, java.lang.Class<? extends T> type, boolean lazy)
BindingInstaller
binder.install(type)
by default, so
implement it only if some custom binding required.install
in interface BindingInstaller
T
- plugin type (used just to define strict hierarchy and simplify binding)binder
- guice bindertype
- extension classlazy
- true if extension is annotated with @LazyBinding
public void report()
FeatureInstaller
Reporter
to simplify reporting.
Method may do nothing if reporting not required
report
in interface FeatureInstaller<java.lang.Object>