You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ol...@apache.org on 2021/12/05 21:09:05 UTC
[sling-org-apache-sling-commons-messaging-mail] 01/02: SLING-10966 Use dedicated Properties and Session per SimpleMessageBuilder instance
This is an automated email from the ASF dual-hosted git repository.
olli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-commons-messaging-mail.git
commit 3c83b9a1a11f301c7eb33cb655defbe1789e498b
Author: Oliver Lietz <ol...@apache.org>
AuthorDate: Sun Dec 5 22:04:51 2021 +0100
SLING-10966 Use dedicated Properties and Session per SimpleMessageBuilder instance
---
.../commons/messaging/mail/internal/SimpleMailService.java | 12 +++++++-----
.../messaging/mail/internal/SimpleMailServiceTest.java | 8 ++++----
2 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/src/main/java/org/apache/sling/commons/messaging/mail/internal/SimpleMailService.java b/src/main/java/org/apache/sling/commons/messaging/mail/internal/SimpleMailService.java
index c2221f9..6504327 100644
--- a/src/main/java/org/apache/sling/commons/messaging/mail/internal/SimpleMailService.java
+++ b/src/main/java/org/apache/sling/commons/messaging/mail/internal/SimpleMailService.java
@@ -123,7 +123,7 @@ public final class SimpleMailService implements MailService {
private SimpleMailServiceConfiguration configuration;
- private Session session;
+ private Properties properties;
private final Logger logger = LoggerFactory.getLogger(SimpleMailService.class);
@@ -153,7 +153,7 @@ public final class SimpleMailService implements MailService {
this.configuration = null;
threadPoolManager.release(threadPool);
threadPool = null;
- session = null;
+ properties = null;
}
private void configure(final SimpleMailServiceConfiguration configuration) {
@@ -166,12 +166,14 @@ public final class SimpleMailService implements MailService {
if (Objects.nonNull(from) && !from.isBlank()) {
properties.setProperty(MAIL_SMTPS_FROM, from.trim());
}
-
- session = Session.getInstance(properties);
+ this.properties = properties;
}
@Override
public @NotNull MessageBuilder getMessageBuilder() {
+ final Properties properties = new Properties();
+ properties.putAll(this.properties);
+ final Session session = Session.getInstance(properties);
return new SimpleMessageBuilder(session);
}
@@ -191,7 +193,7 @@ public final class SimpleMailService implements MailService {
final ClassLoader tccl = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
final String password = cryptoService.decrypt(configuration.password());
- try (Transport transport = session.getTransport(SMTPS_PROTOCOL)) {
+ try (Transport transport = message.getSession().getTransport(SMTPS_PROTOCOL)) {
final List<ConnectionListener> connectionListeners = this.connectionListeners;
connectionListeners.forEach(transport::addConnectionListener);
final List<TransportListener> transportListeners = this.transportListeners;
diff --git a/src/test/java/org/apache/sling/commons/messaging/mail/internal/SimpleMailServiceTest.java b/src/test/java/org/apache/sling/commons/messaging/mail/internal/SimpleMailServiceTest.java
index d11d10e..f4c309e 100644
--- a/src/test/java/org/apache/sling/commons/messaging/mail/internal/SimpleMailServiceTest.java
+++ b/src/test/java/org/apache/sling/commons/messaging/mail/internal/SimpleMailServiceTest.java
@@ -46,13 +46,14 @@ public class SimpleMailServiceTest {
@Test
public void testComponentLifecycle() throws Exception {
+ final Transport transport = mock(Transport.class);
+ final Session session = mock(Session.class);
+ when(session.getTransport("smtps")).thenReturn(transport);
final MimeMessage message = mock(MimeMessage.class);
+ when(message.getSession()).thenReturn(session);
final ThreadPoolManager threadPoolManager = mock(ThreadPoolManager.class);
when(threadPoolManager.get("default")).thenReturn(new DefaultThreadPool());
final CryptoService cryptoService = mock(CryptoService.class);
- final Transport transport = mock(Transport.class);
- final Session session = mock(Session.class);
- when(session.getTransport("smtps")).thenReturn(transport);
final SimpleMailService service = new SimpleMailService();
FieldUtils.writeDeclaredField(service, "threadPoolManager", threadPoolManager, true);
FieldUtils.writeDeclaredField(service, "cryptoService", cryptoService, true);
@@ -62,7 +63,6 @@ public class SimpleMailServiceTest {
final SimpleMailServiceConfiguration configuration = mock(SimpleMailServiceConfiguration.class);
when(configuration.threadpool_name()).thenReturn("default");
MethodUtils.invokeMethod(service, true, "activate", configuration);
- FieldUtils.writeDeclaredField(service, "session", session, true);
service.sendMessage(message);
}
{ // modified