Use try-with-resources
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 @@
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 @@
// 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 @@
final String description)
throws EmailException
{
- // verify that the DataSource is valid
- try
+ if (ds == null)
{
- final InputStream is = ds != null ? ds.getInputStream() : null;
- if (is != null)
- {
- // close the input stream to prevent file locking on windows
- is.close();
- }
-
+ throw new EmailException("Invalid Datasource");
+ }
+ // verify that the DataSource is valid
+ try (InputStream is = ds.getInputStream())
+ {
if (is == null)
{
throw new EmailException("Invalid Datasource");
@@ -433,7 +429,6 @@
{
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 @@
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 @@
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;
}