Author: bago
Date: Fri Apr 7 12:50:54 2006
New Revision: 392373
URL: http://svn.apache.org/viewcvs?rev=392373&view=rev
Log:
Test and temporary fix for a rare but critical NPE in MimeMessageWrapper
(JAMES-474)
Modified:
james/server/trunk/src/java/org/apache/james/core/MimeMessageCopyOnWriteProxy.java
james/server/trunk/src/java/org/apache/james/core/MimeMessageWrapper.java
james/server/trunk/src/test/org/apache/james/core/MimeMessageFromSharedStreamTest.java
james/server/trunk/src/test/org/apache/james/core/MimeMessageTest.java
Modified:
james/server/trunk/src/java/org/apache/james/core/MimeMessageCopyOnWriteProxy.java
URL:
http://svn.apache.org/viewcvs/james/server/trunk/src/java/org/apache/james/core/MimeMessageCopyOnWriteProxy.java?rev=392373&r1=392372&r2=392373&view=diff
==============================================================================
---
james/server/trunk/src/java/org/apache/james/core/MimeMessageCopyOnWriteProxy.java
(original)
+++
james/server/trunk/src/java/org/apache/james/core/MimeMessageCopyOnWriteProxy.java
Fri Apr 7 12:50:54 2006
@@ -147,19 +147,8 @@
synchronized (refCount) {
if (refCount.getReferenceCount() > 1) {
refCount.decrementReferenceCount();
-
refCount = new ReferenceCounter(1);
- if (wrapped instanceof MimeMessageWrapper) {
- MimeMessageWrapper mmw = (MimeMessageWrapper) wrapped;
- if (!mmw.isModified()) {
- wrapped = new MimeMessageWrapper(mmw.source);
- } else {
- wrapped = new MimeMessage(wrapped);
- }
- } else {
- // Not sure this will really clone the MimeMessage!
- wrapped = new MimeMessage(wrapped);
- }
+ wrapped = new MimeMessageWrapper(wrapped);
}
}
}
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=392373&r1=392372&r2=392373&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 Apr 7 12:50:54 2006
@@ -106,6 +106,7 @@
// if the original is an unmodified MimeMessageWrapped we clone the
headers and
// take its source.
+ /* Temporary commented out because of JAMES-474
if (original instanceof MimeMessageWrapper && !((MimeMessageWrapper)
original).bodyModified) {
source = ((MimeMessageWrapper) original).source;
// this probably speed up things
@@ -116,6 +117,7 @@
headersModified = ((MimeMessageWrapper)
original).headersModified;
}
}
+ */
if (source == null) {
ByteArrayOutputStream bos;
Modified:
james/server/trunk/src/test/org/apache/james/core/MimeMessageFromSharedStreamTest.java
URL:
http://svn.apache.org/viewcvs/james/server/trunk/src/test/org/apache/james/core/MimeMessageFromSharedStreamTest.java?rev=392373&r1=392372&r2=392373&view=diff
==============================================================================
---
james/server/trunk/src/test/org/apache/james/core/MimeMessageFromSharedStreamTest.java
(original)
+++
james/server/trunk/src/test/org/apache/james/core/MimeMessageFromSharedStreamTest.java
Fri Apr 7 12:50:54 2006
@@ -16,16 +16,17 @@
***********************************************************************/
package org.apache.james.core;
+import com.sun.mail.util.SharedByteArrayInputStream;
+
import javax.mail.Session;
import javax.mail.internet.MimeMessage;
-import java.io.ByteArrayInputStream;
import java.util.Properties;
public class MimeMessageFromSharedStreamTest extends MimeMessageFromStreamTest
{
protected MimeMessage getMessageFromSources(String sources) throws
Exception {
- return new MimeMessage(Session.getDefaultInstance(new
Properties()),new ByteArrayInputStream(sources.getBytes()));
+ return new MimeMessage(Session.getDefaultInstance(new
Properties()),new SharedByteArrayInputStream(sources.getBytes()));
}
}
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=392373&r1=392372&r2=392373&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
Apr 7 12:50:54 2006
@@ -16,6 +16,7 @@
***********************************************************************/
package org.apache.james.core;
+import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.mailet.RFC2822Headers;
import javax.mail.BodyPart;
@@ -301,6 +302,25 @@
} catch (Exception e) {
fail("Unexpected exception in getLineCount");
}
+ }
+
+ /**
+ * This test throw a NullPointerException when the original message was
created by
+ * a MimeMessageInputStreamSource.
+ */
+ public void testMessageCloningViaCoW() throws Exception {
+ MimeMessage mmorig = getSimpleMessage();
+
+ MimeMessage mm = new MimeMessageCopyOnWriteProxy(mmorig);
+
+ MimeMessage mm2 = new MimeMessageCopyOnWriteProxy(mm);
+
+ mm2.setHeader("Subject", "Modified");
+ ContainerUtil.dispose(mm2);
+ //((Disposable)mail_dup.getMessage()).dispose();
+
+ mm.setHeader("Subject", "Modified");
+
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]