package de.skuzzle.polly.core.internal.commands;
import java.io.IOException;
import de.skuzzle.polly.core.configuration.ConfigurationProviderImpl;
import de.skuzzle.polly.core.internal.ShutdownManagerImpl;
import de.skuzzle.polly.core.moduleloader.AbstractProvider;
import de.skuzzle.polly.core.moduleloader.ModuleLoader;
import de.skuzzle.polly.core.moduleloader.SetupException;
import de.skuzzle.polly.core.moduleloader.annotations.Module;
import de.skuzzle.polly.core.moduleloader.annotations.Provide;
import de.skuzzle.polly.core.moduleloader.annotations.Require;
import de.skuzzle.polly.sdk.Configuration;
import de.skuzzle.polly.sdk.ConfigurationProvider;
@Module(
requires = {
@Require(component = ConfigurationProviderImpl.class),
@Require(component = ShutdownManagerImpl.class)
},
provides = @Provide(component = CommandManagerImpl.class))
public class CommandManagerProvider extends AbstractProvider {
private final static String COMMAND_CFG_NAME = "commandManager.cfg";
public CommandManagerProvider(ModuleLoader loader) {
super("COMMAND_MANAGER_PROVIDER", loader, true);
}
@Override
public void setup() throws SetupException {
ConfigurationProvider configProvider =
this.requireNow(ConfigurationProviderImpl.class, true);
Configuration commandCfg = null;
Configuration pollyCfg = null;
try {
commandCfg = configProvider.open(COMMAND_CFG_NAME);
pollyCfg = configProvider.getRootConfiguration();
} catch (IOException e) {
throw new SetupException(e);
}
CommandManagerImpl commandManager =
new CommandManagerImpl(
pollyCfg.readString(Configuration.ENCODING),
commandCfg);
final ShutdownManagerImpl shutDownMngr = this.requireNow(
ShutdownManagerImpl.class, true);
shutDownMngr.addDisposable(commandManager);
this.provideComponent(commandManager);
}
}