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 ba...@apache.org on 2006/05/05 20:46:19 UTC

svn commit: r400138 - in /james/server/trunk/src: java/org/apache/james/core/ test/org/apache/james/core/

Author: bago
Date: Fri May  5 11:46:16 2006
New Revision: 400138

URL: http://svn.apache.org/viewcvs?rev=400138&view=rev
Log:
Regression for Javamail 1.4.0 upgrade. SharedFileInputStream close behaviour has changed.
Also updated tests to dispose every created messages (they were leaving garbage in the temp folder)

Modified:
    james/server/trunk/src/java/org/apache/james/core/MimeMessageInputStreamSource.java
    james/server/trunk/src/java/org/apache/james/core/MimeMessageWrapper.java
    james/server/trunk/src/test/org/apache/james/core/MimeMessageCopyOnWriteProxyTest.java
    james/server/trunk/src/test/org/apache/james/core/MimeMessageTest.java
    james/server/trunk/src/test/org/apache/james/core/MimeMessageWrapperTest.java

Modified: james/server/trunk/src/java/org/apache/james/core/MimeMessageInputStreamSource.java
URL: http://svn.apache.org/viewcvs/james/server/trunk/src/java/org/apache/james/core/MimeMessageInputStreamSource.java?rev=400138&r1=400137&r2=400138&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/core/MimeMessageInputStreamSource.java (original)
+++ james/server/trunk/src/java/org/apache/james/core/MimeMessageInputStreamSource.java Fri May  5 11:46:16 2006
@@ -18,6 +18,7 @@
 package org.apache.james.core;
 
 import javax.mail.MessagingException;
+import javax.mail.util.SharedFileInputStream;
 
 import java.io.BufferedOutputStream;
 import java.io.File;
@@ -28,8 +29,6 @@
 
 import org.apache.avalon.framework.activity.Disposable;
 
-import javax.mail.util.SharedFileInputStream;
-
 /**
  * Takes an input stream and creates a repeatable input stream source
  * for a MimeMessageWrapper.  It does this by completely reading the
@@ -47,12 +46,12 @@
     /**
      * A temporary file used to hold the message stream
      */
-    File file = null;
+    File file;
 
     /**
      * The full path of the temporary file
      */
-    String sourceId = null;
+    String sourceId;
 
     /**
      * Construct a new MimeMessageInputStreamSource from an
@@ -116,7 +115,7 @@
      * @return a <code>BufferedInputStream</code> containing the data
      */
     public synchronized InputStream getInputStream() throws IOException {
-        return new SharedFileInputStream(file.getAbsolutePath());
+        return new SharedFileInputStream(file);
     }
 
     /**
@@ -148,9 +147,13 @@
      * <p>Finalizer that closes and deletes the temp file.  Very bad.</p>
      * We're leaving this in temporarily, while also establishing a more
      * formal mechanism for cleanup through use of the dispose() method.
+     * @throws Throwable 
      *
      */
-    public void finalize() {
+    public void finalize() throws Throwable {
         dispose();
+        super.finalize();
     }
+    
+
 }

Modified: james/server/trunk/src/java/org/apache/james/core/MimeMessageWrapper.java
URL: http://svn.apache.org/viewcvs/james/server/trunk/src/java/org/apache/james/core/MimeMessageWrapper.java?rev=400138&r1=400137&r2=400138&view=diff
==============================================================================
--- james/server/trunk/src/java/org/apache/james/core/MimeMessageWrapper.java (original)
+++ james/server/trunk/src/java/org/apache/james/core/MimeMessageWrapper.java Fri May  5 11:46:16 2006
@@ -71,6 +71,12 @@
      */
     protected boolean bodyModified = false;
 
+    /**
+     * Keep a reference to the sourceIn so we can close it
+     * only when we dispose the message.
+     */
+    private InputStream sourceIn;
+
     
     /**
      * A constructor that instantiates a MimeMessageWrapper based on
@@ -99,7 +105,7 @@
     public MimeMessageWrapper(MimeMessageSource source) throws MessagingException {
         this(Session.getDefaultInstance(System.getProperties()),source);
     }
-    
+
     public MimeMessageWrapper(MimeMessage original) throws MessagingException {
         super(Session.getDefaultInstance(System.getProperties()));
         flags = original.getFlags();
@@ -188,18 +194,18 @@
             //Another thread has already loaded this message
             return;
         }
-        InputStream in = null;
+        sourceIn = null;
         try {
-            in = source.getInputStream();
+            sourceIn = source.getInputStream();
 
-            parse(in);
+            parse(sourceIn);
             // TODO is it ok?
             saved = true;
             
         } catch (IOException ioe) {
+            IOUtil.shutdownStream(sourceIn);
+            sourceIn = null;
             throw new MessagingException("Unable to parse stream: " + ioe.getMessage(), ioe);
-        } finally {
-            IOUtil.shutdownStream(in);
         }
     }
 
@@ -440,6 +446,9 @@
      * @see org.apache.avalon.framework.activity.Disposable#dispose()
      */
     public void dispose() {
+        if (sourceIn != null) {
+            IOUtil.shutdownStream(sourceIn);
+        }
         if (source instanceof Disposable) {
             ((Disposable)source).dispose();
         }

Modified: james/server/trunk/src/test/org/apache/james/core/MimeMessageCopyOnWriteProxyTest.java
URL: http://svn.apache.org/viewcvs/james/server/trunk/src/test/org/apache/james/core/MimeMessageCopyOnWriteProxyTest.java?rev=400138&r1=400137&r2=400138&view=diff
==============================================================================
--- james/server/trunk/src/test/org/apache/james/core/MimeMessageCopyOnWriteProxyTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/core/MimeMessageCopyOnWriteProxyTest.java Fri May  5 11:46:16 2006
@@ -16,6 +16,7 @@
  ***********************************************************************/
 package org.apache.james.core;
 
+import org.apache.avalon.framework.container.ContainerUtil;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 
@@ -47,6 +48,11 @@
 
     protected void setUp() throws Exception {
         mw = (MimeMessageCopyOnWriteProxy) getMessageFromSources(content+sep+body);
+    }
+
+
+    protected void tearDown() throws Exception {
+        ContainerUtil.dispose(mw);
     }
 
     

Modified: james/server/trunk/src/test/org/apache/james/core/MimeMessageTest.java
URL: http://svn.apache.org/viewcvs/james/server/trunk/src/test/org/apache/james/core/MimeMessageTest.java?rev=400138&r1=400137&r2=400138&view=diff
==============================================================================
--- james/server/trunk/src/test/org/apache/james/core/MimeMessageTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/core/MimeMessageTest.java Fri May  5 11:46:16 2006
@@ -188,6 +188,8 @@
         
         assertEquals(getMultipartMessageExpected3(),getCleanedMessageSource(mm));
         
+        ContainerUtil.dispose(mm);
+        
     }
 
     protected MimeMessage getMissingEncodingAddHeaderMessage() throws Exception {
@@ -302,6 +304,7 @@
         } catch (Exception e) {
             fail("Unexpected exception in getLineCount");
         }
+        ContainerUtil.dispose(mm);
     }
     
     /**
@@ -320,6 +323,9 @@
         //((Disposable)mail_dup.getMessage()).dispose();
         
         mm.setHeader("Subject", "Modified");
+        
+        ContainerUtil.dispose(mmorig);
+        ContainerUtil.dispose(mm);
         
     }
     

Modified: james/server/trunk/src/test/org/apache/james/core/MimeMessageWrapperTest.java
URL: http://svn.apache.org/viewcvs/james/server/trunk/src/test/org/apache/james/core/MimeMessageWrapperTest.java?rev=400138&r1=400137&r2=400138&view=diff
==============================================================================
--- james/server/trunk/src/test/org/apache/james/core/MimeMessageWrapperTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/core/MimeMessageWrapperTest.java Fri May  5 11:46:16 2006
@@ -16,6 +16,8 @@
  ***********************************************************************/
 package org.apache.james.core;
 
+import org.apache.avalon.framework.container.ContainerUtil;
+
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 import javax.mail.util.SharedByteArrayInputStream;
@@ -108,6 +110,10 @@
 
     protected void setUp() throws Exception {
         mw = (TestableMimeMessageWrapper) getMessageFromSources(content+sep+body);
+    }
+
+    protected void tearDown() throws Exception {
+        ContainerUtil.dispose(mw);
     }
 
     



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