Class DefaultModuleWrapper
java.lang.Object
eu.cloudnetservice.driver.impl.module.DefaultModuleWrapper
- All Implemented Interfaces:
eu.cloudnetservice.driver.inject.InjectionLayerHolder<Injector>, eu.cloudnetservice.driver.module.ModuleWrapper
public class DefaultModuleWrapper
extends Object
implements eu.cloudnetservice.driver.module.ModuleWrapper
Represents the default implementation of the module wrapper.
- Since:
- 4.0
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final URLClassLoaderprivate final Pathprivate final Set<eu.cloudnetservice.driver.module.ModuleDependency> private final AtomicReference<eu.cloudnetservice.driver.module.ModuleLifeCycle> protected static final org.slf4j.Loggerprivate final eu.cloudnetservice.driver.module.Moduleprivate final eu.cloudnetservice.driver.module.ModuleConfigurationprivate final eu.cloudnetservice.driver.inject.InjectionLayer<Injector> private final Lockprivate final eu.cloudnetservice.driver.module.ModuleProviderprivate final URLprivate final URIprotected static final Comparator<eu.cloudnetservice.driver.module.ModuleTaskEntry> private final Map<eu.cloudnetservice.driver.module.ModuleLifeCycle, List<eu.cloudnetservice.driver.module.ModuleTaskEntry>> -
Constructor Summary
ConstructorsConstructorDescriptionDefaultModuleWrapper(@NonNull URL source, @NonNull eu.cloudnetservice.driver.module.Module module, @NonNull Path dataDirectory, @NonNull eu.cloudnetservice.driver.module.ModuleProvider provider, @NonNull URLClassLoader classLoader, @NonNull Set<eu.cloudnetservice.driver.module.ModuleDependency> dependingModules, @NonNull eu.cloudnetservice.driver.module.ModuleConfiguration moduleConfiguration, @NonNull eu.cloudnetservice.driver.inject.InjectionLayer<Injector> moduleInjectionLayer) Creates a new instance of a default module wrapper. -
Method Summary
Modifier and TypeMethodDescription@NonNull @Unmodifiable Set<eu.cloudnetservice.driver.module.ModuleDependency> protected booleanfireModuleTaskEntry(@NonNull eu.cloudnetservice.driver.module.ModuleTaskEntry entry) Fires a specific module task entry.@NonNull eu.cloudnetservice.driver.module.ModuleWrapper@NonNull eu.cloudnetservice.driver.module.Modulemodule()@NonNull eu.cloudnetservice.driver.module.ModuleConfiguration@NonNull eu.cloudnetservice.driver.module.ModuleLifeCycle@NonNull eu.cloudnetservice.driver.module.ModuleProvider@NonNull Map<eu.cloudnetservice.driver.module.ModuleLifeCycle, List<eu.cloudnetservice.driver.module.ModuleTaskEntry>> protected voidpushLifecycleChange(@NonNull eu.cloudnetservice.driver.module.ModuleLifeCycle lifeCycle, boolean notifyProvider) Fires all handlers registered for the specified lifeCycle.@NonNull eu.cloudnetservice.driver.module.ModuleWrapperprotected @NonNull Map<eu.cloudnetservice.driver.module.ModuleLifeCycle, List<eu.cloudnetservice.driver.module.ModuleTaskEntry>> resolveModuleTasks(@NonNull eu.cloudnetservice.driver.module.Module module) Resolves all module tasks in the main class of a module.@NonNull eu.cloudnetservice.driver.module.ModuleWrapper@NonNull eu.cloudnetservice.driver.module.ModuleWrapper@NonNull eu.cloudnetservice.driver.module.ModuleWrapperuri()url()
-
Field Details
-
LOGGER
protected static final org.slf4j.Logger LOGGER -
TASK_COMPARATOR
-
source
-
sourceUri
-
module
private final eu.cloudnetservice.driver.module.Module module -
dataDirectory
-
provider
private final eu.cloudnetservice.driver.module.ModuleProvider provider -
classLoader
-
dependingModules
-
moduleConfiguration
private final eu.cloudnetservice.driver.module.ModuleConfiguration moduleConfiguration -
moduleInjectionLayer
-
moduleLifecycleUpdateLock
-
tasks
-
lifeCycle
-
-
Constructor Details
-
DefaultModuleWrapper
public DefaultModuleWrapper(@NonNull @NonNull URL source, @NonNull @NonNull eu.cloudnetservice.driver.module.Module module, @NonNull @NonNull Path dataDirectory, @NonNull @NonNull eu.cloudnetservice.driver.module.ModuleProvider provider, @NonNull @NonNull URLClassLoader classLoader, @NonNull @NonNull Set<eu.cloudnetservice.driver.module.ModuleDependency> dependingModules, @NonNull @NonNull eu.cloudnetservice.driver.module.ModuleConfiguration moduleConfiguration, @NonNull @NonNull eu.cloudnetservice.driver.inject.InjectionLayer<Injector> moduleInjectionLayer) throws URISyntaxException Creates a new instance of a default module wrapper.- Parameters:
source- the module file from which this module was loaded initially.module- the instance of the module main class constructed by the provider.dataDirectory- the data directory of this module relative to the module provider directory.provider- the provider which loaded this module.classLoader- the class loader which was used to load the main class from the file.dependingModules- the modules this module depends on and which need to get loaded first.moduleConfiguration- the parsed module configuration located in the module file.moduleInjectionLayer- the injection layer of the module.- Throws:
URISyntaxException- if the given module source is not formatted strictly according to RFC2396.NullPointerException- if one of the given arguments is null.
-
-
Method Details
-
moduleTasks
-
dependingModules
@NonNull public @NonNull @Unmodifiable Set<eu.cloudnetservice.driver.module.ModuleDependency> dependingModules()- Specified by:
dependingModulesin interfaceeu.cloudnetservice.driver.module.ModuleWrapper
-
module
-
moduleLifeCycle
-
moduleProvider
-
moduleConfiguration
-
classLoader
- Specified by:
classLoaderin interfaceeu.cloudnetservice.driver.module.ModuleWrapper
-
loadModule
-
startModule
-
reloadModule
-
stopModule
-
unloadModule
-
dataDirectory
-
url
-
uri
-
injectionLayer
-
resolveModuleTasks
@NonNull protected @NonNull Map<eu.cloudnetservice.driver.module.ModuleLifeCycle, List<eu.cloudnetservice.driver.module.ModuleTaskEntry>> resolveModuleTasks(@NonNull @NonNull eu.cloudnetservice.driver.module.Module module) Resolves all module tasks in the main class of a module. Declared methods are working as well. The returned map should only contain the tasks sorted as there will be no later step to sort them. Not all module lifecycle states must be in the returned map, if a lifecycle is missing it will be assumed that there is no tasks for that lifecycle.- Parameters:
module- the module instance (better known as the module main class) to resolve the tasks of.- Returns:
- all sorted resolved tasks mapped to the lifecycle they will be called in.
-
pushLifecycleChange
protected void pushLifecycleChange(@NonNull @NonNull eu.cloudnetservice.driver.module.ModuleLifeCycle lifeCycle, boolean notifyProvider) Fires all handlers registered for the specified lifeCycle.- Parameters:
lifeCycle- the lifecycle to fire the tasks of.notifyProvider- if the module provider should be notified about the change or not.
-
fireModuleTaskEntry
-