Author: bago
Date: Tue Jul 29 07:59:49 2008
New Revision: 680726
URL: http://svn.apache.org/viewvc?rev=680726&view=rev
Log:
Backport stub "in memory" spool repository used for tests from trunk (leave
around less garbage, and it more compliant with the interface implemented)
Modified:
james/server/branches/v2.3/src/test/org/apache/james/test/mock/james/InMemorySpoolRepository.java
Modified:
james/server/branches/v2.3/src/test/org/apache/james/test/mock/james/InMemorySpoolRepository.java
URL:
http://svn.apache.org/viewvc/james/server/branches/v2.3/src/test/org/apache/james/test/mock/james/InMemorySpoolRepository.java?rev=680726&r1=680725&r2=680726&view=diff
==============================================================================
---
james/server/branches/v2.3/src/test/org/apache/james/test/mock/james/InMemorySpoolRepository.java
(original)
+++
james/server/branches/v2.3/src/test/org/apache/james/test/mock/james/InMemorySpoolRepository.java
Tue Jul 29 07:59:49 2008
@@ -19,6 +19,9 @@
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;
import org.apache.james.util.Lock;
@@ -44,7 +47,7 @@
* @version 1.0.0, 24/04/1999
*/
public class InMemorySpoolRepository
- implements SpoolRepository {
+ implements SpoolRepository, Disposable {
/**
* Whether 'deep debugging' is turned on.
@@ -136,7 +139,19 @@
}
}
try {
- spool.put(key,mc);
+ // Remove any previous copy of this mail
+ if (spool.containsKey(key)) {
+ // do not use this.remove because this would
+ // also remove a current lock.
+ Object o = spool.remove(key);
+ ContainerUtil.dispose(o);
+ }
+ // Clone the mail (so the caller could modify it).
+ MailImpl m = new MailImpl(mc,mc.getName());
+ m.setState(mc.getState());
+ m.setLastUpdated(mc.getLastUpdated());
+ m.setErrorMessage(mc.getErrorMessage());
+ spool.put(mc.getName(),m);
} finally {
if (!wasLocked) {
// If it wasn't locked, we need to unlock now
@@ -157,7 +172,7 @@
}
} catch (Exception e) {
- getLogger().error("Exception storing mail: " + e);
+ getLogger().error("Exception storing mail: " + e,e);
throw new MessagingException("Exception caught while storing
Message Container: ",e);
}
}
@@ -176,7 +191,10 @@
try {
Mail mc = null;
try {
- mc = (Mail) spool.get(key);
+ mc = new MailImpl((Mail) spool.get(key),key);
+ mc.setState(((Mail) spool.get(key)).getState());
+ mc.setErrorMessage(((Mail) spool.get(key)).getErrorMessage());
+ mc.setLastUpdated(((Mail) spool.get(key)).getLastUpdated());
}
catch (RuntimeException re){
StringBuffer exceptionBuffer = new StringBuffer(128);
@@ -230,7 +248,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);
}
@@ -414,7 +435,30 @@
}
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();
+ }
+
+ public String toString() {
+ StringBuffer result = new StringBuffer();
+ result.append(super.toString());
+ Iterator i = list();
+ while (i.hasNext()) {
+ result.append("\n\t"+i.next());
+ }
+ return result.toString();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]