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 no...@apache.org on 2010/12/24 13:01:24 UTC
svn commit: r1052493 - in /james/server/trunk/mailetcontainer-library/src:
main/java/org/apache/james/mailetcontainer/lib/
test/java/org/apache/james/mailetcontainer/lib/
test/java/org/apache/james/mailetcontainer/lib/mock/
Author: norman
Date: Fri Dec 24 12:01:23 2010
New Revision: 1052493
URL: http://svn.apache.org/viewvc?rev=1052493&view=rev
Log:
AbstractStateCompositeProcessor should not try to loop by itself. The Mail should get send again to the MailetContainer by the "child" processor if the state is not GHOST.
Modified:
james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractStateCompositeProcessor.java
james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateCompositeProcessorTest.java
james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessorTest.java
james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/mock/MockMailetContext.java
Modified: james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractStateCompositeProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractStateCompositeProcessor.java?rev=1052493&r1=1052492&r2=1052493&view=diff
==============================================================================
--- james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractStateCompositeProcessor.java (original)
+++ james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractStateCompositeProcessor.java Fri Dec 24 12:01:23 2010
@@ -105,13 +105,17 @@ public abstract class AbstractStateCompo
try {
processor.service(mail);
+ if (Mail.GHOST.equals(mail.getState())) {
+ LifecycleUtil.dispose(mail);
+ }
+ /*
// check the mail needs further processing
if (Mail.GHOST.equalsIgnoreCase(mail.getState()) == false) {
service(mail);
} else {
LifecycleUtil.dispose(mail);
}
-
+*/
} catch (MessagingException e) {
ex = e;
throw e;
Modified: james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateCompositeProcessorTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateCompositeProcessorTest.java?rev=1052493&r1=1052492&r2=1052493&view=diff
==============================================================================
--- james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateCompositeProcessorTest.java (original)
+++ james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateCompositeProcessorTest.java Fri Dec 24 12:01:23 2010
@@ -20,14 +20,12 @@ package org.apache.james.mailetcontainer
import java.io.ByteArrayInputStream;
import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
import javax.mail.MessagingException;
+import junit.framework.TestCase;
+
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.commons.configuration.HierarchicalConfiguration;
@@ -37,32 +35,21 @@ import org.apache.james.mailetcontainer.
import org.apache.james.mailetcontainer.lib.mock.MockMailProcessor;
import org.apache.mailet.Mail;
-import junit.framework.TestCase;
-
public abstract class AbstractStateCompositeProcessorTest extends TestCase{
public void testChooseRightProcessor() throws Exception {
-
- Map<String,String> configMap = new HashMap<String, String>();
- configMap.put("root", "test");
- configMap.put("test", "invalid");
- configMap.put("error", "invalid");
-
- final AtomicInteger count = new AtomicInteger(0);
AbstractStateCompositeProcessor processor = new AbstractStateCompositeProcessor() {
@Override
protected MailProcessor createMailProcessor(final String state, HierarchicalConfiguration config) throws Exception {
- String newstate = config.getString("[@newstate]");
- return new MockMailProcessor(newstate) {
+ return new MockMailProcessor("") {
@Override
public void service(Mail mail) throws MessagingException {
// check if the right processor was selected depending on the state
assertEquals(state, mail.getState());
super.service(mail);
- count.incrementAndGet();
}
};
@@ -71,15 +58,32 @@ public abstract class AbstractStateCompo
SimpleLog log = new SimpleLog("MockLog");
log.setLevel(SimpleLog.LOG_LEVEL_DEBUG);
processor.setLog(log);
- processor.configure(createMockConfig(configMap));
+ processor.configure(createConfig(Arrays.asList("root","error","test")));
processor.init();
try {
- processor.service(new MailImpl());
- fail("Should have failed because of an not configured processor");
- } catch (MessagingException ex) {
- // we should have gone throw 2 processors
- assertEquals(2, count.get());
+ Mail mail1 = new MailImpl();
+ mail1.setState(Mail.DEFAULT);
+ Mail mail2 = new MailImpl();
+ mail2.setState(Mail.ERROR);
+
+ Mail mail3 = new MailImpl();
+ mail3.setState("test");
+
+ Mail mail4 = new MailImpl();
+ mail4.setState("invalid");
+
+ processor.service(mail1);
+ processor.service(mail2);
+ processor.service(mail3);
+
+ try {
+ processor.service(mail4);
+ fail("should fail because of no mapping to a processor for this state");
+ } catch (MessagingException e) {
+
+ }
+
} finally {
processor.dispose();
}
@@ -152,25 +156,4 @@ public abstract class AbstractStateCompo
return builder;
}
- private HierarchicalConfiguration createMockConfig(Map<String,String> states) throws ConfigurationException {
-
- StringBuilder sb = new StringBuilder();
- sb.append("<?xml version=\"1.0\"?>");
- sb.append("<processors>");
- Iterator<String> keys = states.keySet().iterator();
- while(keys.hasNext()) {
- String state = keys.next();
- String newstate = states.get(state);
- sb.append("<processor state=\"");
- sb.append(state);
- sb.append("\" newstate=\"");
- sb.append(newstate);
- sb.append("\"/>");
- }
- sb.append("</processors>");
-
- DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
- builder.load(new ByteArrayInputStream(sb.toString().getBytes()));
- return builder;
- }
}
Modified: james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessorTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessorTest.java?rev=1052493&r1=1052492&r2=1052493&view=diff
==============================================================================
--- james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessorTest.java (original)
+++ james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessorTest.java Fri Dec 24 12:01:23 2010
@@ -20,12 +20,15 @@
package org.apache.james.mailetcontainer.lib;
import java.io.ByteArrayInputStream;
+import java.util.Arrays;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.james.core.MailImpl;
import org.apache.james.mailetcontainer.lib.mock.MockMailet;
import org.apache.james.mailetcontainer.lib.mock.MockMatcher;
+import org.apache.mailet.MailAddress;
import junit.framework.TestCase;
@@ -48,4 +51,14 @@ public abstract class AbstractStateMaile
builder.load(new ByteArrayInputStream(sb.toString().getBytes()));
return builder;
}
+
+ public void testRouting() throws ConfigurationException, Exception {
+ AbstractStateMailetProcessor processor = createProcessor(createConfig());
+
+ MailImpl mail = new MailImpl();
+ mail.setSender(new MailAddress("test@localhost"));
+ mail.setRecipients(Arrays.asList(new MailAddress("test@localhost"), new MailAddress("test2@localhost")));
+
+ processor.service(mail);
+ }
}
Modified: james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/mock/MockMailetContext.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/mock/MockMailetContext.java?rev=1052493&r1=1052492&r2=1052493&view=diff
==============================================================================
--- james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/mock/MockMailetContext.java (original)
+++ james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/mock/MockMailetContext.java Fri Dec 24 12:01:23 2010
@@ -38,6 +38,7 @@ import org.apache.mailet.MailetContext;
public class MockMailetContext implements MailetContext{
private Map<String, Object> attributes = new HashMap<String, Object>();
+ private List<Mail> mails = new ArrayList<Mail>();
public void bounce(Mail arg0, String arg1) throws MessagingException {
throw new UnsupportedOperationException("Not implemented");
@@ -134,9 +135,8 @@ public class MockMailetContext implement
}
- public void sendMail(Mail arg0) throws MessagingException {
- throw new UnsupportedOperationException("Not implemented");
-
+ public void sendMail(Mail mail) throws MessagingException {
+ mails.add(mail);
}
public void sendMail(MailAddress arg0, Collection arg1, MimeMessage arg2) throws MessagingException {
@@ -157,4 +157,7 @@ public class MockMailetContext implement
throw new UnsupportedOperationException("Not implemented");
}
+ public List<Mail> getSentMails() {
+ return mails;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org