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]

Reply via email to