You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ma...@apache.org on 2019/11/13 14:58:08 UTC

[james-project] 07/09: [Refactoring] more try-with-resources

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

matthieu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit f8dc39e065aaba496330e2bb6c5b4bf46df197fb
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Tue Nov 12 23:02:23 2019 +0100

    [Refactoring] more try-with-resources
---
 .../mailrepository/jdbc/JDBCMailRepository.java    | 74 +++++++---------------
 1 file changed, 22 insertions(+), 52 deletions(-)

diff --git a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
index dcebcc6..b5a8e7b 100644
--- a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
+++ b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
@@ -32,7 +32,6 @@ import java.sql.DatabaseMetaData;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
-import java.sql.Statement;
 import java.sql.Types;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -478,10 +477,8 @@ public class JDBCMailRepository implements MailRepository, Configurable, Initial
     }
 
     private void insertMessage(Mail mc, Connection conn, MessageInputStream is) throws SQLException, IOException {
-        PreparedStatement insertMessage = null;
-        try {
-            String insertMessageSQL = sqlQueries.getSqlString("insertMessageSQL", true);
-            insertMessage = conn.prepareStatement(insertMessageSQL);
+        String insertMessageSQL = sqlQueries.getSqlString("insertMessageSQL", true);
+        try (PreparedStatement insertMessage = conn.prepareStatement(insertMessageSQL)) {
             int numberOfParameters = insertMessage.getParameterMetaData().getParameterCount();
             insertMessage.setString(1, mc.getName());
             insertMessage.setString(2, repositoryName);
@@ -534,62 +531,47 @@ public class JDBCMailRepository implements MailRepository, Configurable, Initial
             }
 
             insertMessage.execute();
-        } finally {
-            theJDBCUtil.closeJDBCStatement(insertMessage);
         }
     }
 
     private void updateMessageBody(Mail mc, Connection conn, MessageInputStream is) throws SQLException {
-        PreparedStatement updateMessageBody = conn.prepareStatement(sqlQueries.getSqlString("updateMessageBodySQL", true));
-        try {
+        try (PreparedStatement updateMessageBody = conn.prepareStatement(sqlQueries.getSqlString("updateMessageBodySQL", true))) {
             updateMessageBody.setBinaryStream(1, is, (int) is.getSize());
             updateMessageBody.setString(2, mc.getName());
             updateMessageBody.setString(3, repositoryName);
             updateMessageBody.execute();
-
-        } finally {
-            theJDBCUtil.closeJDBCStatement(updateMessageBody);
         }
     }
 
     private void updateMailAttributes(Mail mc, Connection conn) throws IOException {
         String updateMessageAttrSql = sqlQueries.getSqlString("updateMessageAttributesSQL", false);
-        PreparedStatement updateMessageAttr = null;
-        try {
-            updateMessageAttr = conn.prepareStatement(updateMessageAttrSql);
-            try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                 ObjectOutputStream oos = new ObjectOutputStream(baos)) {
-                if (mc instanceof MailImpl) {
-                    oos.writeObject(((MailImpl) mc).getAttributesRaw());
-                } else {
-                    Map<String, Serializable> temp = mc.attributes()
-                        .collect(Guavate.toImmutableMap(
-                                attribute -> attribute.getName().asString(),
-                                attribute -> (Serializable) attribute.getValue().value()
-                        ));
-                    oos.writeObject(temp);
-                }
-                oos.flush();
-                ByteArrayInputStream attrInputStream = new ByteArrayInputStream(baos.toByteArray());
-                updateMessageAttr.setBinaryStream(1, attrInputStream, baos.size());
+        try (PreparedStatement updateMessageAttr = conn.prepareStatement(updateMessageAttrSql);
+             ByteArrayOutputStream baos = new ByteArrayOutputStream();
+             ObjectOutputStream oos = new ObjectOutputStream(baos)) {
+            if (mc instanceof MailImpl) {
+                oos.writeObject(((MailImpl) mc).getAttributesRaw());
+            } else {
+                Map<String, Serializable> temp = mc.attributes()
+                    .collect(Guavate.toImmutableMap(
+                            attribute -> attribute.getName().asString(),
+                            attribute -> (Serializable) attribute.getValue().value()
+                    ));
+                oos.writeObject(temp);
             }
+            oos.flush();
+            ByteArrayInputStream attrInputStream = new ByteArrayInputStream(baos.toByteArray());
+            updateMessageAttr.setBinaryStream(1, attrInputStream, baos.size());
             updateMessageAttr.setString(2, mc.getName());
             updateMessageAttr.setString(3, repositoryName);
             updateMessageAttr.execute();
         } catch (SQLException sqle) {
             LOGGER.info("JDBCMailRepository: Trying to update mail attributes failed.", sqle);
-
-        } finally {
-            theJDBCUtil.closeJDBCStatement(updateMessageAttr);
         }
     }
 
     private void updateMessage(Mail mc, Connection conn) throws SQLException {
         // Update the existing record
-        PreparedStatement updateMessage = null;
-
-        try {
-            updateMessage = conn.prepareStatement(sqlQueries.getSqlString("updateMessageSQL", true));
+        try (PreparedStatement updateMessage = conn.prepareStatement(sqlQueries.getSqlString("updateMessageSQL", true))) {
             updateMessage.setString(1, mc.getState());
             updateMessage.setString(2, mc.getErrorMessage());
             if (mc.getMaybeSender().isNullSender()) {
@@ -611,28 +593,16 @@ public class JDBCMailRepository implements MailRepository, Configurable, Initial
             updateMessage.setString(8, mc.getName());
             updateMessage.setString(9, repositoryName);
             updateMessage.execute();
-        } finally {
-            Statement localUpdateMessage = updateMessage;
-            // Clear reference to statement
-            theJDBCUtil.closeJDBCStatement(localUpdateMessage);
         }
     }
 
     private boolean checkMessageExists(Mail mc, Connection conn) throws SQLException {
-        PreparedStatement checkMessageExists = null;
-        ResultSet rsExists = null;
-        boolean exists;
-        try {
-            checkMessageExists = conn.prepareStatement(sqlQueries.getSqlString("checkMessageExistsSQL", true));
+        try (PreparedStatement checkMessageExists = conn.prepareStatement(sqlQueries.getSqlString("checkMessageExistsSQL", true))) {
             checkMessageExists.setString(1, mc.getName());
             checkMessageExists.setString(2, repositoryName);
-            rsExists = checkMessageExists.executeQuery();
-            exists = rsExists.next() && rsExists.getInt(1) > 0;
-        } finally {
-            theJDBCUtil.closeJDBCResultSet(rsExists);
-            theJDBCUtil.closeJDBCStatement(checkMessageExists);
+            ResultSet rsExists = checkMessageExists.executeQuery();
+            return rsExists.next() && rsExists.getInt(1) > 0;
         }
-        return exists;
     }
 
     private boolean saveBodyRequired(Mail mc) throws MessagingException {


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org