11package org .simplejavamail .mailer .internal .util ;
22
33import org .simplejavamail .api .internal .batchsupport .LifecycleDelegatingTransport ;
4+ import org .simplejavamail .internal .modules .BatchModule ;
45import org .simplejavamail .internal .modules .ModuleLoader ;
56import org .slf4j .Logger ;
67
78import org .jetbrains .annotations .NotNull ;
8- import org . jetbrains . annotations . Nullable ;
9+
910import javax .mail .Address ;
1011import javax .mail .MessagingException ;
1112import javax .mail .Session ;
@@ -53,14 +54,7 @@ public void run(final Transport transport) {
5354 private static void runOnSessionTransport (@ NotNull UUID clusterKey , Session session , final boolean stickySession , TransportRunnable runnable )
5455 throws MessagingException {
5556 if (ModuleLoader .batchModuleAvailable ()) {
56- LifecycleDelegatingTransport delegatingTransport = ModuleLoader .loadBatchModule ().acquireTransport (clusterKey , session , stickySession );
57- try {
58- runnable .run (delegatingTransport .getTransport ());
59- } catch (final MessagingException messagingException ) {
60- delegatingTransport .signalTransportFailed ();
61- throw messagingException ;
62- }
63- delegatingTransport .signalTransportUsed ();
57+ sendUsingConnectionPool (ModuleLoader .loadBatchModule (), clusterKey , session , stickySession , runnable );
6458 } else {
6559 try (Transport transport = session .getTransport ()) {
6660 transport .connect ();
@@ -71,6 +65,18 @@ private static void runOnSessionTransport(@NotNull UUID clusterKey, Session sess
7165 }
7266 }
7367
68+ private static void sendUsingConnectionPool (@ NotNull BatchModule batchModule , @ NotNull UUID clusterKey , Session session , boolean stickySession , TransportRunnable runnable ) throws MessagingException {
69+ LifecycleDelegatingTransport delegatingTransport = batchModule .acquireTransport (clusterKey , session , stickySession );
70+ try {
71+ runnable .run (delegatingTransport .getTransport ());
72+ } catch (final Throwable t ) {
73+ // always make sure claimed resources are released
74+ delegatingTransport .signalTransportFailed ();
75+ throw t ;
76+ }
77+ delegatingTransport .signalTransportUsed ();
78+ }
79+
7480 public interface TransportRunnable {
7581 void run (Transport transport )
7682 throws MessagingException ;
0 commit comments