diff --git a/src/main/java/org/nrg/xnat/configuration/SchedulerConfig.java b/src/main/java/org/nrg/xnat/configuration/SchedulerConfig.java index 5f6253bfa24c5103af0d47f044fcc7481ec70945..806152a665004db677cdcb429bd9929a698c60d7 100644 --- a/src/main/java/org/nrg/xnat/configuration/SchedulerConfig.java +++ b/src/main/java/org/nrg/xnat/configuration/SchedulerConfig.java @@ -94,6 +94,8 @@ public class SchedulerConfig implements SchedulingConfigurer { XDAT.getContextService().getBean(NrgEventService.class).triggerEvent(new PreferenceEvent("aliasTokenTimeout", String.valueOf(XDAT.getSiteConfigPreferences().getAliasTokenTimeout()))); XDAT.getContextService().getBean(NrgEventService.class).triggerEvent(new PreferenceEvent("inactivityBeforeLockout", String.valueOf(XDAT.getSiteConfigPreferences().getInactivityBeforeLockout()))); XDAT.getContextService().getBean(NrgEventService.class).triggerEvent(new PreferenceEvent("maxFailedLoginsLockoutDuration", String.valueOf(XDAT.getSiteConfigPreferences().getMaxFailedLoginsLockoutDuration()))); + XDAT.getContextService().getBean(NrgEventService.class).triggerEvent(new PreferenceEvent("emailPrefix", String.valueOf(XDAT.getNotificationsPreferences().getEmailPrefix()))); + XDAT.getContextService().getBean(NrgEventService.class).triggerEvent(new PreferenceEvent("host", String.valueOf(XDAT.getNotificationsPreferences().getHostname()))); for (final TriggerTask triggerTask : _triggerTasks) { taskRegistrar.addTriggerTask(triggerTask); } diff --git a/src/main/java/org/nrg/xnat/event/listeners/methods/SmtpHandlerMethod.java b/src/main/java/org/nrg/xnat/event/listeners/methods/SmtpHandlerMethod.java new file mode 100644 index 0000000000000000000000000000000000000000..89de475e80a89881bb38a31c92fe1411b5a69ee2 --- /dev/null +++ b/src/main/java/org/nrg/xnat/event/listeners/methods/SmtpHandlerMethod.java @@ -0,0 +1,59 @@ +package org.nrg.xnat.event.listeners.methods; + +import com.google.common.collect.ImmutableList; +import org.nrg.xdat.XDAT; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.mail.javamail.JavaMailSenderImpl; +import org.springframework.stereotype.Component; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +@Component +public class SmtpHandlerMethod extends AbstractNotificationsPreferenceHandlerMethod { + @Override + public List<String> getHandledPreferences() { + return PREFERENCES; + } + + @Override + public void handlePreferences(final Map<String, String> values) { + if (!Collections.disjoint(PREFERENCES, values.keySet())) { + updateSmtp(); + } + } + + @Override + public void handlePreference(final String preference, final String value) { + if(PREFERENCES.contains(preference)){ + updateSmtp(); + } + } + + private void updateSmtp(){ + try { + XDAT.getContextService().getBean(JavaMailSenderImpl.class).setHost(XDAT.getNotificationsPreferences().getHostname()); + XDAT.getContextService().getBean(JavaMailSenderImpl.class).setPort(XDAT.getNotificationsPreferences().getPort()); + XDAT.getContextService().getBean(JavaMailSenderImpl.class).setUsername(XDAT.getNotificationsPreferences().getUsername()); + XDAT.getContextService().getBean(JavaMailSenderImpl.class).setPassword(XDAT.getNotificationsPreferences().getPassword()); + XDAT.getContextService().getBean(JavaMailSenderImpl.class).setProtocol(XDAT.getNotificationsPreferences().getProtocol()); + + } catch (Exception e1) { + _log.error("", e1); + } + } + + private static final Logger _log = LoggerFactory.getLogger(SmtpHandlerMethod.class); + private static final List<String> PREFERENCES = ImmutableList.copyOf(Arrays.asList("smtp.enabled", "host","port", "username","password", "protocol")); + + @Autowired + @Lazy + private JdbcTemplate _template; + +}