Author: norman
Date: Sat Jan 8 09:15:45 2011
New Revision: 1056671
URL: http://svn.apache.org/viewvc?rev=1056671&view=rev
Log:
Add first test for CamelMailetProcessor and make sure the camelcontext get
started if it is not started yet
Added:
james/server/trunk/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/camel/CamelMailetProcessorTest.java
Modified:
james/server/trunk/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/MockMailet.java
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailetProcessor.java
james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessorTest.java
Modified:
james/server/trunk/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/MockMailet.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/MockMailet.java?rev=1056671&r1=1056670&r2=1056671&view=diff
==============================================================================
---
james/server/trunk/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/MockMailet.java
(original)
+++
james/server/trunk/mailetcontainer-api/src/test/java/org/apache/james/mailetcontainer/api/mock/MockMailet.java
Sat Jan 8 09:15:45 2011
@@ -45,7 +45,8 @@ public class MockMailet implements Maile
}
public void service(Mail mail) throws MessagingException {
- mail.setAttribute(config.getInitParameter("flag"), mail);
+ String state = config.getInitParameter("state");
+ mail.setState(state);
}
}
Modified:
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailetProcessor.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailetProcessor.java?rev=1056671&r1=1056670&r2=1056671&view=diff
==============================================================================
---
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailetProcessor.java
(original)
+++
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailetProcessor.java
Sat Jan 8 09:15:45 2011
@@ -105,6 +105,9 @@ public class CamelMailetProcessor extend
public void init() throws Exception {
producerTemplate = context.createProducerTemplate();
+ if (context.getStatus().isStopped()) {
+ context.start();
+ }
super.init();
}
Added:
james/server/trunk/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/camel/CamelMailetProcessorTest.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/camel/CamelMailetProcessorTest.java?rev=1056671&view=auto
==============================================================================
---
james/server/trunk/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/camel/CamelMailetProcessorTest.java
(added)
+++
james/server/trunk/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/camel/CamelMailetProcessorTest.java
Sat Jan 8 09:15:45 2011
@@ -0,0 +1,49 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.mailetcontainer.camel;
+
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.commons.logging.impl.SimpleLog;
+import org.apache.james.mailetcontainer.api.mock.MockMailetContext;
+import org.apache.james.mailetcontainer.api.mock.MockMailetLoader;
+import org.apache.james.mailetcontainer.api.mock.MockMatcherLoader;
+import org.apache.james.mailetcontainer.lib.AbstractStateMailetProcessor;
+import org.apache.james.mailetcontainer.lib.AbstractStateMailetProcessorTest;
+
+public class CamelMailetProcessorTest extends AbstractStateMailetProcessorTest
{
+
+ @Override
+ protected AbstractStateMailetProcessor
createProcessor(HierarchicalConfiguration configuration) throws
ConfigurationException, Exception {
+ CamelMailetProcessor processor = new CamelMailetProcessor();
+ SimpleLog log = new SimpleLog("MockLog");
+ log.setLevel(SimpleLog.LOG_LEVEL_DEBUG);
+ processor.setLog(log);
+ processor.setCamelContext(new DefaultCamelContext());
+ processor.setMailetContext(new MockMailetContext());
+ processor.setMailetLoader(new MockMailetLoader());
+ processor.setMatcherLoader(new MockMatcherLoader());
+ processor.configure(configuration);
+ processor.init();
+ return processor;
+ }
+
+}
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=1056671&r1=1056670&r2=1056671&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
Sat Jan 8 09:15:45 2011
@@ -21,6 +21,10 @@ package org.apache.james.mailetcontainer
import java.io.ByteArrayInputStream;
import java.util.Arrays;
+import java.util.Collection;
+import java.util.concurrent.CountDownLatch;
+
+import javax.mail.MessagingException;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.DefaultConfigurationBuilder;
@@ -28,7 +32,11 @@ import org.apache.commons.configuration.
import org.apache.james.core.MailImpl;
import org.apache.james.mailetcontainer.api.mock.MockMailet;
import org.apache.james.mailetcontainer.api.mock.MockMatcher;
+import
org.apache.james.mailetcontainer.lib.AbstractStateMailetProcessor.MailetProcessorListener;
+import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
+import org.apache.mailet.Mailet;
+import org.apache.mailet.Matcher;
import junit.framework.TestCase;
@@ -40,25 +48,58 @@ public abstract class AbstractStateMaile
private HierarchicalConfiguration createConfig() throws
ConfigurationException {
StringBuilder sb = new StringBuilder();
- sb.append("<processor>");
+ sb.append("<processor state=\"" + Mail.DEFAULT + "\">");
sb.append("<mailet
match=\"").append(MockMatcher.class.getName()).append("=t...@localhost\"").append("
class=\"").append(MockMailet.class.getName()).append("\">");
- sb.append("<flag>test</flag>");
+ sb.append("<state>test</state>");
sb.append("</mailet>");
- sb.append("</processor");
+ sb.append("</processor>");
DefaultConfigurationBuilder builder = new
DefaultConfigurationBuilder();
builder.load(new ByteArrayInputStream(sb.toString().getBytes()));
return builder;
}
- public void testRouting() throws ConfigurationException, Exception {
- AbstractStateMailetProcessor processor =
createProcessor(createConfig());
-
- MailImpl mail = new MailImpl();
+ public void testSimpleRouting() throws ConfigurationException, Exception {
+ final CountDownLatch latch = new CountDownLatch(2);
+ final MailImpl mail = new MailImpl();
+ mail.setName(MailImpl.getId());
mail.setSender(new MailAddress("t...@localhost"));
mail.setRecipients(Arrays.asList(new MailAddress("t...@localhost"),
new MailAddress("te...@localhost")));
+ AbstractStateMailetProcessor processor =
createProcessor(createConfig());
+ processor.addListener(new MailetProcessorListener() {
+
+ public void afterMatcher(Matcher m, String mailName,
Collection<MailAddress> recipients, Collection<MailAddress> matches, long
processTime, MessagingException e) {
+ if (MockMatcher.class.equals(m.getClass())) {
+ assertEquals(mail.getName(), mailName);
+ // match one recipient
+ assertEquals(1, matches.size());
+ assertNull(e);
+ latch.countDown();
+ }
+
+ }
+
+ public void afterMailet(Mailet m, String mailName, String state,
long processTime, MessagingException e) {
+ // check for class name as the terminating mailet will kick
in too
+
+ if (MockMailet.class.equals(m.getClass())) {
+ //assertEquals(mail.getName(), mailName);
+ assertEquals("test", state);
+ assertNull(e);
+ latch.countDown();
+ }
+ }
+ });
+
+ assertEquals(Mail.DEFAULT, mail.getState());
processor.service(mail);
+
+
+ // the source mail should be ghosted as it reached the end of
processor as only one recipient matched
+ assertEquals(Mail.GHOST, mail.getState());
+ latch.await();
+
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]