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