Author: felixk
Date: Wed Mar 23 18:45:46 2011
New Revision: 1084667

URL: http://svn.apache.org/viewvc?rev=1084667&view=rev
Log:
Make sure streams get close in the end

Modified:
    
james/mailbox-integration-tester/trunk/src/main/java/org/apache/james/imap/tester/base/AbstractSimpleScriptedTestProtocol.java
    
james/mailbox-integration-tester/trunk/src/main/java/org/apache/james/imap/tester/base/FileProtocolSessionBuilder.java

Modified: 
james/mailbox-integration-tester/trunk/src/main/java/org/apache/james/imap/tester/base/AbstractSimpleScriptedTestProtocol.java
URL: 
http://svn.apache.org/viewvc/james/mailbox-integration-tester/trunk/src/main/java/org/apache/james/imap/tester/base/AbstractSimpleScriptedTestProtocol.java?rev=1084667&r1=1084666&r2=1084667&view=diff
==============================================================================
--- 
james/mailbox-integration-tester/trunk/src/main/java/org/apache/james/imap/tester/base/AbstractSimpleScriptedTestProtocol.java
 (original)
+++ 
james/mailbox-integration-tester/trunk/src/main/java/org/apache/james/imap/tester/base/AbstractSimpleScriptedTestProtocol.java
 Wed Mar 23 18:45:46 2011
@@ -22,6 +22,7 @@ package org.apache.james.imap.tester.bas
 import java.io.InputStream;
 import java.util.Locale;
 
+import org.apache.commons.io.IOUtils;
 import org.junit.After;
 
 
@@ -87,10 +88,15 @@ public abstract class AbstractSimpleScri
         fileName = scriptDirectory + fileName;
         // Need to find local resource.
         InputStream is = this.getClass().getResourceAsStream(fileName);
+
         if (is == null) {
             throw new Exception("Test Resource '" + fileName + "' not found.");
         }
 
-        builder.addProtocolLinesFromStream(is, session, fileName);
+        try {
+            builder.addProtocolLinesFromStream(is, session, fileName);
+        } finally {
+            IOUtils.closeQuietly(is);
+        }
     }
 }

Modified: 
james/mailbox-integration-tester/trunk/src/main/java/org/apache/james/imap/tester/base/FileProtocolSessionBuilder.java
URL: 
http://svn.apache.org/viewvc/james/mailbox-integration-tester/trunk/src/main/java/org/apache/james/imap/tester/base/FileProtocolSessionBuilder.java?rev=1084667&r1=1084666&r2=1084667&view=diff
==============================================================================
--- 
james/mailbox-integration-tester/trunk/src/main/java/org/apache/james/imap/tester/base/FileProtocolSessionBuilder.java
 (original)
+++ 
james/mailbox-integration-tester/trunk/src/main/java/org/apache/james/imap/tester/base/FileProtocolSessionBuilder.java
 Wed Mar 23 18:45:46 2011
@@ -25,6 +25,8 @@ import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.commons.io.IOUtils;
+
 
 /**
  * A builder which generates a ProtocolSession from a test file.
@@ -80,7 +82,11 @@ public class FileProtocolSessionBuilder 
             throw new Exception("Test Resource '" + fileName + "' not found.");
         }
 
-        addProtocolLinesFromStream(is, session, fileName);
+        try {
+            addProtocolLinesFromStream(is, session, fileName);
+        } finally {
+            IOUtils.closeQuietly(is);
+        }
     }
 
     /**
@@ -98,60 +104,64 @@ public class FileProtocolSessionBuilder 
             ProtocolSession session, String fileName) throws Exception {
         int sessionNumber = -1;
         BufferedReader reader = new BufferedReader(new InputStreamReader(is));
-        String next;
-        int lineNumber = -1;
-        String lastClientMsg = "";
-        while ((next = reader.readLine()) != null) {
-            String location = fileName + ":" + lineNumber;
-            if (SERVER_CONTINUATION_TAG.equals(next)) {
-                session.CONT(sessionNumber);
-            } else if (next.startsWith(CLIENT_TAG)) {
-                String clientMsg = "";
-                if (next.length() > 3) {
-                    clientMsg = next.substring(3);
-                }
-                session.CL(sessionNumber, clientMsg);
-                lastClientMsg = clientMsg;
-            } else if (next.startsWith(SERVER_TAG)) {
-                String serverMsg = "";
-                if (next.length() > 3) {
-                    serverMsg = next.substring(3);
-                }
-                session.SL(sessionNumber, serverMsg, location, lastClientMsg);
-            } else if (next.startsWith(OPEN_UNORDERED_BLOCK_TAG)) {
-                List<String> unorderedLines = new ArrayList<String>(5);
-                next = reader.readLine();
-
-                while (!next.startsWith(CLOSE_UNORDERED_BLOCK_TAG)) {
-                    if (!next.startsWith(SERVER_TAG)) {
-                        throw new Exception(
-                                "Only 'S: ' lines are permitted inside a 'SUB 
{' block.");
+        try {
+            String next;
+            int lineNumber = -1;
+            String lastClientMsg = "";
+            while ((next = reader.readLine()) != null) {
+                String location = fileName + ":" + lineNumber;
+                if (SERVER_CONTINUATION_TAG.equals(next)) {
+                    session.CONT(sessionNumber);
+                } else if (next.startsWith(CLIENT_TAG)) {
+                    String clientMsg = "";
+                    if (next.length() > 3) {
+                        clientMsg = next.substring(3);
+                    }
+                    session.CL(sessionNumber, clientMsg);
+                    lastClientMsg = clientMsg;
+                } else if (next.startsWith(SERVER_TAG)) {
+                    String serverMsg = "";
+                    if (next.length() > 3) {
+                        serverMsg = next.substring(3);
                     }
-                    String serverMsg = next.substring(3);
-                    unorderedLines.add(serverMsg);
+                    session.SL(sessionNumber, serverMsg, location, 
lastClientMsg);
+                } else if (next.startsWith(OPEN_UNORDERED_BLOCK_TAG)) {
+                    List<String> unorderedLines = new ArrayList<String>(5);
                     next = reader.readLine();
-                    lineNumber++;
-                }
-
-                session.SUB(sessionNumber, unorderedLines, location,
-                        lastClientMsg);
-            } else if (next.startsWith(COMMENT_TAG)
-                    || next.trim().length() == 0) {
-                // ignore these lines.
-            } else if (next.startsWith(SESSION_TAG)) {
-                String number = next.substring(SESSION_TAG.length()).trim();
-                if (number.length() == 0) {
-                    throw new Exception("No session number specified");
-                }
-                sessionNumber = Integer.parseInt(number);
-            } else {
-                String prefix = next;
-                if (next.length() > 3) {
-                    prefix = next.substring(0, 3);
+    
+                    while (!next.startsWith(CLOSE_UNORDERED_BLOCK_TAG)) {
+                        if (!next.startsWith(SERVER_TAG)) {
+                            throw new Exception(
+                                    "Only 'S: ' lines are permitted inside a 
'SUB {' block.");
+                        }
+                        String serverMsg = next.substring(3);
+                        unorderedLines.add(serverMsg);
+                        next = reader.readLine();
+                        lineNumber++;
+                    }
+    
+                    session.SUB(sessionNumber, unorderedLines, location,
+                            lastClientMsg);
+                } else if (next.startsWith(COMMENT_TAG)
+                        || next.trim().length() == 0) {
+                    // ignore these lines.
+                } else if (next.startsWith(SESSION_TAG)) {
+                    String number = 
next.substring(SESSION_TAG.length()).trim();
+                    if (number.length() == 0) {
+                        throw new Exception("No session number specified");
+                    }
+                    sessionNumber = Integer.parseInt(number);
+                } else {
+                    String prefix = next;
+                    if (next.length() > 3) {
+                        prefix = next.substring(0, 3);
+                    }
+                    throw new Exception("Invalid line prefix: " + prefix);
                 }
-                throw new Exception("Invalid line prefix: " + prefix);
+                lineNumber++;
             }
-            lineNumber++;
+        } finally {
+            IOUtils.closeQuietly(reader);
         }
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to