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/09/09 14:23:03 UTC
svn commit: r441785 - in /james/server/trunk/src:
java/org/apache/james/core/ java/org/apache/james/pop3server/
test/org/apache/james/core/ test/org/apache/james/mailrepository/
test/org/apache/james/pop3server/ test/org/apache/james/smtpserver/ test/o...
Author: bago
Date: Sat Sep 9 05:23:02 2006
New Revision: 441785
URL: http://svn.apache.org/viewvc?view=rev&rev=441785
Log:
First pass for JAMES-611:
Removed finalizers from MimeMessageCopyOnWriteProxy and MimeMessageInputStreamSource: the finalizers were simple calls to dispose(), nothing more.
Fixed one MailImpl constructor to handle exceptions during the construction and related resource disposal: we should review every other constructor (this one was leaking on MessageSizeException).
Added a check in MimeMessageInputStreamSource to remove the just created file if the input stream throw an IOError (was leaking on MessageSizeException)
Added a check in DeleCmdHandler to make sure we dispose the loaded mail when replacing it with the DELETED object (must be reviewed: maybe it would be better to dispose it when we close the connection and delete the messages from the repository).
POP3Handler: added a loop over backupUserMailbox when resetting the handler to make sure objects are disposed (not sure this is the right thing to do)
Updated a lot of tests to make sure they dispose messages/mails they create.
Modified:
james/server/trunk/src/java/org/apache/james/core/MailImpl.java
james/server/trunk/src/java/org/apache/james/core/MimeMessageCopyOnWriteProxy.java
james/server/trunk/src/java/org/apache/james/core/MimeMessageInputStreamSource.java
james/server/trunk/src/java/org/apache/james/pop3server/DeleCmdHandler.java
james/server/trunk/src/java/org/apache/james/pop3server/POP3Handler.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
james/server/trunk/src/test/org/apache/james/mailrepository/AvalonMailRepositoryTest.java
james/server/trunk/src/test/org/apache/james/pop3server/POP3ServerTest.java
james/server/trunk/src/test/org/apache/james/smtpserver/SMTPServerTest.java
james/server/trunk/src/test/org/apache/james/test/mock/james/InMemorySpoolRepository.java
james/server/trunk/src/test/org/apache/james/transport/LinearProcessorTest.java
Modified: james/server/trunk/src/java/org/apache/james/core/MailImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/core/MailImpl.java?view=diff&rev=441785&r1=441784&r2=441785
==============================================================================
--- james/server/trunk/src/java/org/apache/james/core/MailImpl.java (original)
+++ james/server/trunk/src/java/org/apache/james/core/MailImpl.java Sat Sep 9 05:23:02 2006
@@ -181,7 +181,14 @@
throws MessagingException {
this(name, sender, recipients);
MimeMessageSource source = new MimeMessageInputStreamSource(name, messageIn);
- this.setMessage(new MimeMessageCopyOnWriteProxy(source));
+ // if MimeMessageCopyOnWriteProxy throws an error in the constructor we
+ // have to manually care disposing our source.
+ try {
+ this.setMessage(new MimeMessageCopyOnWriteProxy(source));
+ } catch (MessagingException e) {
+ ContainerUtil.dispose(source);
+ throw e;
+ }
}
/**
Modified: james/server/trunk/src/java/org/apache/james/core/MimeMessageCopyOnWriteProxy.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/core/MimeMessageCopyOnWriteProxy.java?view=diff&rev=441785&r1=441784&r2=441785
==============================================================================
--- james/server/trunk/src/java/org/apache/james/core/MimeMessageCopyOnWriteProxy.java (original)
+++ james/server/trunk/src/java/org/apache/james/core/MimeMessageCopyOnWriteProxy.java Sat Sep 9 05:23:02 2006
@@ -71,10 +71,24 @@
}
protected synchronized void incrementReferenceCount() {
+ /* Used to track references while debugging
+ try {
+ throw new Exception("incrementReferenceCount: "+(wrapped != null ? System.identityHashCode(wrapped)+"" : "null")+" ["+referenceCount+"]");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ */
referenceCount++;
}
protected synchronized void decrementReferenceCount() {
+ /* Used to track references while debugging
+ try {
+ throw new Exception("decrementReferenceCount: "+(wrapped != null ? System.identityHashCode(wrapped)+"" : "null")+" ["+referenceCount+"]");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ */
referenceCount--;
if (referenceCount<=0) {
ContainerUtil.dispose(wrapped);
@@ -730,14 +744,6 @@
*/
public void setFlag(Flag arg0, boolean arg1) throws MessagingException {
getWrappedMessageForWriting().setFlag(arg0, arg1);
- }
-
- /**
- * @see java.lang.Object#finalize()
- */
- protected void finalize() throws Throwable {
- dispose();
- super.finalize();
}
/**
Modified: james/server/trunk/src/java/org/apache/james/core/MimeMessageInputStreamSource.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/core/MimeMessageInputStreamSource.java?view=diff&rev=441785&r1=441784&r2=441785
==============================================================================
--- james/server/trunk/src/java/org/apache/james/core/MimeMessageInputStreamSource.java (original)
+++ james/server/trunk/src/java/org/apache/james/core/MimeMessageInputStreamSource.java Sat Sep 9 05:23:02 2006
@@ -101,6 +101,12 @@
} catch (IOException ioe) {
// Ignored - logging unavailable to log this non-fatal error.
}
+
+ // if sourceId is null while file is not null then we had
+ // an IOxception and we have to clean the file.
+ if (sourceId == null && file != null) {
+ file.delete();
+ }
}
}
@@ -146,18 +152,5 @@
}
file = null;
}
-
- /**
- * <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() throws Throwable {
- dispose();
- super.finalize();
- }
-
}
Modified: james/server/trunk/src/java/org/apache/james/pop3server/DeleCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/pop3server/DeleCmdHandler.java?view=diff&rev=441785&r1=441784&r2=441785
==============================================================================
--- james/server/trunk/src/java/org/apache/james/pop3server/DeleCmdHandler.java (original)
+++ james/server/trunk/src/java/org/apache/james/pop3server/DeleCmdHandler.java Sat Sep 9 05:23:02 2006
@@ -21,6 +21,7 @@
package org.apache.james.pop3server;
+import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.mailet.Mail;
/**
@@ -67,6 +68,9 @@
session.writeResponse(responseString);
} else {
session.getUserMailbox().set(num, POP3Handler.DELETED);
+ // we are replacing our reference with "DELETED", so we have
+ // to dispose the no-more-referenced mail object.
+ ContainerUtil.dispose(mc);
session.writeResponse(POP3Handler.OK_RESPONSE + " Message deleted");
}
} catch (IndexOutOfBoundsException iob) {
Modified: james/server/trunk/src/java/org/apache/james/pop3server/POP3Handler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/pop3server/POP3Handler.java?view=diff&rev=441785&r1=441784&r2=441785
==============================================================================
--- james/server/trunk/src/java/org/apache/james/pop3server/POP3Handler.java (original)
+++ james/server/trunk/src/java/org/apache/james/pop3server/POP3Handler.java Sat Sep 9 05:23:02 2006
@@ -295,6 +295,10 @@
}
if (backupUserMailbox != null) {
+ Iterator i = backupUserMailbox.iterator();
+ while (i.hasNext()) {
+ ContainerUtil.dispose(i.next());
+ }
backupUserMailbox.clear();
backupUserMailbox = null;
}
Modified: james/server/trunk/src/test/org/apache/james/core/MimeMessageCopyOnWriteProxyTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/core/MimeMessageCopyOnWriteProxyTest.java?view=diff&rev=441785&r1=441784&r2=441785
==============================================================================
--- james/server/trunk/src/test/org/apache/james/core/MimeMessageCopyOnWriteProxyTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/core/MimeMessageCopyOnWriteProxyTest.java Sat Sep 9 05:23:02 2006
@@ -201,7 +201,7 @@
("Return-path: return@test.com\r\n"+
"Content-Transfer-Encoding: plain\r\n"+
"Subject: test\r\n\r\n"+
- "Body Text\r\n").getBytes())));
+ "Body Text testNPE1\r\n").getBytes())));
MimeMessageCopyOnWriteProxy mw2 = new MimeMessageCopyOnWriteProxy(mw);
ContainerUtil.dispose(mw2);
@@ -235,7 +235,7 @@
fail("Exception while writing the message to output");
}
- ContainerUtil.dispose(mmorig);
+ ContainerUtil.dispose(mm);
}
private static String getReferences(MimeMessage m) {
Modified: james/server/trunk/src/test/org/apache/james/core/MimeMessageTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/core/MimeMessageTest.java?view=diff&rev=441785&r1=441784&r2=441785
==============================================================================
--- james/server/trunk/src/test/org/apache/james/core/MimeMessageTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/core/MimeMessageTest.java Sat Sep 9 05:23:02 2006
@@ -87,7 +87,9 @@
* Class under test for String getSubject()
*/
public void testSimpleMessage() throws Exception {
- assertEquals(getSimpleMessageCleanedSource(), getCleanedMessageSource(getSimpleMessage()));
+ MimeMessage m = getSimpleMessage();
+ assertEquals(getSimpleMessageCleanedSource(), getCleanedMessageSource(m));
+ ContainerUtil.dispose(m);
}
@@ -404,6 +406,7 @@
public void testReturnPath() throws Exception {
MimeMessage message = getSimpleMessage();
assertNull(message.getHeader(RFC2822Headers.RETURN_PATH));
+ ContainerUtil.dispose(message);
}
public void testHeaderOrder() throws Exception {
@@ -412,6 +415,7 @@
Enumeration h = message.getAllHeaderLines();
assertEquals(h.nextElement(),"Return-Path: <te...@test.de>");
+ ContainerUtil.dispose(message);
}
}
Modified: james/server/trunk/src/test/org/apache/james/core/MimeMessageWrapperTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/core/MimeMessageWrapperTest.java?view=diff&rev=441785&r1=441784&r2=441785
==============================================================================
--- james/server/trunk/src/test/org/apache/james/core/MimeMessageWrapperTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/core/MimeMessageWrapperTest.java Sat Sep 9 05:23:02 2006
@@ -230,6 +230,7 @@
Enumeration h = message.getAllHeaderLines();
assertEquals("Return-Path: <te...@test.de>",h.nextElement());
assertFalse(h.nextElement().toString().startsWith("Return-Path:"));
+ ContainerUtil.dispose(message);
}
public void testAddReturnPathOnBadMessage() throws Exception {
@@ -242,6 +243,7 @@
// test that return-path is the first line
Enumeration h = message.getAllHeaderLines();
assertEquals("Return-Path: <te...@test.de>",h.nextElement());
+ ContainerUtil.dispose(message);
}
}
Modified: james/server/trunk/src/test/org/apache/james/mailrepository/AvalonMailRepositoryTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/mailrepository/AvalonMailRepositoryTest.java?view=diff&rev=441785&r1=441784&r2=441785
==============================================================================
--- james/server/trunk/src/test/org/apache/james/mailrepository/AvalonMailRepositoryTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/mailrepository/AvalonMailRepositoryTest.java Sat Sep 9 05:23:02 2006
@@ -109,6 +109,8 @@
ContainerUtil.dispose(m2);
mr.remove("mail1");
+
+ ContainerUtil.dispose(mimeMessage);
}
@@ -172,6 +174,8 @@
ContainerUtil.dispose(m2);
mr.remove("mail1");
+
+ ContainerUtil.dispose(mimeMessage);
}
Modified: james/server/trunk/src/test/org/apache/james/pop3server/POP3ServerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/pop3server/POP3ServerTest.java?view=diff&rev=441785&r1=441784&r2=441785
==============================================================================
--- james/server/trunk/src/test/org/apache/james/pop3server/POP3ServerTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/pop3server/POP3ServerTest.java Sat Sep 9 05:23:02 2006
@@ -25,8 +25,6 @@
import org.apache.commons.net.pop3.POP3Client;
import org.apache.commons.net.pop3.POP3MessageInfo;
import org.apache.james.core.MailImpl;
-import org.apache.james.core.MimeMessageCopyOnWriteProxy;
-import org.apache.james.core.MimeMessageInputStreamSource;
import org.apache.james.services.JamesConnectionManager;
import org.apache.james.services.MailRepository;
import org.apache.james.services.MailServer;
@@ -44,9 +42,9 @@
import org.apache.mailet.MailAddress;
import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
import javax.mail.util.SharedByteArrayInputStream;
+import java.io.InputStream;
import java.io.Reader;
import java.util.ArrayList;
@@ -106,14 +104,14 @@
}
protected void tearDown() throws Exception {
- if (testMail1 != null) testMail1.dispose();
- if (testMail2 != null) testMail2.dispose();
if (m_pop3Protocol != null) {
m_pop3Protocol.sendCommand("quit");
m_pop3Protocol.disconnect();
}
m_pop3Server.dispose();
ContainerUtil.dispose(m_mailServer);
+ if (testMail1 != null) testMail1.dispose();
+ if (testMail2 != null) testMail2.dispose();
super.tearDown();
}
@@ -243,22 +241,16 @@
private void setupTestMails(MailRepository mailRep) throws MessagingException {
ArrayList recipients = new ArrayList();
recipients.add(new MailAddress("recipient@test.com"));
- MimeMessage mw = new MimeMessageCopyOnWriteProxy(
- new MimeMessageInputStreamSource(
- "test",
- new SharedByteArrayInputStream(
+ InputStream mw = new SharedByteArrayInputStream(
("Return-path: return@test.com\r\n"+
"Content-Transfer-Encoding: plain\r\n"+
"Subject: test\r\n\r\n"+
- "Body Text\r\n").getBytes())));
+ "Body Text POP3ServerTest.setupTestMails\r\n").getBytes());
testMail1 = new MailImpl("name", new MailAddress("from@test.com"),
recipients, mw);
mailRep.store(testMail1);
- MimeMessage mw2 = new MimeMessageCopyOnWriteProxy(
- new MimeMessageInputStreamSource(
- "test2",
- new SharedByteArrayInputStream(
- ("EMPTY").getBytes())));
+ InputStream mw2 = new SharedByteArrayInputStream(
+ ("EMPTY").getBytes());
testMail2 = new MailImpl("name2", new MailAddress("from@test.com"),
recipients, mw2);
mailRep.store(testMail2);
Modified: james/server/trunk/src/test/org/apache/james/smtpserver/SMTPServerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/smtpserver/SMTPServerTest.java?view=diff&rev=441785&r1=441784&r2=441785
==============================================================================
--- james/server/trunk/src/test/org/apache/james/smtpserver/SMTPServerTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/smtpserver/SMTPServerTest.java Sat Sep 9 05:23:02 2006
@@ -286,7 +286,7 @@
smtpProtocol.addRecipient("mail@localhost");
- smtpProtocol.sendShortMessageData("Subject: test mail\r\n\r\nTest body\r\n.\r\n");
+ smtpProtocol.sendShortMessageData("Subject: test mail\r\n\r\nTest body testSimpleMailSendWithHELO\r\n.\r\n");
smtpProtocol.quit();
smtpProtocol.disconnect();
@@ -322,10 +322,10 @@
smtpProtocol2.setSender(sender2);
smtpProtocol2.addRecipient(recipient2);
- smtpProtocol1.sendShortMessageData("Subject: test\r\n\r\nTest body\r\n.\r\n");
+ smtpProtocol1.sendShortMessageData("Subject: test\r\n\r\nTest body testTwoSimultaneousMails1\r\n.\r\n");
verifyLastMail(sender1, recipient1, null);
- smtpProtocol2.sendShortMessageData("Subject: test\r\n\r\nTest body\r\n.\r\n");
+ smtpProtocol2.sendShortMessageData("Subject: test\r\n\r\nTest body testTwoSimultaneousMails2\r\n.\r\n");
verifyLastMail(sender2, recipient2, null);
smtpProtocol1.quit();
@@ -353,7 +353,7 @@
smtpProtocol1.setSender(sender1);
smtpProtocol1.addRecipient(recipient1);
- smtpProtocol1.sendShortMessageData("Subject: test\r\n\r\nTest body\r\n");
+ smtpProtocol1.sendShortMessageData("Subject: test\r\n\r\nTest body testTwoMailsInSequence1\r\n");
verifyLastMail(sender1, recipient1, null);
String sender2 = "mail_sender2@localhost";
@@ -361,7 +361,7 @@
smtpProtocol1.setSender(sender2);
smtpProtocol1.addRecipient(recipient2);
- smtpProtocol1.sendShortMessageData("Subject: test2\r\n\r\nTest body2\r\n");
+ smtpProtocol1.sendShortMessageData("Subject: test2\r\n\r\nTest body2 testTwoMailsInSequence2\r\n");
verifyLastMail(sender2, recipient2, null);
smtpProtocol1.quit();
@@ -580,7 +580,7 @@
smtpProtocol1.addRecipient(rcpt2);
assertEquals("expected 452 error", 452, smtpProtocol1.getReplyCode());
- smtpProtocol1.sendShortMessageData("Subject: test\r\n\r\nTest body\r\n");
+ smtpProtocol1.sendShortMessageData("Subject: test\r\n\r\nTest body testMaxRcpt1\r\n");
// After the data is send the rcpt count is set back to 0.. So a new mail with rcpt should be accepted
@@ -588,7 +588,7 @@
smtpProtocol1.addRecipient(rcpt1);
- smtpProtocol1.sendShortMessageData("Subject: test\r\n\r\nTest body\r\n");
+ smtpProtocol1.sendShortMessageData("Subject: test\r\n\r\nTest body testMaxRcpt2\r\n");
smtpProtocol1.quit();
@@ -609,7 +609,7 @@
smtpProtocol1.addRecipient(rcpt1);
- smtpProtocol1.sendShortMessageData("Subject: test\r\n\r\nTest body\r\n");
+ smtpProtocol1.sendShortMessageData("Subject: test\r\n\r\nTest body testMaxRcptDefault\r\n");
smtpProtocol1.quit();
}
@@ -833,7 +833,7 @@
assertEquals("expected error: User has previously authenticated.", 503, smtpProtocol.getReplyCode());
smtpProtocol.addRecipient("mail@sample.com");
- smtpProtocol.sendShortMessageData("Subject: test\r\n\r\nTest body\r\n");
+ smtpProtocol.sendShortMessageData("Subject: test\r\n\r\nTest body testAuth\r\n");
smtpProtocol.quit();
@@ -878,7 +878,7 @@
// left out for test smtpProtocol.rcpt(new Address("mail@localhost"));
- smtpProtocol.sendShortMessageData("Subject: test\r\n\r\nTest body\r\n");
+ smtpProtocol.sendShortMessageData("Subject: test\r\n\r\nTest body testNoRecepientSpecified\r\n");
assertTrue("sending succeeded without recepient", SMTPReply.isNegativePermanent(smtpProtocol.getReplyCode()));
smtpProtocol.quit();
@@ -1175,7 +1175,7 @@
assertEquals("authenticated.. not reject", 250, smtpProtocol
.getReplyCode());
- smtpProtocol.sendShortMessageData("Subject: test\r\n\r\nTest body\r\n");
+ smtpProtocol.sendShortMessageData("Subject: test\r\n\r\nTest body testDNSRBLNotRejectAuthUser\r\n");
smtpProtocol.quit();
@@ -1205,7 +1205,7 @@
assertEquals("reject", 550, smtpProtocol
.getReplyCode());
- smtpProtocol.sendShortMessageData("Subject: test\r\n\r\nTest body\r\n");
+ smtpProtocol.sendShortMessageData("Subject: test\r\n\r\nTest body testDNSRBLRejectWorks\r\n");
smtpProtocol.quit();
Modified: james/server/trunk/src/test/org/apache/james/test/mock/james/InMemorySpoolRepository.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/test/mock/james/InMemorySpoolRepository.java?view=diff&rev=441785&r1=441784&r2=441785
==============================================================================
--- james/server/trunk/src/test/org/apache/james/test/mock/james/InMemorySpoolRepository.java (original)
+++ james/server/trunk/src/test/org/apache/james/test/mock/james/InMemorySpoolRepository.java Sat Sep 9 05:23:02 2006
@@ -20,6 +20,8 @@
package org.apache.james.test.mock.james;
+import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.james.core.MailImpl;
import org.apache.james.services.SpoolRepository;
import org.apache.james.test.mock.avalon.MockLogger;
@@ -46,7 +48,7 @@
* @version 1.0.0, 24/04/1999
*/
public class InMemorySpoolRepository
- implements SpoolRepository {
+ implements SpoolRepository, Disposable {
/**
* Whether 'deep debugging' is turned on.
@@ -235,7 +237,10 @@
public void remove(String key) throws MessagingException {
if (lock(key)) {
try {
- if (spool != null) spool.remove(key);
+ if (spool != null) {
+ Object o = spool.remove(key);
+ ContainerUtil.dispose(o);
+ }
} finally {
unlock(key);
}
@@ -419,7 +424,20 @@
}
public void clear() {
- spool.clear();
+ if (spool != null) {
+ Iterator i = list();
+ while (i.hasNext()) {
+ String key = (String) i.next();
+ try {
+ remove(key);
+ } catch (MessagingException e) {
+ }
+ }
+ }
+ }
+
+ public void dispose() {
+ clear();
}
}
Modified: james/server/trunk/src/test/org/apache/james/transport/LinearProcessorTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/transport/LinearProcessorTest.java?view=diff&rev=441785&r1=441784&r2=441785
==============================================================================
--- james/server/trunk/src/test/org/apache/james/transport/LinearProcessorTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/transport/LinearProcessorTest.java Sat Sep 9 05:23:02 2006
@@ -62,7 +62,7 @@
String sep = "\r\n\r\n";
- String body = "original body\r\n.\r\n";
+ String body = "original body LinearProcessorTest\r\n.\r\n";
MailetContext mockContext = new MockMailContext();
@@ -157,12 +157,16 @@
linearProcessor.service(m);
ArrayList a = checkerMailet.receivedMails;
assertEquals(2, a.size());
- MimeMessage m1 = ((Mail) a.get(0)).getMessage();
- MimeMessage m2 = ((Mail) a.get(1)).getMessage();
+ Mail mail1 = ((Mail) a.get(0));
+ Mail mail2 = ((Mail) a.get(1));
+ MimeMessage m1 = mail1.getMessage();
+ MimeMessage m2 = mail2.getMessage();
assertNotSame(m1, m2);
assertEquals(m1.getSubject(), "new text 1");
assertEquals(m2.getSubject(), "new text 2");
m.dispose();
+ ContainerUtil.dispose(mail1);
+ ContainerUtil.dispose(mail2);
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
@@ -202,12 +206,16 @@
linearProcessor.service(m);
ArrayList a = checkerMailet.receivedMails;
assertEquals(2, a.size());
- MimeMessage m1 = ((Mail) a.get(0)).getMessage();
- MimeMessage m2 = ((Mail) a.get(1)).getMessage();
+ Mail mail1 = ((Mail) a.get(0));
+ Mail mail2 = ((Mail) a.get(1));
+ MimeMessage m1 = mail1.getMessage();
+ MimeMessage m2 = mail2.getMessage();
assertNotSame(m1, m2);
assertEquals("MYSTATE", ((Mail) a.get(0)).getState());
assertEquals("MYSTATE", ((Mail) a.get(1)).getState());
m.dispose();
+ ContainerUtil.dispose(mail1);
+ ContainerUtil.dispose(mail2);
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org