Class DynamicItem<T>
java.lang.Object
com.google.gerrit.extensions.registration.DynamicItem<T>
A single item that can be modified as plugins reload.
DynamicItems are always mapped as singletons in Guice. Items store a Provider internally, and resolve the provider to an instance on demand. This enables registrations to decide between singleton and non-singleton members. If multiple plugins try to provide the same Provider, an exception is thrown.
-
Method Summary
Modifier and TypeMethodDescriptionstatic <T> com.google.inject.binder.LinkedBindingBuilder<T>
bind
(com.google.inject.Binder binder, com.google.inject.TypeLiteral<T> type) Bind one implementation as the item.static <T> com.google.inject.binder.LinkedBindingBuilder<T>
Bind one implementation as the item using a unique annotation.get()
Get the configured item, or null.getEntry()
Get the name of the plugin that has bound the configured item, or null.static <T> void
itemOf
(com.google.inject.Binder binder, com.google.inject.TypeLiteral<T> member) Declare a singletonDynamicItem<T>
with a binder.static <T> void
Declare a singletonDynamicItem<T>
with a binder.static <T> DynamicItem<T>
Construct a singleDynamicItem<T>
with a fixed value.Set the element that may be hot-replaceable in the future.Set the element to provide.Set the element to provide.
-
Method Details
-
itemOf
Declare a singletonDynamicItem<T>
with a binder.Items must be defined in a Guice module before they can be bound:
DynamicItem.itemOf(binder(), Interface.class); DynamicItem.bind(binder(), Interface.class).to(Impl.class);
- Parameters:
binder
- a new binder created in the module.member
- type of entry to store.
-
itemOf
public static <T> void itemOf(com.google.inject.Binder binder, com.google.inject.TypeLiteral<T> member) Declare a singletonDynamicItem<T>
with a binder.Items must be defined in a Guice module before they can be bound:
DynamicSet.itemOf(binder(), new TypeLiteral<Thing<Foo>>() {});
- Parameters:
binder
- a new binder created in the module.member
- type of entry to store.
-
itemOf
Construct a singleDynamicItem<T>
with a fixed value.Primarily useful for passing
DynamicItem
s to constructors in tests.- Parameters:
member
- type of item.item
- item to store.
-
bind
public static <T> com.google.inject.binder.LinkedBindingBuilder<T> bind(com.google.inject.Binder binder, Class<T> type) Bind one implementation as the item using a unique annotation.- Parameters:
binder
- a new binder created in the module.type
- type of entry to store.- Returns:
- a binder to continue configuring the new item.
-
bind
public static <T> com.google.inject.binder.LinkedBindingBuilder<T> bind(com.google.inject.Binder binder, com.google.inject.TypeLiteral<T> type) Bind one implementation as the item.- Parameters:
binder
- a new binder created in the module.type
- type of entry to store.- Returns:
- a binder to continue configuring the new item.
-
getEntry
-
get
Get the configured item, or null.- Returns:
- the configured item instance; null if no implementation has been bound to the item. This is common if no plugin registered an implementation for the type.
-
getPluginName
Get the name of the plugin that has bound the configured item, or null.- Returns:
- the name of the plugin that has bound the configured item; null if no implementation has been bound to the item. This is common if no plugin registered an implementation for the type.
-
set
Set the element to provide.- Parameters:
item
- the item to use. Must not be null.pluginName
- the name of the plugin providing the item.- Returns:
- handle to remove the item at a later point in time.
-
set
Set the element to provide.- Parameters:
impl
- the item to add to the collection. Must not be null.pluginName
- name of the source providing the implementation.- Returns:
- handle to remove the item at a later point in time.
-
set
public ReloadableRegistrationHandle<T> set(com.google.inject.Key<T> key, com.google.inject.Provider<T> impl, String pluginName) Set the element that may be hot-replaceable in the future.- Parameters:
key
- unique description from the item's Guice binding. This can be later obtained from the registration handle to facilitate matching with the new equivalent instance during a hot reload.impl
- the item to set as our value right now. Must not be null.pluginName
- the name of the plugin providing the item.- Returns:
- a handle that can remove this item later, or hot-swap the item.
-