--- /src/java/org/apache/james/transport/Loader.java 2006-09-25 03:34:57.000000000 +0200 +++ /src/java/org/apache/james/transport/Loader.java 2006-09-25 03:36:02.000000000 +0200 @@ -20,6 +20,8 @@ package org.apache.james.transport; import java.io.File; +import java.util.Collection; +import java.util.Iterator; import java.util.Vector; import org.apache.avalon.framework.activity.Initializable; @@ -30,12 +32,18 @@ import org.apache.avalon.framework.context.ContextException; import org.apache.avalon.framework.context.Contextualizable; import org.apache.avalon.framework.logger.AbstractLogEnabled; +import org.apache.avalon.framework.logger.Logger; import org.apache.avalon.framework.service.DefaultServiceManager; import org.apache.avalon.framework.service.ServiceException; import org.apache.avalon.framework.service.ServiceManager; import org.apache.avalon.framework.service.Serviceable; +import org.apache.mailet.Mail; +import org.apache.mailet.MailAddress; import org.apache.mailet.MailetContext; +import javax.mail.MessagingException; +import javax.mail.internet.MimeMessage; + /** * * $Id$ @@ -119,4 +127,106 @@ */ public abstract void configure(Configuration arg0) throws ConfigurationException; + /** + * Wrapper fot a MailetContext that simply override the used logger. + */ + protected final static class MailetContextWrapper implements MailetContext { + private MailetContext mailetContext; + private Logger logger; + + public MailetContextWrapper(MailetContext mailetContext, Logger logger) { + this.mailetContext = mailetContext; + this.logger = logger; + } + + public void bounce(Mail mail, String message) throws MessagingException { + mailetContext.bounce(mail, message); + } + + public void bounce(Mail mail, String message, MailAddress bouncer) throws MessagingException { + mailetContext.bounce(mail, message, bouncer); + } + + public Object getAttribute(String name) { + return mailetContext.getAttribute(name); + } + + public Iterator getAttributeNames() { + return mailetContext.getAttributeNames(); + } + + public Collection getMailServers(String host) { + return mailetContext.getMailServers(host); + } + + public int getMajorVersion() { + return mailetContext.getMajorVersion(); + } + + public int getMinorVersion() { + return mailetContext.getMinorVersion(); + } + + public MailAddress getPostmaster() { + return mailetContext.getPostmaster(); + } + + public Iterator getSMTPHostAddresses(String domainName) { + return mailetContext.getSMTPHostAddresses(domainName); + } + + public String getServerInfo() { + return mailetContext.getServerInfo(); + } + + public boolean isLocalEmail(MailAddress mailAddress) { + return mailetContext.isLocalEmail(mailAddress); + } + + public boolean isLocalServer(String serverName) { + return mailetContext.isLocalServer(serverName); + } + + public boolean isLocalUser(String userAccount) { + return mailetContext.isLocalUser(userAccount); + } + + public void log(String message) { + logger.info(message); + } + + public void log(String message, Throwable t) { + logger.info(message, t); + } + + public void removeAttribute(String name) { + mailetContext.removeAttribute(name); + } + + public void sendMail(MimeMessage msg) throws MessagingException { + mailetContext.sendMail(msg); + } + + public void sendMail(MailAddress sender, Collection recipients, MimeMessage msg) throws MessagingException { + mailetContext.sendMail(sender, recipients, msg); + } + + public void sendMail(MailAddress sender, Collection recipients, MimeMessage msg, String state) throws MessagingException { + mailetContext.sendMail(sender, recipients, msg, state); + } + + public void sendMail(Mail mail) throws MessagingException { + mailetContext.sendMail(mail); + } + + public void setAttribute(String name, Object object) { + mailetContext.setAttribute(name, object); + } + + public void storeMail(MailAddress sender, MailAddress recipient, MimeMessage msg) throws MessagingException { + mailetContext.storeMail(sender, recipient, msg); + } + } + + } --- /src/java/org/apache/james/transport/JamesMailetLoader.java 2006-09-25 03:35:17.000000000 +0200 +++ /src/java/org/apache/james/transport/JamesMailetLoader.java 2006-09-25 03:38:47.000000000 +0200 @@ -48,11 +48,11 @@ for (int i = 0; i < packages.size(); i++) { String className = (String) packages.elementAt(i) + mailetName; try { + Mailet mailet = (Mailet) Thread.currentThread().getContextClassLoader().loadClass(className).newInstance(); MailetConfigImpl configImpl = new MailetConfigImpl(); configImpl.setMailetName(mailetName); configImpl.setConfiguration(configuration); - configImpl.setMailetContext(mailetContext); - Mailet mailet = (Mailet) Thread.currentThread().getContextClassLoader().loadClass(className).newInstance(); + configImpl.setMailetContext(new MailetContextWrapper(mailetContext, getLogger().getChildLogger(mailetName))); mailet.init(configImpl); return mailet; } catch (ClassNotFoundException cnfe) { --- /src/java/org/apache/james/transport/JamesMatcherLoader.java 2006-09-25 03:35:04.000000000 +0200 +++ /src/java/org/apache/james/transport/JamesMatcherLoader.java 2006-09-25 03:38:33.000000000 +0200 @@ -54,11 +54,11 @@ for (i = 0; i < packages.size(); i++) { String className = (String) packages.elementAt(i) + matchName; try { + Matcher matcher = (Matcher) Thread.currentThread().getContextClassLoader().loadClass(className).newInstance(); MatcherConfigImpl configImpl = new MatcherConfigImpl(); configImpl.setMatcherName(matchName); configImpl.setCondition(condition); - configImpl.setMailetContext(mailetContext); - Matcher matcher = (Matcher) Thread.currentThread().getContextClassLoader().loadClass(className).newInstance(); + configImpl.setMailetContext(new MailetContextWrapper(mailetContext, getLogger().getChildLogger(matchName))); matcher.init(configImpl); return matcher; } catch (ClassNotFoundException cnfe) {