11package com.uci.utils;
22
33import java.time.Duration;
4- import java.util.UUID ;
4+ import java.util.Properties ;
55
66import org.springframework.beans.factory.annotation.Value;
77import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
1111import org.springframework.data.redis.core.RedisTemplate;
1212import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
1313import org.springframework.data.redis.serializer.StringRedisSerializer;
14+ import org.springframework.mail.javamail.JavaMailSender;
15+ import org.springframework.mail.javamail.JavaMailSenderImpl;
1416import org.springframework.web.reactive.function.client.WebClient;
1517
1618import com.github.benmanes.caffeine.cache.Cache;
1719import com.github.benmanes.caffeine.cache.Caffeine;
1820
19- import io.fusionauth.client.FusionAuthClient;
20- import io.fusionauth.domain.api.LoginRequest;
2121
2222@Configuration
2323@EnableAutoConfiguration
@@ -31,19 +31,28 @@ public class UtilAppConfiguration {
3131
3232 @Value("${caffeine.cache.max.size}")
3333 public Integer cacheMaxSize;
34-
34+
3535 @Value("${caffeine.cache.exprie.duration.seconds}")
3636 public Integer cacheExpireDuration;
37-
37+
3838 @Value("${spring.redis.db}")
3939 private String redisDb;
40-
40+
4141 @Value("${spring.redis.host}")
4242 private String redisHost;
43-
4443 @Value("${spring.redis.number.port}")
4544 private String redisPort;
46-
45+
46+ // Email Config
47+ @Value("${spring.mail.port}")
48+ private String mailPort;
49+ @Value("${spring.mail.host}")
50+ private String mailHost;
51+ @Value("${spring.mail.username}")
52+ private String mailUsername;
53+ @Value("${spring.mail.password}")
54+ private String mailPassword;
55+
4756 public Caffeine<Object, Object> caffeineCacheBuilder() {
4857 return Caffeine.newBuilder()
4958 .maximumSize(cacheMaxSize)
@@ -60,27 +69,44 @@ public Cache<Object, Object> cache() {
6069 public WebClient getWebClient() {
6170 return WebClient.builder().baseUrl(CAMPAIGN_URL).defaultHeader("admin-token", CAMPAIGN_ADMIN_TOKEN).build();
6271 }
63-
72+
6473 @SuppressWarnings("ALL")
6574 @Bean
6675 JedisConnectionFactory jedisConnectionFactory() {
6776 JedisConnectionFactory jedisConFactory
68- = new JedisConnectionFactory();
69- System.out.println("redisPort:"+redisPort+",redisDb: "+redisDb+", redisHost: "+redisHost);
70- jedisConFactory.setHostName(redisHost);
71- Integer port = Integer.parseInt(redisPort);
72- jedisConFactory.setPort(port);
73- Integer dbIndex = Integer.parseInt(redisDb);
74- jedisConFactory.setDatabase(dbIndex);
75- return jedisConFactory;
77+ = new JedisConnectionFactory();
78+ System.out.println("redisPort:"+redisPort+",redisDb: "+redisDb+", redisHost: "+redisHost);
79+ jedisConFactory.setHostName(redisHost);
80+ Integer port = Integer.parseInt(redisPort);
81+ jedisConFactory.setPort(port);
82+ Integer dbIndex = Integer.parseInt(redisDb);
83+ jedisConFactory.setDatabase(dbIndex);
84+ return jedisConFactory;
7685 }
7786
7887 @Bean
7988 public RedisTemplate<String, Object> redisTemplate() {
80- RedisTemplate<String, Object> template = new RedisTemplate<>();
81- template.setConnectionFactory(jedisConnectionFactory());
82- template.setKeySerializer(new StringRedisSerializer());
83- template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
84- return template;
89+ RedisTemplate<String, Object> template = new RedisTemplate<>();
90+ template.setConnectionFactory(jedisConnectionFactory());
91+ template.setKeySerializer(new StringRedisSerializer());
92+ template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
93+ return template;
94+ }
95+
96+ @Bean
97+ public JavaMailSender getJavaMailSender() {
98+ JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
99+ mailSender.setHost(mailHost);
100+ mailSender.setPort(Integer.parseInt(mailPort));
101+ mailSender.setUsername(mailUsername);
102+ mailSender.setPassword(mailPassword);
103+
104+ Properties props = mailSender.getJavaMailProperties();
105+ props.put("mail.transport.protocol", "smtp");
106+ props.put("mail.smtp.auth", "true");
107+ props.put("mail.smtp.starttls.enable", "true");
108+ props.put("mail.debug", "true");
109+ return mailSender;
110+
85111 }
86112}
0 commit comments