package io.pivotal.cfapp.config; import com.sendgrid.SendGrid; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration; import org.springframework.boot.autoconfigure.sendgrid.SendGridAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.mail.javamail.JavaMailSender; import io.pivotal.cfapp.notifier.EmailNotifier; import io.pivotal.cfapp.notifier.JavaMailNotifier; import io.pivotal.cfapp.notifier.SendGridNotifier; @Configuration public class NotifierConfig { @Configuration @ConditionalOnProperty(prefix="notification", name="engine", havingValue="java-mail") @EnableAutoConfiguration(exclude = { SendGridAutoConfiguration.class }) static class MailConfig { @Bean public EmailNotifier javaMailNotifier(JavaMailSender javaMailSender) { return new JavaMailNotifier(javaMailSender); } } @Configuration @ConditionalOnProperty(prefix="notification", name="engine", havingValue="sendgrid") @EnableAutoConfiguration(exclude = { MailSenderAutoConfiguration.class }) static class SendGridConfig { @Bean public EmailNotifier sendGridNotifier(SendGrid sendGrid) { return new SendGridNotifier(sendGrid); } } @Configuration @ConditionalOnProperty(prefix="notification", name="engine", havingValue="none", matchIfMissing=true) @EnableAutoConfiguration(exclude = { MailSenderAutoConfiguration.class, SendGridAutoConfiguration.class }) static class NoMailConfig {} }