package de.skuzzle.polly.core.internal.mail;
import de.skuzzle.polly.core.configuration.ConfigurationImpl;
import de.skuzzle.polly.core.configuration.ConfigurationProviderImpl;
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;
@Module(
requires = @Require(component = ConfigurationProviderImpl.class),
provides = {
@Provide(component = MailManagerImpl.class),
@Provide(component = MailConfig.class)})
public class MailManagerProvider extends AbstractProvider {
public final static String MAIL_CONFIG = "mail.cfg";
public final static String RECIPIENTS = "recipients";
public final static String LOG_THRESHOLD = "threshold";
public final static String MAIL_PROVIDER = "mailProvider";
public MailManagerProvider(ModuleLoader loader) {
super("MAIL_MANAGER_PROVIDER", loader, false);
}
@Override
public void setup() throws SetupException {
ConfigurationProviderImpl configProvider =
this.requireNow(ConfigurationProviderImpl.class, true);
Configuration config = null;
try {
config = configProvider.open(MAIL_CONFIG);
} catch (Exception e) {
throw new SetupException(e);
}
// HACK: MailConfig is a total hack currently
MailConfig cfg = new MailConfig(
(ConfigurationImpl) config,
configProvider,
config.readString(RECIPIENTS),
config.readString(LOG_THRESHOLD),
config.readString(MAIL_PROVIDER));
this.provideComponent(cfg);
MailManagerImpl mailManager = new MailManagerImpl(cfg.getSender());
this.provideComponent(mailManager);
}
}