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/23 11:34:21 UTC

svn commit: r1052216 - in /james/server/trunk: mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/ mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/

Author: norman
Date: Thu Dec 23 10:34:20 2010
New Revision: 1052216

URL: http://svn.apache.org/viewvc?rev=1052216&view=rev
Log:
Make sure we send the mail to the next processor on state change

Modified:
    james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelCompositeProcessor.java
    james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailetProcessor.java
    james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessor.java

Modified: james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelCompositeProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelCompositeProcessor.java?rev=1052216&r1=1052215&r2=1052216&view=diff
==============================================================================
--- james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelCompositeProcessor.java (original)
+++ james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelCompositeProcessor.java Thu Dec 23 10:34:20 2010
@@ -29,19 +29,14 @@ import org.apache.james.mailetcontainer.
 import org.apache.james.mailetcontainer.api.MailetLoader;
 import org.apache.james.mailetcontainer.api.MatcherLoader;
 import org.apache.james.mailetcontainer.lib.AbstractStateCompositeProcessor;
-import org.apache.james.mailetcontainer.lib.matchers.CompositeMatcher;
 import org.apache.mailet.Mail;
-import org.apache.mailet.Mailet;
 import org.apache.mailet.MailetContext;
-import org.apache.mailet.Matcher;
 
 /**
  * Build up the Camel Routes by parsing the mailetcontainer.xml configuration file. 
  * 
- * It also offer the {@link CompositeProcessor} implementation which allow to inject {@link Mail} into the routes.
+ * It also offer the {@link AbstractStateCompositeProcessor} implementation which allow to inject {@link Mail} into the routes.
  *
- * Beside the basic {@link Mailet} / {@link Matcher} support this implementation also supports {@link CompositeMatcher} implementations.
- * See JAMES-948 
  * 
  */
 public class CamelCompositeProcessor extends AbstractStateCompositeProcessor implements CamelContextAware{
@@ -104,15 +99,21 @@ public class CamelCompositeProcessor ext
      * @see org.apache.james.mailetcontainer.lib.AbstractCompositeMailProcessor#createMailProcessor(java.lang.String, org.apache.commons.configuration.HierarchicalConfiguration)
      */
     protected MailProcessor createMailProcessor(String name, HierarchicalConfiguration config) throws Exception{
-        CamelMailetProcessor container = new CamelMailetProcessor();
-        container.setLog(logger);
-        container.setCamelContext(camelContext);
-        container.setMailetContext(mailetContext);
-        container.setMailetLoader(mailetLoader);
-        container.setMatcherLoader(matcherLoader);
-        container.configure(config);
-        container.init();
-        return container;
+        CamelMailetProcessor processor = new CamelMailetProcessor();
+        try {
+            processor.setLog(logger);
+            processor.setCamelContext(camelContext);
+            processor.setMailetContext(mailetContext);
+            processor.setMailetLoader(mailetLoader);
+            processor.setMatcherLoader(matcherLoader);
+            processor.configure(config);
+            processor.init();
+            return processor;
+        } catch (Exception e) {
+            processor.destroy();
+            
+            throw e;
+        }
     }
  
 

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=1052216&r1=1052215&r2=1052216&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 Thu Dec 23 10:34:20 2010
@@ -140,6 +140,8 @@ public class CamelMailetProcessor extend
             Processor disposeProcessor = new DisposeProcessor();
             Processor removePropsProcessor = new RemovePropertiesProcessor();
             Processor completeProcessor = new CompleteProcessor();
+            Processor stateChangedProcessor = new StateChangedProcessor();
+            
             String state = getState();
             Log logger = getLogger();
 
@@ -171,7 +173,7 @@ public class CamelMailetProcessor extend
                     
                     .choice().when(new MailStateEquals(Mail.GHOST)).process(disposeProcessor).stop().otherwise().process(removePropsProcessor).end()
 
-                    .choice().when(new MailStateNotEquals(state)).process(completeProcessor).stop().end();
+                    .choice().when(new MailStateNotEquals(state)).process(stateChangedProcessor).process(completeProcessor).stop().end();
             }
                 
           
@@ -219,6 +221,16 @@ public class CamelMailetProcessor extend
             }
         }
         
+        private final class StateChangedProcessor implements Processor {
+
+            public void process(Exchange arg0) throws Exception {
+                Mail mail = arg0.getIn().getBody(Mail.class);
+                mailetContext.sendMail(mail);
+                
+            }
+            
+        }
+        
     }
 
 

Modified: james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessor.java?rev=1052216&r1=1052215&r2=1052216&view=diff
==============================================================================
--- james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessor.java (original)
+++ james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessor.java Thu Dec 23 10:34:20 2010
@@ -57,7 +57,7 @@ import org.apache.mailet.base.MatcherInv
  */
 public abstract class AbstractStateMailetProcessor implements MailProcessor, Configurable, LogEnabled{
 
-    private MailetContext mailetContext;
+    protected MailetContext mailetContext;
     private MatcherLoader matcherLoader;
     private List<MailetProcessorListener> listeners = Collections.synchronizedList(new ArrayList<MailetProcessorListener>());
     private JMXStateMailetProcessorListener jmxListener;



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org