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/22 14:11:51 UTC
svn commit: r1051885 - in /james/server/trunk:
container-spring/src/main/config/james/context/
mailetcontainer-api/src/main/java/org/apache/james/mailetcontainer/api/
mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/
mailetcon...
Author: norman
Date: Wed Dec 22 13:11:50 2010
New Revision: 1051885
URL: http://svn.apache.org/viewvc?rev=1051885&view=rev
Log:
Remove MailetContainer and CompositeMailProcessor api. This both are not really part of the api but some kind of implementations
Added:
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelCompositeProcessor.java
- copied, changed from r1051862, james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelCompositeMailProcessor.java
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailetProcessor.java
- copied, changed from r1051800, james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailetContainer.java
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelProcessor.java
- copied, changed from r1051767, james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/MailetProcessor.java
james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractCompositeProcessor.java
- copied, changed from r1051862, james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractCompositeMailProcessor.java
james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractMailetProcessor.java
- copied, changed from r1051800, james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractMailetContainer.java
Removed:
james/server/trunk/mailetcontainer-api/src/main/java/org/apache/james/mailetcontainer/api/CompositeMailProcessor.java
james/server/trunk/mailetcontainer-api/src/main/java/org/apache/james/mailetcontainer/api/CompositeMailProcessorListener.java
james/server/trunk/mailetcontainer-api/src/main/java/org/apache/james/mailetcontainer/api/MailetContainer.java
james/server/trunk/mailetcontainer-api/src/main/java/org/apache/james/mailetcontainer/api/MailetContainerListener.java
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelCompositeMailProcessor.java
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailetContainer.java
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/MailetProcessor.java
james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractCompositeMailProcessor.java
james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractMailetContainer.java
Modified:
james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/MatcherSplitter.java
james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/JMXCompositeMailProcessorListener.java
james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/JMXMailetContainerListener.java
james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/MailProcessorManagement.java
Modified: james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml?rev=1051885&r1=1051884&r2=1051885&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml (original)
+++ james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml Wed Dec 22 13:11:50 2010
@@ -184,7 +184,7 @@
<!--
Mailet Container Beans.
-->
- <bean id="mailprocessor" name="processorRoute" class="org.apache.james.mailetcontainer.camel.CamelCompositeMailProcessor"/>
+ <bean id="mailprocessor" name="processorRoute" class="org.apache.james.mailetcontainer.camel.CamelCompositeProcessor"/>
<!--
mailcontext bean must be defined after mailProcessor
otherwise LogEnabled injection via LogEnabledBeanPostProcessor will not occur before
Copied: james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelCompositeProcessor.java (from r1051862, james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelCompositeMailProcessor.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelCompositeProcessor.java?p2=james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelCompositeProcessor.java&p1=james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelCompositeMailProcessor.java&r1=1051862&r2=1051885&rev=1051885&view=diff
==============================================================================
--- james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelCompositeMailProcessor.java (original)
+++ james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelCompositeProcessor.java Wed Dec 22 13:11:50 2010
@@ -25,11 +25,10 @@ import javax.annotation.Resource;
import org.apache.camel.CamelContext;
import org.apache.camel.CamelContextAware;
import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.james.mailetcontainer.api.CompositeMailProcessor;
import org.apache.james.mailetcontainer.api.MailProcessor;
import org.apache.james.mailetcontainer.api.MailetLoader;
import org.apache.james.mailetcontainer.api.MatcherLoader;
-import org.apache.james.mailetcontainer.lib.AbstractCompositeMailProcessor;
+import org.apache.james.mailetcontainer.lib.AbstractCompositeProcessor;
import org.apache.james.mailetcontainer.lib.matchers.CompositeMatcher;
import org.apache.mailet.Mail;
import org.apache.mailet.Mailet;
@@ -39,13 +38,13 @@ import org.apache.mailet.Matcher;
/**
* Build up the Camel Routes by parsing the mailetcontainer.xml configuration file.
*
- * It also offer the {@link CompositeMailProcessor} implementation which allow to inject {@link Mail} into the routes.
+ * It also offer the {@link CompositeProcessor} 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 CamelCompositeMailProcessor extends AbstractCompositeMailProcessor implements CamelContextAware{
+public class CamelCompositeProcessor extends AbstractCompositeProcessor implements CamelContextAware{
private CamelContext camelContext;
private MailetContext mailetContext;
@@ -105,7 +104,7 @@ public class CamelCompositeMailProcessor
* @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{
- CamelMailetContainer container = new CamelMailetContainer();
+ CamelMailetProcessor container = new CamelMailetProcessor();
container.setLog(logger);
container.setCamelContext(camelContext);
container.setMailetContext(mailetContext);
@@ -121,8 +120,8 @@ public class CamelCompositeMailProcessor
String names[] = getProcessorNames();
for (int i = 0; i < names.length; i++) {
MailProcessor processor = getProcessor(names[i]);
- if (processor instanceof CamelMailetContainer) {
- ((CamelMailetContainer) processor).destroy();
+ if (processor instanceof CamelMailetProcessor) {
+ ((CamelMailetProcessor) processor).destroy();
}
}
Copied: james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailetProcessor.java (from r1051800, james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailetContainer.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailetProcessor.java?p2=james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailetProcessor.java&p1=james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailetContainer.java&r1=1051800&r2=1051885&rev=1051885&view=diff
==============================================================================
--- james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailetContainer.java (original)
+++ james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelMailetProcessor.java Wed Dec 22 13:11:50 2010
@@ -33,7 +33,7 @@ import org.apache.camel.builder.RouteBui
import org.apache.camel.model.RouteDefinition;
import org.apache.camel.processor.aggregate.UseLatestAggregationStrategy;
import org.apache.commons.logging.Log;
-import org.apache.james.mailetcontainer.lib.AbstractMailetContainer;
+import org.apache.james.mailetcontainer.lib.AbstractMailetProcessor;
import org.apache.james.mailetcontainer.lib.MailetConfigImpl;
import org.apache.james.mailetcontainer.lib.MatcherMailetPair;
import org.apache.mailet.Mail;
@@ -43,10 +43,10 @@ import org.apache.mailet.Matcher;
/**
- * {@link AbstractMailetContainer} implementation which use Camel DSL for the {@link Matcher} / {@link Mailet} routing
+ * {@link AbstractMailetProcessor} implementation which use Camel DSL for the {@link Matcher} / {@link Mailet} routing
*
*/
-public class CamelMailetContainer extends AbstractMailetContainer implements CamelContextAware{
+public class CamelMailetProcessor extends AbstractMailetProcessor implements CamelContextAware{
private CamelContext context;
@@ -159,10 +159,10 @@ public class CamelMailetContainer extend
onMatchException = ((MailetConfigImpl) mailetConfig).getInitAttribute("onMatchException");
}
- MailetProcessor mailetProccessor = new MailetProcessor(mailet, logger, CamelMailetContainer.this);
+ CamelProcessor mailetProccessor = new CamelProcessor(mailet, logger, CamelMailetProcessor.this);
// Store the matcher to use for splitter in properties
processorDef
- .setProperty(MatcherSplitter.MATCHER_PROPERTY, constant(matcher)).setProperty(MatcherSplitter.ON_MATCH_EXCEPTION_PROPERTY, constant(onMatchException)).setProperty(MatcherSplitter.MAILETCONTAINER_PROPERTY, constant(CamelMailetContainer.this))
+ .setProperty(MatcherSplitter.MATCHER_PROPERTY, constant(matcher)).setProperty(MatcherSplitter.ON_MATCH_EXCEPTION_PROPERTY, constant(onMatchException)).setProperty(MatcherSplitter.MAILETCONTAINER_PROPERTY, constant(CamelMailetProcessor.this))
// do splitting of the mail based on the stored matcher
.split().method(MatcherSplitter.class).aggregationStrategy(aggr).parallelProcessing()
@@ -178,7 +178,7 @@ public class CamelMailetContainer extend
- Processor terminatingMailetProcessor = new MailetProcessor(new TerminatingMailet(), getLogger(), CamelMailetContainer.this);
+ Processor terminatingMailetProcessor = new CamelProcessor(new TerminatingMailet(), getLogger(), CamelMailetProcessor.this);
processorDef
Copied: james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelProcessor.java (from r1051767, james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/MailetProcessor.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelProcessor.java?p2=james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelProcessor.java&p1=james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/MailetProcessor.java&r1=1051767&r2=1051885&rev=1051885&view=diff
==============================================================================
--- james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/MailetProcessor.java (original)
+++ james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/CamelProcessor.java Wed Dec 22 13:11:50 2010
@@ -26,8 +26,7 @@ import javax.mail.MessagingException;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.commons.logging.Log;
-import org.apache.james.mailetcontainer.api.MailetContainer;
-import org.apache.james.mailetcontainer.api.MailetContainerListener;
+import org.apache.james.mailetcontainer.lib.AbstractMailetProcessor.MailetProcessorListener;
import org.apache.james.mailetcontainer.lib.MailetConfigImpl;
import org.apache.james.mailetcontainer.lib.ProcessorUtil;
import org.apache.mailet.Mail;
@@ -38,21 +37,21 @@ import org.apache.mailet.MailetConfig;
* Mailet wrapper which execute a Mailet in a Processor
*
*/
-public class MailetProcessor implements Processor{
+public class CamelProcessor implements Processor{
private Mailet mailet;
private Log logger;
- private MailetContainer container;
+ private CamelMailetProcessor processor;
/**
* Mailet to call on process
*
* @param mailet
*/
- public MailetProcessor(Mailet mailet, Log logger, MailetContainer container) {
+ public CamelProcessor(Mailet mailet, Log logger, CamelMailetProcessor container) {
this.mailet = mailet;
this.logger = logger;
- this.container = container;
+ this.processor = processor;
}
/**
@@ -88,10 +87,10 @@ public class MailetProcessor implements
}
} finally {
- List<MailetContainerListener> listeners = container.getListeners();
+ List<MailetProcessorListener> listeners = processor.getListeners();
long complete = System.currentTimeMillis() - start;
for (int i = 0; i < listeners.size(); i++) {
- MailetContainerListener listener = listeners.get(i);
+ MailetProcessorListener listener = listeners.get(i);
listener.afterMailet(mailet, mail.getName(), mail.getState(), complete, ex);
}
}
Modified: james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/MatcherSplitter.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/MatcherSplitter.java?rev=1051885&r1=1051884&r2=1051885&view=diff
==============================================================================
--- james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/MatcherSplitter.java (original)
+++ james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/camel/MatcherSplitter.java Wed Dec 22 13:11:50 2010
@@ -33,8 +33,7 @@ import org.apache.camel.InOnly;
import org.apache.camel.Property;
import org.apache.commons.logging.Log;
import org.apache.james.core.MailImpl;
-import org.apache.james.mailetcontainer.api.MailetContainer;
-import org.apache.james.mailetcontainer.api.MailetContainerListener;
+import org.apache.james.mailetcontainer.lib.AbstractMailetProcessor.MailetProcessorListener;
import org.apache.james.mailetcontainer.lib.ProcessorUtil;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
@@ -78,7 +77,7 @@ public class MatcherSplitter {
*/
@SuppressWarnings("unchecked")
@Handler
- public List<Mail> split(@Property(MATCHER_PROPERTY) Matcher matcher, @Property(ON_MATCH_EXCEPTION_PROPERTY) String onMatchException, @Property(LOGGER_PROPERTY) Log logger, @Property(MAILETCONTAINER_PROPERTY) MailetContainer container,
+ public List<Mail> split(@Property(MATCHER_PROPERTY) Matcher matcher, @Property(ON_MATCH_EXCEPTION_PROPERTY) String onMatchException, @Property(LOGGER_PROPERTY) Log logger, @Property(MAILETCONTAINER_PROPERTY) CamelMailetProcessor container,
@Body Mail mail) throws MessagingException {
Collection<MailAddress> matchedRcpts = null;
Collection<MailAddress> origRcpts = new ArrayList<MailAddress>(mail.getRecipients());
@@ -164,9 +163,9 @@ public class MatcherSplitter {
} finally {
long complete = System.currentTimeMillis() - start;
- List<MailetContainerListener> listeners = container.getListeners();
+ List<MailetProcessorListener> listeners = container.getListeners();
for (int i = 0; i < listeners.size(); i++) {
- MailetContainerListener listener = listeners.get(i);
+ MailetProcessorListener listener = listeners.get(i);
if (matchedRcpts.isEmpty()) {
listener.afterMatcher(matcher, mail.getName(), origRcpts, null, complete, ex);
} else {
Copied: james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractCompositeProcessor.java (from r1051862, james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractCompositeMailProcessor.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractCompositeProcessor.java?p2=james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractCompositeProcessor.java&p1=james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractCompositeMailProcessor.java&r1=1051862&r2=1051885&rev=1051885&view=diff
==============================================================================
--- james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractCompositeMailProcessor.java (original)
+++ james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractCompositeProcessor.java Wed Dec 22 13:11:50 2010
@@ -36,20 +36,18 @@ import org.apache.james.lifecycle.api.Co
import org.apache.james.lifecycle.api.LifecycleUtil;
import org.apache.james.lifecycle.api.LogEnabled;
import org.apache.james.mailetcontainer.api.MailProcessor;
-import org.apache.james.mailetcontainer.api.CompositeMailProcessor;
-import org.apache.james.mailetcontainer.api.CompositeMailProcessorListener;
import org.apache.james.mailetcontainer.api.jmx.ProcessorManagementMBean;
import org.apache.james.mailetcontainer.lib.jmx.JMXCompositeMailProcessorListener;
import org.apache.mailet.Mail;
/**
- * Abstract base class for {@link CompositeMailProcessor} which service the {@link Mail} with a {@link MailetContainer} instances
+ * Abstract base class for {@link CompositeProcessor} which service the {@link Mail} with a {@link CamelProcessor} instances
*
*
*/
-public abstract class AbstractCompositeMailProcessor implements CompositeMailProcessor, Configurable, LogEnabled, ProcessorManagementMBean{
+public abstract class AbstractCompositeProcessor implements MailProcessor, Configurable, LogEnabled, ProcessorManagementMBean{
- private List<CompositeMailProcessorListener> listeners = Collections.synchronizedList(new ArrayList<CompositeMailProcessorListener>());
+ private List<CompositeProcessorListener> listeners = Collections.synchronizedList(new ArrayList<CompositeProcessorListener>());
private final Map<String,MailProcessor> processors = new HashMap<String,MailProcessor>();
protected Log logger;
protected HierarchicalConfiguration config;
@@ -67,29 +65,17 @@ public abstract class AbstractCompositeM
}
- /*
- * (non-Javadoc)
- * @see org.apache.james.mailetcontainer.api.CompositeMailProcessor#addListener(org.apache.james.mailetcontainer.api.CompositeMailProcessorListener)
- */
- public void addListener(CompositeMailProcessorListener listener) {
+ public void addListener(CompositeProcessorListener listener) {
listeners.add(listener);
}
- /*
- * (non-Javadoc)
- * @see org.apache.james.mailetcontainer.api.CompositeMailProcessor#getListeners()
- */
- public List<CompositeMailProcessorListener> getListeners() {
+ public List<CompositeProcessorListener> getListeners() {
return listeners;
}
- /*
- * (non-Javadoc)
- * @see org.apache.james.mailetcontainer.api.CompositeMailProcessor#removeListener(org.apache.james.mailetcontainer.api.CompositeMailProcessorListener)
- */
- public void removeListener(CompositeMailProcessorListener listener) {
+ public void removeListener(CompositeProcessorListener listener) {
listeners.remove(listener);
}
@@ -133,7 +119,7 @@ public abstract class AbstractCompositeM
} finally {
long end = System.currentTimeMillis() - start;
for (int i = 0; i < listeners.size(); i++) {
- CompositeMailProcessorListener listener = listeners.get(i);
+ CompositeProcessorListener listener = listeners.get(i);
listener.afterProcessor(processor, mail.getName(), end, ex);
}
@@ -143,9 +129,11 @@ public abstract class AbstractCompositeM
}
}
- /*
- * (non-Javadoc)
- * @see org.apache.james.transport.ProcessorList#getProcessor(java.lang.String)
+ /**
+ * Return a {@link MailProcessor} for a given name
+ *
+ * @param name
+ * @return processor
*/
public MailProcessor getProcessor(String name) {
return processors.get(name);
@@ -197,6 +185,10 @@ public abstract class AbstractCompositeM
final HierarchicalConfiguration processorConf = processorConfs.get(i);
String processorName = processorConf.getString("[@name]");
+ // if the "child" processor has no jmx config we just use the one of the composite
+ if (processorConf.containsKey("[@enableJmx]") == false) {
+ processorConf.addProperty("[@enableJmx]", enableJmx);
+ }
processors.put(processorName, createMailProcessor(processorName, processorConf));
}
@@ -228,4 +220,23 @@ public abstract class AbstractCompositeM
*/
protected abstract MailProcessor createMailProcessor(String name, HierarchicalConfiguration config) throws Exception;
+
+ /**
+ * A Listener which will get called after {@link CompositeProcessor#service(org.apache.mailet.Mail)} was called
+ *
+ */
+ public interface CompositeProcessorListener {
+
+ /**
+ * Get called after the processing via a {@link MailProcessor} was complete
+ *
+ * @param processor
+ * @param mailName
+ * @param processTime in ms
+ * @param e or null if no exception was thrown
+ */
+ public void afterProcessor(MailProcessor processor, String mailName, long processTime, MessagingException e);
+
+ }
+
}
Copied: james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractMailetProcessor.java (from r1051800, james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractMailetContainer.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractMailetProcessor.java?p2=james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractMailetProcessor.java&p1=james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractMailetContainer.java&r1=1051800&r2=1051885&rev=1051885&view=diff
==============================================================================
--- james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractMailetContainer.java (original)
+++ james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/AbstractMailetProcessor.java Wed Dec 22 13:11:50 2010
@@ -19,6 +19,7 @@
package org.apache.james.mailetcontainer.lib;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -35,13 +36,13 @@ import org.apache.commons.configuration.
import org.apache.commons.logging.Log;
import org.apache.james.lifecycle.api.Configurable;
import org.apache.james.lifecycle.api.LogEnabled;
-import org.apache.james.mailetcontainer.api.MailetContainer;
-import org.apache.james.mailetcontainer.api.MailetContainerListener;
+import org.apache.james.mailetcontainer.api.MailProcessor;
import org.apache.james.mailetcontainer.api.MailetLoader;
import org.apache.james.mailetcontainer.api.MatcherLoader;
import org.apache.james.mailetcontainer.lib.jmx.JMXMailetContainerListener;
import org.apache.james.mailetcontainer.lib.matchers.CompositeMatcher;
import org.apache.mailet.Mail;
+import org.apache.mailet.MailAddress;
import org.apache.mailet.Mailet;
import org.apache.mailet.MailetConfig;
import org.apache.mailet.MailetContext;
@@ -51,14 +52,14 @@ import org.apache.mailet.base.GenericMai
import org.apache.mailet.base.MatcherInverter;
/**
- * Abstract base class for {@link MailetContainer} implementations which simplify to implement your own implementation
+ * Abstract base class for {@link MailProcessor} implementations which want to process {@link Mail} via {@link Matcher} and {@link Mailet}
*
*/
-public abstract class AbstractMailetContainer implements MailetContainer, Configurable, LogEnabled{
+public abstract class AbstractMailetProcessor implements MailProcessor, Configurable, LogEnabled{
private MailetContext mailetContext;
private MatcherLoader matcherLoader;
- private List<MailetContainerListener> listeners = Collections.synchronizedList(new ArrayList<MailetContainerListener>());
+ private List<MailetProcessorListener> listeners = Collections.synchronizedList(new ArrayList<MailetProcessorListener>());
private String processorName;
private JMXMailetContainerListener jmxListener;
private boolean enableJmx = true;
@@ -161,9 +162,10 @@ public abstract class AbstractMailetCont
return processorName;
}
- /*
- * (non-Javadoc)
- * @see org.apache.james.mailetcontainer.api.MailetContainer#getMailets()
+ /**
+ * Return a unmodifiable {@link List} of the configured {@link Mailet}'s
+ *
+ * @return mailets
*/
public List<Mailet> getMailets() {
List<Mailet> mailets = new ArrayList<Mailet>();
@@ -173,9 +175,11 @@ public abstract class AbstractMailetCont
return Collections.unmodifiableList(mailets);
}
- /*
- * (non-Javadoc)
- * @see org.apache.james.mailetcontainer.api.MailetContainer#getMatchers()
+
+ /**
+ * Return a unmodifiable {@link List} of the configured {@link Matcher}'s
+ *
+ * @return matchers
*/
public List<Matcher> getMatchers() {
List<Matcher> matchers = new ArrayList<Matcher>();
@@ -186,28 +190,16 @@ public abstract class AbstractMailetCont
}
- /*
- * (non-Javadoc)
- * @see org.apache.james.mailetcontainer.api.MailetContainer#addListener(org.apache.james.mailetcontainer.api.MailetContainerListener)
- */
- public void addListener(MailetContainerListener listener) {
+ public void addListener(MailetProcessorListener listener) {
listeners.add(listener);
}
- /*
- * (non-Javadoc)
- * @see org.apache.james.mailetcontainer.api.MailetContainer#removeListener(org.apache.james.mailetcontainer.api.MailetContainerListener)
- */
- public void removeListener(MailetContainerListener listener) {
+ public void removeListener(MailetProcessorListener listener) {
listeners.remove(listener);
}
- /*
- * (non-Javadoc)
- * @see org.apache.james.mailetcontainer.api.MailetContainer#getListeners()
- */
- public List<MailetContainerListener> getListeners() {
+ public List<MailetProcessorListener> getListeners() {
return listeners;
}
@@ -404,7 +396,7 @@ public abstract class AbstractMailetCont
}
/**
- * Setup the routing for the configured {@link MatcherMailetPair}'s for this {@link MailetContainer}
+ * Setup the routing for the configured {@link MatcherMailetPair}'s for this {@link CamelProcessor}
*
*
*/
@@ -458,5 +450,39 @@ public abstract class AbstractMailetCont
}
}
+ /**
+ * A Listener which will get notified after {@link Mailet#service(org.apache.mailet.Mail)} and {@link Matcher#match(org.apache.mailet.Mail)} methods are called from
+ * the container
+ *
+ *
+ */
+ public interface MailetProcessorListener {
+
+ /**
+ * Get called after each {@link Mailet} call was complete
+ *
+ * @param m
+ * @param mailName
+ * @param state
+ * @param processTime in ms
+ * @param e or null if no {@link MessagingException} was thrown
+ */
+ public void afterMailet( Mailet m, String mailName, String state, long processTime, MessagingException e);
+
+ /**
+ * Get called after each {@link Matcher} call was complete
+
+ * @param m
+ * @param mailName
+ * @param recipients
+ * @param matches
+ * @param processTime in ms
+ * @param e or null if no {@link MessagingException} was thrown
+ *
+ */
+ public void afterMatcher( Matcher m, String mailName, Collection<MailAddress> recipients, Collection<MailAddress> matches, long processTime, MessagingException e);
+
+ }
+
}
Modified: james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/JMXCompositeMailProcessorListener.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/JMXCompositeMailProcessorListener.java?rev=1051885&r1=1051884&r2=1051885&view=diff
==============================================================================
--- james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/JMXCompositeMailProcessorListener.java (original)
+++ james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/JMXCompositeMailProcessorListener.java Wed Dec 22 13:11:50 2010
@@ -32,21 +32,21 @@ import javax.management.ObjectName;
import org.apache.james.lifecycle.api.Disposable;
import org.apache.james.mailetcontainer.api.MailProcessor;
-import org.apache.james.mailetcontainer.api.CompositeMailProcessor;
-import org.apache.james.mailetcontainer.api.CompositeMailProcessorListener;
+import org.apache.james.mailetcontainer.lib.AbstractCompositeProcessor;
+import org.apache.james.mailetcontainer.lib.AbstractCompositeProcessor.CompositeProcessorListener;
/**
- * {@link CompositeMailProcessorListener} implementation which register MBeans for its child {@link MailProcessor}
+ * {@link CompositeProcessorListener} implementation which register MBeans for its child {@link MailProcessor}
* and keep track of the stats
*
*/
-public class JMXCompositeMailProcessorListener implements CompositeMailProcessorListener, Disposable{
+public class JMXCompositeMailProcessorListener implements CompositeProcessorListener, Disposable{
- private CompositeMailProcessor mList;
+ private AbstractCompositeProcessor mList;
private MBeanServer mbeanserver;
private List<ObjectName> mbeans = new ArrayList<ObjectName>();
private Map<MailProcessor, MailProcessorManagement> mMap = new HashMap<MailProcessor, MailProcessorManagement>();
- public JMXCompositeMailProcessorListener(CompositeMailProcessor mList) throws MalformedObjectNameException, JMException {
+ public JMXCompositeMailProcessorListener(AbstractCompositeProcessor mList) throws MalformedObjectNameException, JMException {
this.mList = mList;
mbeanserver = ManagementFactory.getPlatformMBeanServer();
Modified: james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/JMXMailetContainerListener.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/JMXMailetContainerListener.java?rev=1051885&r1=1051884&r2=1051885&view=diff
==============================================================================
--- james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/JMXMailetContainerListener.java (original)
+++ james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/JMXMailetContainerListener.java Wed Dec 22 13:11:50 2010
@@ -33,22 +33,22 @@ import javax.management.MalformedObjectN
import javax.management.ObjectName;
import org.apache.james.lifecycle.api.Disposable;
-import org.apache.james.mailetcontainer.api.MailetContainer;
-import org.apache.james.mailetcontainer.api.MailetContainerListener;
+import org.apache.james.mailetcontainer.lib.AbstractMailetProcessor;
+import org.apache.james.mailetcontainer.lib.AbstractMailetProcessor.MailetProcessorListener;
import org.apache.james.mailetcontainer.lib.matchers.CompositeMatcher;
import org.apache.mailet.MailAddress;
import org.apache.mailet.Mailet;
import org.apache.mailet.Matcher;
/**
- * {@link MailetContainerListener} implementation which register MBean's for all the contained
+ * {@link MailetProcessorListener} implementation which register MBean's for all the contained
* {@link Mailet} and {@link Matcher} and keep track of the stats
*
*
*/
-public class JMXMailetContainerListener implements MailetContainerListener, Disposable{
+public class JMXMailetContainerListener implements MailetProcessorListener, Disposable{
- private MailetContainer container;
+ private AbstractMailetProcessor processor;
private MBeanServer mbeanserver;
private List<ObjectName> mbeans = new ArrayList<ObjectName>();
private Map<Mailet, MailetManagement> mailetMap = new HashMap<Mailet, MailetManagement>();
@@ -56,8 +56,8 @@ public class JMXMailetContainerListener
private String name;
- public JMXMailetContainerListener(String name, MailetContainer container) throws MalformedObjectNameException, JMException {
- this.container = container;
+ public JMXMailetContainerListener(String name, AbstractMailetProcessor processor) throws MalformedObjectNameException, JMException {
+ this.processor = processor;
this.name = name;
mbeanserver = ManagementFactory.getPlatformMBeanServer();
@@ -102,8 +102,8 @@ public class JMXMailetContainerListener
private void registerMBeans() throws MalformedObjectNameException, JMException {
String baseObjectName = "org.apache.james:type=component,name=processor,processor=" + name;
- registerMailets(baseObjectName, container.getMailets().iterator());
- registerMatchers(baseObjectName, container.getMatchers().iterator(), 0);
+ registerMailets(baseObjectName, processor.getMailets().iterator());
+ registerMatchers(baseObjectName, processor.getMatchers().iterator(), 0);
}
Modified: james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/MailProcessorManagement.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/MailProcessorManagement.java?rev=1051885&r1=1051884&r2=1051885&view=diff
==============================================================================
--- james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/MailProcessorManagement.java (original)
+++ james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/jmx/MailProcessorManagement.java Wed Dec 22 13:11:50 2010
@@ -25,11 +25,10 @@ import javax.management.NotCompliantMBea
import javax.management.StandardMBean;
import org.apache.james.mailetcontainer.api.MailProcessor;
-import org.apache.james.mailetcontainer.api.MailetContainer;
import org.apache.james.mailetcontainer.api.jmx.MailProcessorManagementMBean;
/**
- * Wrapper which helps to expose JMX statistics for {@link MailProcessor} and {@link MailetContainer} implementations
+ * Wrapper which helps to expose JMX statistics for {@link MailProcessor} and {@link CamelProcessor} implementations
*
*
*/
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org