package bo.gotthardt.email;
import bo.gotthardt.email.sendgrid.HasSendGridConfiguration;
import bo.gotthardt.email.sendgrid.SendGridEmailService;
import lombok.extern.slf4j.Slf4j;
import org.glassfish.hk2.api.Factory;
import org.glassfish.hk2.api.ServiceLocator;
import javax.inject.Inject;
@Slf4j
public class EmailServiceFactory implements Factory<EmailService> {
private final HasSendGridConfiguration config;
private final ServiceLocator locator;
@Inject
public EmailServiceFactory(HasSendGridConfiguration config, ServiceLocator locator) {
this.config = config;
this.locator = locator;
}
@Override
public EmailService provide() {
if (!config.getEmail().isEnabled() || config.getSendGrid() == null) {
log.info("Email sending disabled, logging them to console instead.");
return new LoggerEmailService();
} else {
log.info("Email sending enabled with SendGrid username {}.", config.getSendGrid().getUsername());
return locator.getService(SendGridEmailService.class);
}
}
@Override
public void dispose(EmailService instance) {
// Empty on purpose.
}
}