Class PluginModuleHolder<T>
- java.lang.Object
-
- com.atlassian.confluence.plugin.module.PluginModuleHolder<T>
-
public class PluginModuleHolder<T> extends Object
Manages the lifecycle of a plugin module of type T that is constructed when the module is first requested viagetModule()
method. However if module type isStateAware
module is created and enabled onceenabled()
is called.This class does not have any synchronisation or thread-safety guarantees. It relies on the plugin manager initialising and enabling plugin modules in single-threaded mode to ensure thread safety.
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
disabled()
void
enabled(Class<T> moduleClass)
Changes the state of the module toenabled
.static <T> PluginModuleHolder<T>
getInstance(PluginModuleFactory<? extends T> pluginModuleFactory)
Creates a PluginModuleHolder with a custom module factory.static <T> PluginModuleHolder<T>
getInstanceWithDefaultFactory(com.atlassian.plugin.ModuleDescriptor<? extends T> moduleDescriptor)
Creates a PluginModuleHolder for the given module descriptor with the default factory.T
getModule()
Returns the held module.boolean
isEnabled()
String
toString()
-
-
-
Method Detail
-
getInstanceWithDefaultFactory
public static <T> PluginModuleHolder<T> getInstanceWithDefaultFactory(com.atlassian.plugin.ModuleDescriptor<? extends T> moduleDescriptor)
Creates a PluginModuleHolder for the given module descriptor with the default factory.- See Also:
DefaultPluginModuleFactory
-
getInstance
public static <T> PluginModuleHolder<T> getInstance(PluginModuleFactory<? extends T> pluginModuleFactory)
Creates a PluginModuleHolder with a custom module factory.
-
enabled
public void enabled(Class<T> moduleClass)
Changes the state of the module toenabled
. If module class isStateAware
the module instance will be created if it does not exist yet and thenenabled()
method on the instance will be called. However if it is notStateAware
module, its instance will not be created and creation will be deferred until the first time it is used!- Parameters:
moduleClass
- a type of the module that this holder holds. We cannot use the type parameter of this class because of java implementation of generics(erasure).- Throws:
ClassCastException
- if passedmoduleClass
isStateAware
but the module type is not.
-
disabled
public void disabled()
-
isEnabled
public boolean isEnabled()
-
getModule
public T getModule() throws IllegalStateException
Returns the held module.- Throws:
IllegalStateException
- if the module is not enabled
-
-