public void initialize() throws Exception {
getLogger().info("JamesSpoolManager init...");
spool = (SpoolRepository) compMgr.lookup(SpoolRepository.ROLE);
MailetLoader mailetLoader
= (MailetLoader) compMgr.lookup(MailetLoader.ROLE);
MatcherLoader matchLoader
= (MatcherLoader) compMgr.lookup(MatcherLoader.ROLE);
//A processor is a Collection of
processors = new HashMap();
final Configuration[] processorConfs = conf.getChildren( "processor" );
for ( int i = 0; i < processorConfs.length; i++ )
{
Configuration processorConf = processorConfs[i];
String processorName = processorConf.getAttribute("name");
try {
LinearProcessor processor = new LinearProcessor();
setupLogger(processor, processorName);
processor.setSpool(spool);
processor.initialize();
processors.put(processorName, processor);
final Configuration[] mailetConfs
= processorConf.getChildren( "mailet" );
// Loop through the mailet configuration, load
// all of the matcher and mailets, and add
// them to the processor.
for ( int j = 0; j < mailetConfs.length; j++ )
{
Configuration c = mailetConfs[j];
String mailetClassName = c.getAttribute("class");
String matcherName = c.getAttribute("match");
Mailet mailet = null;
Matcher matcher = null;
try {
matcher = matchLoader.getMatcher(matcherName);
//The matcher itself should log that it's been inited.
if (getLogger().isInfoEnabled()) {
StringBuffer infoBuffer =
new StringBuffer(64)
.append("Matcher ")
.append(matcherName)
.append(" instantiated.");
getLogger().info(infoBuffer.toString());
}
} catch (MessagingException ex) {
// **** Do better job printing out exception
if (getLogger().isErrorEnabled()) {
StringBuffer errorBuffer =
new StringBuffer(256)
.append("Unable to init matcher ")
.append(matcherName)
.append(": ")
.append(ex.toString());
getLogger().error( errorBuffer.toString(), ex );
if (ex.getNextException() != null) {
getLogger().error( "Caused by nested exception: ", ex.getNextException());
}
}
System.err.println("Unable to init matcher " + matcherName);
System.err.println("Check spool manager logs for more details.");
//System.exit(1);
throw ex;
}
try {
mailet = mailetLoader.getMailet(mailetClassName, c);
if (getLogger().isInfoEnabled()) {
StringBuffer infoBuffer =
new StringBuffer(64)
.append("Mailet ")
.append(mailetClassName)