Index: /src/java/org/apache/james/transport/JamesMailetLoader.java =================================================================== --- /src/java/org/apache/james/transport/JamesMailetLoader.java (revision 449424) +++ /src/java/org/apache/james/transport/JamesMailetLoader.java (working copy) @@ -51,7 +51,7 @@ MailetConfigImpl configImpl = new MailetConfigImpl(); configImpl.setMailetName(mailetName); configImpl.setConfiguration(configuration); - configImpl.setMailetContext(mailetContext); + configImpl.setMailetContext(new MailetContextWrapper(mailetContext, getLogger().getChildLogger(mailetName))); Mailet mailet = (Mailet) Thread.currentThread().getContextClassLoader().loadClass(className).newInstance(); mailet.init(configImpl); return mailet; Index: /src/java/org/apache/james/transport/Loader.java =================================================================== --- /src/java/org/apache/james/transport/Loader.java (revision 449424) +++ /src/java/org/apache/james/transport/Loader.java (working copy) @@ -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,105 @@ */ 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; + } + + 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); + } + } + + } Index: /src/java/org/apache/james/transport/JamesMatcherLoader.java =================================================================== --- /src/java/org/apache/james/transport/JamesMatcherLoader.java (revision 449424) +++ /src/java/org/apache/james/transport/JamesMatcherLoader.java (working copy) @@ -57,7 +57,7 @@ MatcherConfigImpl configImpl = new MatcherConfigImpl(); configImpl.setMatcherName(matchName); configImpl.setCondition(condition); - configImpl.setMailetContext(mailetContext); + configImpl.setMailetContext(new MailetContextWrapper(mailetContext, getLogger().getChildLogger(matchName))); Matcher matcher = (Matcher) Thread.currentThread().getContextClassLoader().loadClass(className).newInstance(); matcher.init(configImpl); return matcher;