Author: norman
Date: Sun Feb 21 20:50:07 2010
New Revision: 912398

URL: http://svn.apache.org/viewvc?rev=912398&view=rev
Log:
correct handling of ghost mails (JAMES-971)

Modified:
    
james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolComponent.java
    
james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolConsumer.java
    
james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolEndPoint.java
    
james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolProducer.java

Modified: 
james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolComponent.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolComponent.java?rev=912398&r1=912397&r2=912398&view=diff
==============================================================================
--- 
james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolComponent.java
 (original)
+++ 
james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolComponent.java
 Sun Feb 21 20:50:07 2010
@@ -26,14 +26,17 @@
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.impl.DefaultComponent;
+import org.apache.commons.logging.Log;
+import org.apache.james.lifecycle.LogEnabled;
 import org.apache.james.services.SpoolManager;
 import org.apache.james.services.SpoolRepository;
 import org.apache.mailet.MailetConfig;
 import org.apache.mailet.MatcherConfig;
 
-public class SpoolComponent extends DefaultComponent implements SpoolManager {
+public class SpoolComponent extends DefaultComponent implements SpoolManager, 
LogEnabled {
 
     private SpoolRepository spool;
+    private Log log;
 
     @Resource(name="spoolrepository")
     public void setSpoolRepository(SpoolRepository spool) {
@@ -43,7 +46,7 @@
     @Override
     protected Endpoint createEndpoint(String uri, String remaining, 
Map<String, Object> parameters) throws Exception {
         
-        return new SpoolEndPoint(uri,this, spool);
+        return new SpoolEndPoint(uri,this, spool, log);
     }
 
     public List<MailetConfig> getMailetConfigs(String processorName) {
@@ -60,4 +63,12 @@
         // TODO Auto-generated method stub
         return null;
     }
+
+    /*
+     * (non-Javadoc)
+     * @see 
org.apache.james.lifecycle.LogEnabled#setLog(org.apache.commons.logging.Log)
+     */
+    public void setLog(Log log) {
+        this.log = log;
+    }
 }

Modified: 
james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolConsumer.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolConsumer.java?rev=912398&r1=912397&r2=912398&view=diff
==============================================================================
--- 
james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolConsumer.java
 (original)
+++ 
james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolConsumer.java
 Sun Feb 21 20:50:07 2010
@@ -20,11 +20,10 @@
 package org.apache.james.transport.camel;
 
 import org.apache.camel.Exchange;
-import org.apache.camel.ExchangePattern;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.DefaultConsumer;
 import org.apache.camel.impl.DefaultEndpoint;
-import org.apache.james.lifecycle.LifecycleUtil;
+import org.apache.commons.logging.Log;
 import org.apache.james.services.SpoolRepository;
 import org.apache.mailet.Mail;
 
@@ -33,11 +32,13 @@
 
     private SpoolRepository spool;
     private Processor processor;
+    private Log log;
     
-    public SpoolConsumer(DefaultEndpoint endpoint, Processor processor, 
SpoolRepository spool) {
+    public SpoolConsumer(DefaultEndpoint endpoint, Processor processor, 
SpoolRepository spool, Log log) {
         super(endpoint, processor);
         this.spool = spool;
         this.processor = processor;
+        this.log = log;
     }
 
 
@@ -46,26 +47,6 @@
         Mail mail;
         try {
             mail = spool.accept();
-
-            // Only remove an email from the spool is processing is
-            // complete, or if it has no recipients
-            if ((Mail.GHOST.equals(mail.getState())) ||
-                (mail.getRecipients() == null) ||
-                (mail.getRecipients().size() == 0)) {
-                spool.remove(mail.getName());
-                //if (logger.isDebugEnabled()) {
-                    StringBuffer debugBuffer =
-                        new StringBuffer(64)
-                                .append("==== Removed from spool mail ")
-                                .append(mail.getName())
-                                .append("====");
-                 //   logger.debug(debugBuffer.toString());
-               // }
-                    System.out.println(debugBuffer.toString());
-                    LifecycleUtil.dispose(mail);
-
-            }
-            
             ex.setIn(new MailMessage(mail));
             processor.process(ex);
         } catch (Exception e) {

Modified: 
james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolEndPoint.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolEndPoint.java?rev=912398&r1=912397&r2=912398&view=diff
==============================================================================
--- 
james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolEndPoint.java
 (original)
+++ 
james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolEndPoint.java
 Sun Feb 21 20:50:07 2010
@@ -23,16 +23,19 @@
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.impl.DefaultEndpoint;
+import org.apache.commons.logging.Log;
 import org.apache.james.services.SpoolRepository;
 
 public class SpoolEndPoint extends DefaultEndpoint{
 
     private SpoolRepository spool;
+    private Log log;
 
 
-    public SpoolEndPoint(String endpointUri, SpoolComponent component, 
SpoolRepository spool) {
+    public SpoolEndPoint(String endpointUri, SpoolComponent component, 
SpoolRepository spool, Log log) {
         super(endpointUri, component);
         this.spool = spool;
+        this.log = log;
     }
 
     
@@ -41,7 +44,7 @@
      * @see org.apache.camel.Endpoint#createProducer()
      */
     public Producer createProducer() throws Exception {
-        return new SpoolProducer(this,spool);
+        return new SpoolProducer(this,spool,log);
     }
 
     /*
@@ -58,8 +61,7 @@
      * @see 
org.apache.camel.Endpoint#createConsumer(org.apache.camel.Processor)
      */
     public Consumer createConsumer(Processor processor) throws Exception {
-        SpoolConsumer consumer = new SpoolConsumer(this,processor,spool);
-        //configureConsumer(consumer);
+        SpoolConsumer consumer = new SpoolConsumer(this,processor,spool,log);
         return consumer;
         
     }

Modified: 
james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolProducer.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolProducer.java?rev=912398&r1=912397&r2=912398&view=diff
==============================================================================
--- 
james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolProducer.java
 (original)
+++ 
james/server/trunk/spoolmanager/src/main/java/org/apache/james/transport/camel/SpoolProducer.java
 Sun Feb 21 20:50:07 2010
@@ -22,33 +22,50 @@
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.impl.DefaultProducer;
-import org.apache.camel.util.ExchangeHelper;
+import org.apache.commons.logging.Log;
+import org.apache.james.lifecycle.LifecycleUtil;
 import org.apache.james.services.SpoolRepository;
 import org.apache.mailet.Mail;
 
-public class SpoolProducer extends DefaultProducer{
+public class SpoolProducer extends DefaultProducer {
 
     private SpoolRepository spool;
+    private Log log;
 
-    public SpoolProducer(Endpoint endpoint, SpoolRepository spool) {
+    public SpoolProducer(Endpoint endpoint, SpoolRepository spool, Log log) {
         super(endpoint);
         this.spool = spool;
+        this.log = log;
     }
 
     /*
      * (non-Javadoc)
+     * 
      * @see org.apache.camel.Processor#process(org.apache.camel.Exchange)
      */
     public void process(Exchange exchange) throws Exception {
-        Exchange newExchange = getEndpoint().createExchange(exchange);
-        Mail mail = (Mail) newExchange.getIn().getBody();
-        try {
-            spool.store(mail);   
-        } catch (Exception e) {
-            e.printStackTrace();
-            throw e;
+        // Exchange newExchange = getEndpoint().createExchange(exchange);
+        Mail mail = (Mail) exchange.getIn().getBody();
+
+        // Only remove an email from the spool is processing is
+        // complete, or if it has no recipients
+        if ((Mail.GHOST.equals(mail.getState())) || (mail.getRecipients() == 
null) || (mail.getRecipients().size() == 0)) {
+            spool.remove(mail.getName());
+            if (log.isDebugEnabled()) {
+                StringBuffer debugBuffer = new StringBuffer(64).append("==== 
Removed from spool mail ").append(mail.getName()).append("====");
+                log.debug(debugBuffer.toString());
+            }
+            LifecycleUtil.dispose(mail);
+
+        } else {
+
+            try {
+                spool.store(mail);
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw e;
+            }
         }
-        ExchangeHelper.copyResults(exchange, newExchange);
     }
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to