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 bt...@apache.org on 2018/08/03 08:52:20 UTC

[07/20] james-project git commit: JAMES-2517 Use try-with-resource in more places

http://git-wip-us.apache.org/repos/asf/james-project/blob/3c275fe6/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/user/MaildirSubscriptionMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/user/MaildirSubscriptionMapper.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/user/MaildirSubscriptionMapper.java
index b235c89..aaf15bf 100644
--- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/user/MaildirSubscriptionMapper.java
+++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/user/MaildirSubscriptionMapper.java
@@ -137,14 +137,13 @@ public class MaildirSubscriptionMapper extends NonTransactionalMapper implements
         if (!subscriptionFile.exists()) {
             return ImmutableSet.of();
         }
-        FileReader fileReader = new FileReader(subscriptionFile);
-        BufferedReader reader = new BufferedReader(fileReader);
-        Set<String> subscriptions = reader.lines()
-            .filter(subscription -> !subscription.equals(""))
-            .collect(Guavate.toImmutableSet());
-        reader.close();
-        fileReader.close();
-        return subscriptions;
+        try (FileReader fileReader = new FileReader(subscriptionFile)) {
+            try (BufferedReader reader = new BufferedReader(fileReader)) {
+                return reader.lines()
+                    .filter(subscription -> !subscription.equals(""))
+                    .collect(Guavate.toImmutableSet());
+            }
+        }
     }
     
     /**
@@ -161,21 +160,19 @@ public class MaildirSubscriptionMapper extends NonTransactionalMapper implements
                 throw new IOException("Could not create folder " + mailboxFolder);
             }
         }
-        
+
         File subscriptionFile = new File(mailboxFolder, FILE_SUBSCRIPTION);
         if (!subscriptionFile.exists()) {
             if (!subscriptionFile.createNewFile()) {
                 throw new IOException("Could not create file " + subscriptionFile);
             }
         }
-                
-        FileWriter fileWriter = new FileWriter(subscriptionFile);
-        PrintWriter writer = new PrintWriter(fileWriter);
-        for (String subscription : sortedSubscriptions) {
-            writer.println(subscription);
+
+        try (FileWriter fileWriter = new FileWriter(subscriptionFile)) {
+            try (PrintWriter writer = new PrintWriter(fileWriter)) {
+                sortedSubscriptions.forEach(writer::println);
+            }
         }
-        writer.close();
-        fileWriter.close();
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3c275fe6/mailet/base/src/main/java/org/apache/mailet/base/AutomaticallySentMailDetectorImpl.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/main/java/org/apache/mailet/base/AutomaticallySentMailDetectorImpl.java b/mailet/base/src/main/java/org/apache/mailet/base/AutomaticallySentMailDetectorImpl.java
index eb19122..43645a3 100644
--- a/mailet/base/src/main/java/org/apache/mailet/base/AutomaticallySentMailDetectorImpl.java
+++ b/mailet/base/src/main/java/org/apache/mailet/base/AutomaticallySentMailDetectorImpl.java
@@ -110,12 +110,13 @@ public class AutomaticallySentMailDetectorImpl implements AutomaticallySentMailD
             @Override
             public void body(BodyDescriptor bodyDescriptor, InputStream inputStream) throws MimeException, IOException {
                 if (bodyDescriptor.getMimeType().equalsIgnoreCase("message/disposition-notification")) {
-                    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
-                    String line;
-                    while ((line = reader.readLine()) != null) {
-                        if (line.startsWith("Disposition:")) {
-                            if (line.contains("MDN-sent-automatically") || line.contains("automatic-action")) {
-                                resultCollector.setResult(true);
+                    try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
+                        String line;
+                        while ((line = reader.readLine()) != null) {
+                            if (line.startsWith("Disposition:")) {
+                                if (line.contains("MDN-sent-automatically") || line.contains("automatic-action")) {
+                                    resultCollector.setResult(true);
+                                }
                             }
                         }
                     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3c275fe6/mailet/standard/src/main/java/org/apache/james/transport/mailets/LogMessage.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/LogMessage.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/LogMessage.java
index 0707359..72a6839 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/LogMessage.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/LogMessage.java
@@ -117,8 +117,9 @@ public class LogMessage extends GenericMailet {
 
     private void logBody(MimeMessage message) throws MessagingException, IOException {
         if (body && logger.isInfoEnabled()) {
-            InputStream inputStream = ByteStreams.limit(message.getDataHandler().getInputStream(), lengthToLog(message));
-            logger.info(IOUtils.toString(inputStream, StandardCharsets.UTF_8));
+            try (InputStream inputStream = ByteStreams.limit(message.getDataHandler().getInputStream(), lengthToLog(message))) {
+                logger.info(IOUtils.toString(inputStream, StandardCharsets.UTF_8));
+            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3c275fe6/mpt/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java
----------------------------------------------------------------------
diff --git a/mpt/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java b/mpt/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java
index 6d3a08b..3fa1546 100644
--- a/mpt/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java
+++ b/mpt/antlib/src/main/java/org/apache/james/mpt/ant/MailProtocolTestTask.java
@@ -20,6 +20,7 @@
 package org.apache.james.mpt.ant;
 
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStream;
@@ -387,19 +388,22 @@ public class MailProtocolTestTask extends Task implements Monitor {
             validate();
             try {
                 final File scriptFile = getScript();
-                final Reader reader;
-                if (scriptFile == null) {
-                    reader = new StringReader(scriptText);
-                } else {
-                    reader = new FileReader(scriptFile);
-                }
                 final ScriptedUserAdder adder = new ScriptedUserAdder(getHost(), port, MailProtocolTestTask.this);
-                adder.addUser(getUser(), getPasswd(), reader);
+                try (Reader reader = newReader(scriptFile)) {
+                    adder.addUser(getUser(), getPasswd(), reader);
+                }
             } catch (Exception e) {
                 log(e.getMessage(), Project.MSG_ERR);
                 throw new BuildException("User addition failed: \n" + e.getMessage(), e);
             }
-        } 
+        }
+
+        private Reader newReader(File scriptFile) throws FileNotFoundException {
+            if (scriptFile == null) {
+                return new StringReader(scriptText);
+            }
+            return new FileReader(scriptFile);
+        }
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/3c275fe6/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java
----------------------------------------------------------------------
diff --git a/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java b/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java
index 816c9e6..af13b67 100644
--- a/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java
+++ b/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java
@@ -754,13 +754,14 @@ public class MailImpl implements Disposable, Mail {
      */
     private static Object cloneSerializableObject(Object o) throws IOException, ClassNotFoundException {
         ByteArrayOutputStream b = new ByteArrayOutputStream();
-        ObjectOutputStream out = new ObjectOutputStream(b);
-        out.writeObject(o);
-        out.flush();
-        out.close();
+        try (ObjectOutputStream out = new ObjectOutputStream(b)) {
+            out.writeObject(o);
+            out.flush();
+        }
         ByteArrayInputStream bi = new ByteArrayInputStream(b.toByteArray());
-        ObjectInputStream in = new ObjectInputStream(bi);
-        return in.readObject();
+        try (ObjectInputStream in = new ObjectInputStream(bi)) {
+            return in.readObject();
+        }
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/3c275fe6/server/data/data-hbase/src/main/java/org/apache/james/system/hbase/TablePool.java
----------------------------------------------------------------------
diff --git a/server/data/data-hbase/src/main/java/org/apache/james/system/hbase/TablePool.java b/server/data/data-hbase/src/main/java/org/apache/james/system/hbase/TablePool.java
index c83a90d..b1ca529 100644
--- a/server/data/data-hbase/src/main/java/org/apache/james/system/hbase/TablePool.java
+++ b/server/data/data-hbase/src/main/java/org/apache/james/system/hbase/TablePool.java
@@ -116,8 +116,7 @@ public class TablePool {
      * @throws IOException
      */
     private static void ensureTable(byte[] tableName, byte[] columnFamilyName) throws IOException {
-        HBaseAdmin hbaseAdmin = new HBaseAdmin(configuration);
-        try {
+        try (HBaseAdmin hbaseAdmin = new HBaseAdmin(configuration)) {
             if (!hbaseAdmin.tableExists(tableName)) {
                 HTableDescriptor desc = new HTableDescriptor(tableName);
                 HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(columnFamilyName);
@@ -125,8 +124,6 @@ public class TablePool {
                 desc.addFamily(hColumnDescriptor);
                 hbaseAdmin.createTable(desc);
             }
-        } finally {
-            hbaseAdmin.close();
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3c275fe6/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/JDBCRecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/JDBCRecipientRewriteTable.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/JDBCRecipientRewriteTable.java
index 3cdf57f..5e62058 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/JDBCRecipientRewriteTable.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/JDBCRecipientRewriteTable.java
@@ -144,10 +144,8 @@ public class JDBCRecipientRewriteTable extends AbstractRecipientRewriteTable {
         int pos = datasourceName.indexOf("/");
         String tableName = datasourceName.substring(pos + 1);
         datasourceName = datasourceName.substring(0, pos);
-        Connection conn = null;
 
-        try {
-            conn = datasource.getConnection();
+        try (Connection conn = datasource.getConnection()) {
 
             // Check if the required table exists. If not, complain.
             DatabaseMetaData dbMetaData = conn.getMetaData();
@@ -165,8 +163,6 @@ public class JDBCRecipientRewriteTable extends AbstractRecipientRewriteTable {
             throw me;
         } catch (Exception e) {
             throw new MessagingException("Error initializing JDBCRecipientRewriteTable", e);
-        } finally {
-            theJDBCUtil.closeJDBCConnection(conn);
         }
     }
 
@@ -179,35 +175,25 @@ public class JDBCRecipientRewriteTable extends AbstractRecipientRewriteTable {
      */
     @Override
     protected void mapRecipients(Map<MailAddress, String> recipientsMap) throws MessagingException {
-        Connection conn = null;
-        PreparedStatement mappingStmt = null;
 
         Collection<MailAddress> recipients = recipientsMap.keySet();
 
-        try {
-            conn = datasource.getConnection();
-            mappingStmt = conn.prepareStatement(query);
-
-            for (MailAddress recipient : recipients) {
-                ResultSet mappingRS = null;
-                try {
+        try (Connection conn = datasource.getConnection()) {
+            try (PreparedStatement mappingStmt = conn.prepareStatement(query)) {
+                for (MailAddress recipient : recipients) {
                     mappingStmt.setString(1, recipient.getLocalPart());
                     mappingStmt.setString(2, recipient.getDomain().asString());
                     mappingStmt.setString(3, recipient.getDomain().asString());
-                    mappingRS = mappingStmt.executeQuery();
-                    if (mappingRS.next()) {
-                        String targetString = mappingRS.getString(1);
-                        recipientsMap.put(recipient, targetString);
+                    try (ResultSet mappingRS = mappingStmt.executeQuery()) {
+                        if (mappingRS.next()) {
+                            String targetString = mappingRS.getString(1);
+                            recipientsMap.put(recipient, targetString);
+                        }
                     }
-                } finally {
-                    theJDBCUtil.closeJDBCResultSet(mappingRS);
                 }
             }
         } catch (SQLException sqle) {
             throw new MessagingException("Error accessing database", sqle);
-        } finally {
-            theJDBCUtil.closeJDBCStatement(mappingStmt);
-            theJDBCUtil.closeJDBCConnection(conn);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3c275fe6/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
index 0517d59..f6f9838 100644
--- a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
+++ b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
@@ -476,60 +476,48 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
 
     @Override
     public long getSize() throws MailQueueException {
-        QueueBrowser browser = null;
-        try {
-            browser = session.createBrowser(queue);
+        try (QueueBrowser browser = session.createBrowser(queue)) {
             Enumeration<?> enumeration = browser.getEnumeration();
             return Iterators.size(new EnumerationIterator(enumeration));
         } catch (Exception e) {
             LOGGER.error("Unable to get size of queue {}", queueName, e);
             throw new MailQueueException("Unable to get size of queue " + queueName, e);
-        } finally {
-            closeBrowser(browser);
         }
     }
 
     @Override
     public long flush() throws MailQueueException {
-        Session session = null;
-        Message message = null;
-        MessageConsumer consumer = null;
-        MessageProducer producer = null;
         boolean first = true;
         long count = 0;
-        try {
-
-            session = connection.createSession(true, Session.SESSION_TRANSACTED);
+        try (Session session = connection.createSession(true, Session.SESSION_TRANSACTED)) {
             Queue queue = session.createQueue(queueName);
-            consumer = session.createConsumer(queue);
-            producer = session.createProducer(queue);
-
-            while (first || message != null) {
-                if (first) {
-                    // give the consumer 2000 ms to receive messages
-                    message = consumer.receive(2000);
-                } else {
-                    message = consumer.receiveNoWait();
-                }
-                first = false;
+            try (MessageConsumer consumer = session.createConsumer(queue)) {
+                try (MessageProducer producer = session.createProducer(queue)) {
+
+                    Message message = null;
+                    while (first || message != null) {
+                        if (first) {
+                            // give the consumer 2000 ms to receive messages
+                            message = consumer.receive(2000);
+                        } else {
+                            message = consumer.receiveNoWait();
+                        }
+                        first = false;
 
-                if (message != null) {
-                    Message m = copy(session, message);
-                    m.setBooleanProperty(FORCE_DELIVERY, true);
-                    producer.send(m, message.getJMSDeliveryMode(), message.getJMSPriority(), message.getJMSExpiration());
-                    count++;
+                        if (message != null) {
+                            Message m = copy(session, message);
+                            m.setBooleanProperty(FORCE_DELIVERY, true);
+                            producer.send(m, message.getJMSDeliveryMode(), message.getJMSPriority(), message.getJMSExpiration());
+                            count++;
+                        }
+                    }
+                    session.commit();
+                    return count;
                 }
             }
-            session.commit();
-            return count;
         } catch (Exception e) {
             LOGGER.error("Unable to flush mail", e);
-            rollback(session);
             throw new MailQueueException("Unable to get size of queue " + queueName, e);
-        } finally {
-            closeConsumer(consumer);
-            closeProducer(producer);
-            closeSession(session);
         }
     }
 
@@ -553,37 +541,32 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
      * @return messages
      */
     public List<Message> removeWithSelector(String selector) throws MailQueueException {
-        Session session = null;
-        Message message = null;
-        MessageConsumer consumer = null;
         boolean first = true;
         List<Message> messages = new ArrayList<>();
 
         try {
-            session = connection.createSession(true, Session.SESSION_TRANSACTED);
-            Queue queue = session.createQueue(queueName);
-            consumer = session.createConsumer(queue, selector);
-            while (first || message != null) {
-                if (first) {
-                    // give the consumer 2000 ms to receive messages
-                    message = consumer.receive(2000);
-                } else {
-                    message = consumer.receiveNoWait();
-                }
-                first = false;
-                if (message != null) {
-                    messages.add(message);
+            try (Session session = connection.createSession(true, Session.SESSION_TRANSACTED)) {
+                Queue queue = session.createQueue(queueName);
+                try (MessageConsumer consumer = session.createConsumer(queue, selector)) {
+                    Message message = null;
+                    while (first || message != null) {
+                        if (first) {
+                            // give the consumer 2000 ms to receive messages
+                            message = consumer.receive(2000);
+                        } else {
+                            message = consumer.receiveNoWait();
+                        }
+                        first = false;
+                        if (message != null) {
+                            messages.add(message);
+                        }
+                    }
                 }
+                session.commit();
             }
-            session.commit();
             return messages;
         } catch (Exception e) {
-            rollback(session);
             throw new MailQueueException("Unable to remove mails", e);
-
-        } finally {
-            closeConsumer(consumer);
-            closeSession(session);
         }
     }
 


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