You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2022/06/09 13:19:04 UTC

[commons-email] 05/06: Use try-with-resources

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-email.git

commit e93e4e81652b8d30854815023ad9cf91e28ce230
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Thu Jun 9 09:18:44 2022 -0400

    Use try-with-resources
---
 src/main/java/org/apache/commons/mail/Email.java        |  1 +
 .../java/org/apache/commons/mail/MultiPartEmail.java    | 17 ++++++-----------
 .../mail/resolver/DataSourceClassPathResolver.java      |  2 --
 .../org/apache/commons/mail/util/MimeMessageParser.java |  7 +++++--
 4 files changed, 12 insertions(+), 15 deletions(-)

diff --git a/src/main/java/org/apache/commons/mail/Email.java b/src/main/java/org/apache/commons/mail/Email.java
index ece572b..8b50466 100644
--- a/src/main/java/org/apache/commons/mail/Email.java
+++ b/src/main/java/org/apache/commons/mail/Email.java
@@ -1432,6 +1432,7 @@ public abstract class Email
 
             if (this.popBeforeSmtp)
             {
+                // TODO Why is this not a Store leak? When to close?
                 final Store store = session.getStore("pop3");
                 store.connect(this.popHost, this.popUsername, this.popPassword);
             }
diff --git a/src/main/java/org/apache/commons/mail/MultiPartEmail.java b/src/main/java/org/apache/commons/mail/MultiPartEmail.java
index 15358f7..9a22e99 100644
--- a/src/main/java/org/apache/commons/mail/MultiPartEmail.java
+++ b/src/main/java/org/apache/commons/mail/MultiPartEmail.java
@@ -386,8 +386,7 @@ public class MultiPartEmail extends Email
         // verify that the URL is valid
        try
        {
-           final InputStream is = url.openStream();
-           is.close();
+           url.openStream().close();
        }
        catch (final IOException e)
        {
@@ -414,16 +413,13 @@ public class MultiPartEmail extends Email
         final String description)
         throws EmailException
     {
+        if (ds == null)
+        {
+            throw new EmailException("Invalid Datasource");
+        }
         // verify that the DataSource is valid
-        try
+        try (InputStream is = ds.getInputStream())
         {
-            final InputStream is = ds != null ? ds.getInputStream() : null;
-            if (is != null)
-            {
-                // close the input stream to prevent file locking on windows
-                is.close();
-            }
-
             if (is == null)
             {
                 throw new EmailException("Invalid Datasource");
@@ -433,7 +429,6 @@ public class MultiPartEmail extends Email
         {
             throw new EmailException("Invalid Datasource", e);
         }
-
         return attach(ds, name, description, EmailAttachment.ATTACHMENT);
     }
 
diff --git a/src/main/java/org/apache/commons/mail/resolver/DataSourceClassPathResolver.java b/src/main/java/org/apache/commons/mail/resolver/DataSourceClassPathResolver.java
index 4c34ef4..8154144 100644
--- a/src/main/java/org/apache/commons/mail/resolver/DataSourceClassPathResolver.java
+++ b/src/main/java/org/apache/commons/mail/resolver/DataSourceClassPathResolver.java
@@ -105,8 +105,6 @@ public class DataSourceClassPathResolver extends DataSourceBaseResolver
                     result = ds;
                 }
             }
-
-
             return result;
         }
         catch (final IOException e)
diff --git a/src/main/java/org/apache/commons/mail/util/MimeMessageParser.java b/src/main/java/org/apache/commons/mail/util/MimeMessageParser.java
index 6d0f391..e29269e 100644
--- a/src/main/java/org/apache/commons/mail/util/MimeMessageParser.java
+++ b/src/main/java/org/apache/commons/mail/util/MimeMessageParser.java
@@ -270,10 +270,13 @@ public class MimeMessageParser
         final DataHandler dataHandler = part.getDataHandler();
         final DataSource dataSource = dataHandler.getDataSource();
         final String contentType = getBaseMimeType(dataSource.getContentType());
-        final byte[] content = this.getContent(dataSource.getInputStream());
+        byte[] content;
+        try (InputStream inputStream = dataSource.getInputStream()) 
+        {
+            content = this.getContent(inputStream);
+        }
         final ByteArrayDataSource result = new ByteArrayDataSource(content, contentType);
         final String dataSourceName = getDataSourceName(part, dataSource);
-
         result.setName(dataSourceName);
         return result;
     }