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 rd...@apache.org on 2008/12/12 12:02:02 UTC

svn commit: r725962 - in /james/server/trunk: phoenix-deployment/ phoenix-deployment/src/conf/ phoenix-deployment/src/java/org/apache/james/phoenix/ spoolmanager-function/src/main/java/org/apache/james/api/ spoolmanager-function/src/main/java/org/apach...

Author: rdonkin
Date: Fri Dec 12 03:02:01 2008
New Revision: 725962

URL: http://svn.apache.org/viewvc?rev=725962&view=rev
Log:
Basic support for injecting @Resource setters. Only phoenix block names are supported.

Added:
    james/server/trunk/phoenix-deployment/src/java/org/apache/james/phoenix/PhoenixLoader.java
    james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/api/
    james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/api/kernel/
    james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/api/kernel/ServiceLocator.java
Modified:
    james/server/trunk/phoenix-deployment/build.xml
    james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml
    james/server/trunk/phoenix-deployment/src/conf/james-config.xml
    james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/JamesMailetLoader.java
    james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/JamesSpoolManager.java
    james/server/trunk/spring-deployment/src/main/config/james/james-config.xml

Modified: james/server/trunk/phoenix-deployment/build.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/build.xml?rev=725962&r1=725961&r2=725962&view=diff
==============================================================================
--- james/server/trunk/phoenix-deployment/build.xml (original)
+++ james/server/trunk/phoenix-deployment/build.xml Fri Dec 12 03:02:01 2008
@@ -127,6 +127,9 @@
         <fileset refid="james.jars"/>   
         <pathelement path="${java.class.path}" />
         <pathelement path="${build.classes}" />
+        <fileset dir='../phoenix-deployment/phoenix-bin/lib'>
+            <include name='phoenix-client.jar'/>   
+        </fileset>   
     </path>
 
     <path id="tools.class.path">

Modified: james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml?rev=725962&r1=725961&r2=725962&view=diff
==============================================================================
--- james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml (original)
+++ james/server/trunk/phoenix-deployment/src/conf/james-assembly.xml Fri Dec 12 03:02:01 2008
@@ -54,6 +54,7 @@
              role="org.apache.avalon.cornerstone.services.scheduler.TimeScheduler"/>
     <provide name="database-connections"
              role="org.apache.avalon.cornerstone.services.datasources.DataSourceSelector" />        
+    <proxy disable='true'/>
   </block>
    
   <!-- The James Spool Manager block  -->
@@ -61,16 +62,19 @@
     <provide name="spoolrepository" role="org.apache.james.services.SpoolRepository"/>
     <provide name="matcherpackages" role="org.apache.james.transport.MatcherLoader"/>
     <provide name="mailetpackages" role="org.apache.james.transport.MailetLoader"/>
+    <proxy disable='true'/>
   </block>
 
   <block name="matcherpackages" class="org.apache.james.transport.JamesMatcherLoader" >
     <provide name="James" role="org.apache.mailet.MailetContext"/>
     <provide name="filesystem" role="org.apache.james.services.FileSystem" />
+    <proxy disable='true'/>
   </block>
 
   <block name="mailetpackages" class="org.apache.james.transport.JamesMailetLoader" >
     <provide name="James" role="org.apache.mailet.MailetContext"/>
     <provide name="filesystem" role="org.apache.james.services.FileSystem" />
+    <proxy disable='true'/>
   </block>
 
   <block name="dnsserver" class="org.apache.james.dnsserver.DNSServer" />
@@ -78,16 +82,19 @@
   <!-- The Spool Management block  -->
   <block name="spoolmanagement" class="org.apache.james.management.impl.SpoolManagement" >
       <provide name="mailstore" role="org.apache.avalon.cornerstone.services.store.Store"/>
+      <proxy disable='true'/>
   </block>
   
   <block name="processormanagement" class="org.apache.james.management.impl.ProcessorManagement" >
       <provide name="spoolmanager" role="org.apache.james.services.SpoolManager"/>
+      <proxy disable='true'/>
   </block>
 
   <block name="bayesiananalyzermanagement" class="org.apache.james.management.impl.BayesianAnalyzerManagement" >
       <provide name="database-connections"
              role="org.apache.avalon.cornerstone.services.datasources.DataSourceSelector" />
     <provide name="filesystem" role="org.apache.james.services.FileSystem" />
+    <proxy disable='true'/>
   </block>
 
   <block name="remotemanager" class="org.apache.james.remotemanager.RemoteManager" >
@@ -109,12 +116,14 @@
     <provide name="processormanagement" role="org.apache.james.management.ProcessorManagementService"/>
     <provide name="virtualusertablemanagement" role="org.apache.james.api.vut.management.VirtualUserTableManagementService"/>
     <provide name="domainlistmanagement" role="org.apache.james.management.DomainListManagementService"/>
+    <proxy disable='true'/>
 </block>
 
   <!-- The User Management block  -->
   <block name="usermanagement" class="org.apache.james.impl.user.UserManagement" >
     <provide name="localusersrepository" role="org.apache.james.api.user.UsersRepository"/>
     <provide name="users-store" role="org.apache.james.api.user.UsersStore"/>
+    <proxy disable='true'/>
   </block>
         
   <!-- POP3 Server -->
@@ -128,6 +137,7 @@
     <provide name="thread-manager"
              role="org.apache.avalon.cornerstone.services.threads.ThreadManager" />
     <provide name="dnsserver" role="org.apache.james.api.dnsservice.DNSService"/>
+    <proxy disable='true'/>
   </block>
 
   <!-- SMTP Server -->
@@ -147,6 +157,7 @@
     <provide name="filesystem" role="org.apache.james.services.FileSystem" />
     <provide name="defaultvirtualusertable"
              role="org.apache.james.api.vut.VirtualUserTable" />
+    <proxy disable='true'/>
   </block>
 
   <!-- NNTP Server -->
@@ -162,11 +173,13 @@
              role="org.apache.avalon.cornerstone.services.threads.ThreadManager" />
     <provide name="dnsserver" role="org.apache.james.api.dnsservice.DNSService"/>
     <provide name="James" role="org.apache.james.services.MailServer"/>
+    <proxy disable='true'/>
   </block>
 
   <!-- NNTP Repository -->
   <block name="nntp-repository" class="org.apache.james.nntpserver.repository.NNTPRepositoryImpl">
     <provide name="filesystem" role="org.apache.james.services.FileSystem" />
+    <proxy disable='true'/>
   </block>
 
   <!-- FetchMail Service -->
@@ -176,6 +189,7 @@
     <provide name="James" role="org.apache.james.services.MailServer"/>      
     <provide name="localusersrepository" role="org.apache.james.api.user.UsersRepository"/>
     <provide name="dnsserver" role="org.apache.james.api.dnsservice.DNSService"/>
+    <proxy disable='true'/>
   </block>
   
   <!-- JMS Service 
@@ -191,12 +205,14 @@
     <provide name="database-connections"
              role="org.apache.avalon.cornerstone.services.datasources.DataSourceSelector" />
     <provide name="filesystem" role="org.apache.james.services.FileSystem" />     
+    <proxy disable='true'/>
   </block>  
         
   <!-- The main SpoolRepository -->
   <block name="spoolrepository" class="org.apache.james.mailrepository.MailStoreSpoolRepository" >
     <provide name="mailstore"
              role="org.apache.avalon.cornerstone.services.store.Store" />
+    <proxy disable='true'/>
   </block>
 
   <!-- The User Storage block -->
@@ -207,6 +223,7 @@
     <provide name="database-connections"
              role="org.apache.avalon.cornerstone.services.datasources.DataSourceSelector" />
     <provide name="filesystem" role="org.apache.james.services.FileSystem" />
+    <proxy disable='true'/>
   </block>
 
   <!-- This is needed to link the smtpserver to the local user repository -->
@@ -217,6 +234,7 @@
   <block name="localusersrepository" class="org.apache.james.impl.jamesuser.LocalJamesUsersRepository">
     <provide name="users-store"
              role="org.apache.james.api.user.UsersStore"/>
+    <proxy disable='true'/>
   </block>
 
   <!-- The context FileSystem implementation -->
@@ -227,6 +245,7 @@
   <block name="virtualusertablemanagement" class="org.apache.james.impl.vut.VirtualUserTableManagement" >
     <provide name="virtualusertable-store" role="org.apache.james.api.vut.VirtualUserTableStore"/>
     <provide name="defaultvirtualusertable" role="org.apache.james.api.vut.management.VirtualUserTableManagement" />
+    <proxy disable='true'/>
   </block>
   
   <!-- VirtualUserTable Store -->
@@ -235,11 +254,13 @@
              role="org.apache.avalon.cornerstone.services.datasources.DataSourceSelector"/>
     <provide name="filesystem" role="org.apache.james.services.FileSystem"/>
     <provide name="dnsserver" role="org.apache.james.api.dnsservice.DNSService"/>
+    <proxy disable='true'/>
   </block>
   
   <block name="defaultvirtualusertable" class="org.apache.james.impl.vut.DefaultVirtualUserTable">
     <provide name="virtualusertable-store"
              role="org.apache.james.api.vut.VirtualUserTableStore"/>
+    <proxy disable='true'/>
   </block>
   
   
@@ -247,6 +268,7 @@
   <!-- The context domainlist implementation -->
   <block name="domainlist" class="org.apache.james.domain.XMLDomainList">
       <provide name="dnsserver" role="org.apache.james.api.dnsservice.DNSService"/>
+      <proxy disable='true'/>
   </block>
   
   <!--  JDBC implementation of the domainlist service-->
@@ -289,6 +311,7 @@
     <provide name="dnsserver" role="org.apache.james.api.dnsservice.DNSService"/>
     <provide name="James" role="org.apache.james.services.MailServer"/>
     <provide name="filesystem" role="org.apache.james.services.FileSystem" />
+    <proxy disable='true'/>
   </block>
   
   <!-- #################################################################### -->
@@ -296,6 +319,7 @@
   <block name="domainlistmanagement" class="org.apache.james.management.impl.DomainListManagement">
     <provide name="domainlist"
              role="org.apache.james.api.domainlist.DomainList"/>
+    <proxy disable='true'/>
   </block>
   
   <!-- Configuration for Cornerstone Blocks only after here
@@ -307,25 +331,33 @@
          class="org.apache.james.util.connection.SimpleConnectionManager" >
     <provide name="thread-manager"
              role="org.apache.avalon.cornerstone.services.threads.ThreadManager" />
+    <proxy disable='true'/>
   </block>
 
   <!-- The Socket Manager block -->
   <block name="sockets"
-         class="org.apache.avalon.cornerstone.blocks.sockets.DefaultSocketManager"/>
+         class="org.apache.avalon.cornerstone.blocks.sockets.DefaultSocketManager">
+   <proxy disable='true'/>
+  </block>
 
   <!-- The Time Scheduler block -->
   <block name="scheduler"
          class="org.apache.avalon.cornerstone.blocks.scheduler.DefaultTimeScheduler" >
     <provide name="thread-manager"
              role="org.apache.avalon.cornerstone.services.threads.ThreadManager" />
+    <proxy disable='true'/>
   </block>
 
   <!-- The DataSourceSelector block -->
   <block name="database-connections"
-         class="org.apache.avalon.cornerstone.blocks.datasources.DefaultDataSourceSelector" />
+         class="org.apache.avalon.cornerstone.blocks.datasources.DefaultDataSourceSelector" >
+         <proxy disable='true'/>
+  </block>
 
   <!-- The ThreadManager block -->
   <block name="thread-manager"
-         class="org.apache.avalon.cornerstone.blocks.threads.DefaultThreadManager" />
+         class="org.apache.avalon.cornerstone.blocks.threads.DefaultThreadManager" >
+         <proxy disable='true'/>
+  </block>
 
 </assembly>

Modified: james/server/trunk/phoenix-deployment/src/conf/james-config.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/conf/james-config.xml?rev=725962&r1=725961&r2=725962&view=diff
==============================================================================
--- james/server/trunk/phoenix-deployment/src/conf/james-config.xml (original)
+++ james/server/trunk/phoenix-deployment/src/conf/james-config.xml Fri Dec 12 03:02:01 2008
@@ -153,10 +153,14 @@
    <!-- Set the Java packages from which to load mailets and matchers -->
    <mailetpackages>
       <mailetpackage>org.apache.james.transport.mailets</mailetpackage>
+      <!-- Cryptography Mailets -->
       <mailetpackage>org.apache.james.transport.mailets.smime</mailetpackage>
+      <!-- Sieve Mail Scripting -->
+      <mailetpackage>org.apache.james.imapserver.sieve</mailetpackage>      
    </mailetpackages>
    <matcherpackages>
       <matcherpackage>org.apache.james.transport.matchers</matcherpackage>
+      <!-- Crytographic mailets -->
       <matcherpackage>org.apache.james.transport.matchers.smime</matcherpackage>
    </matcherpackages>
 
@@ -343,6 +347,10 @@
             </mapping>
          </mailet>
          -->
+         
+        <!-- Deliver To IMAP mailboxes, applying a Sieve script if the user has one
+        <mailet match="All" class="SieveMailet"/>
+        -->
 
          <!-- Anti-spam processing -->
          <!-- The following two entries avoid double anti-spam analysis -->

Added: james/server/trunk/phoenix-deployment/src/java/org/apache/james/phoenix/PhoenixLoader.java
URL: http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/java/org/apache/james/phoenix/PhoenixLoader.java?rev=725962&view=auto
==============================================================================
--- james/server/trunk/phoenix-deployment/src/java/org/apache/james/phoenix/PhoenixLoader.java (added)
+++ james/server/trunk/phoenix-deployment/src/java/org/apache/james/phoenix/PhoenixLoader.java Fri Dec 12 03:02:01 2008
@@ -0,0 +1,139 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.phoenix;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.avalon.phoenix.ApplicationEvent;
+import org.apache.avalon.phoenix.ApplicationListener;
+import org.apache.avalon.phoenix.BlockEvent;
+import org.apache.james.api.kernel.ServiceLocator;
+
+public class PhoenixLoader implements ServiceLocator, ApplicationListener, LogEnabled {
+
+    private Logger logger;
+    
+    private final Map<String, Object> resources;
+
+    public PhoenixLoader() {
+        resources = new HashMap<String, Object>();
+        resources.put("org.apache.james.ServiceLocator", this);
+    }
+    
+    public Object get(String name) {
+        return resources.get(name);
+    }
+
+    public void applicationFailure(Exception exception) {
+        
+    }
+
+    /**
+     * Indicates application has started.
+     * This hook initialises all annotated resources.
+     * This ensure that all services have been loaded 
+     * before initilisation any.
+     */
+    public void applicationStarted() {
+        for (Object resource : resources.values()) {
+            Method[] methods = resource.getClass().getMethods();
+            for (Method method : methods) {
+                Resource resourceAnnotation = method.getAnnotation(Resource.class);
+                if (resourceAnnotation != null) {
+                    final String name = resourceAnnotation.name();
+                    final Object service = get(name);
+                    if (resource == null) {
+                        if (logger.isWarnEnabled()) {
+                            logger.warn("Unknown service: "  + name);
+                        }
+                   } else {
+                        try {
+                            Object[] args = {service};
+                            method.invoke(resource, args);
+                        } catch (IllegalAccessException e) {
+                            throw new RuntimeException("Injection failed", e);
+                        } catch (IllegalArgumentException e) {
+                            throw new RuntimeException("Injection failed", e);
+                        } catch (InvocationTargetException e) {
+                            throw new RuntimeException("Injection failed", e);
+                        }
+                    }
+                }
+            }
+        }
+        
+        try {
+            for (Object object : resources.values()) {
+                Method[] methods = object.getClass().getMethods();
+                for (Method method : methods) {
+                    PostConstruct postConstructAnnotation = method.getAnnotation(PostConstruct.class);
+                    if (postConstructAnnotation != null) {
+                        Object[] args = {};
+                        method.invoke(object, args);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("Initialisation failed", e);
+        }
+    }
+
+    public void applicationStarting(ApplicationEvent event) throws Exception {
+        
+    }
+
+    public void applicationStopped() {
+        
+    }
+
+    public void applicationStopping() {
+        
+    }
+
+    /**
+     * Adds service.
+     */
+    public void blockAdded(BlockEvent event) {
+        final Object resource = event.getObject();
+        final String name = event.getName();
+        resources.put(name, resource);
+    }
+
+    /**
+     * Removes service.
+     * Existing references are maintained.
+     */
+    public void blockRemoved(BlockEvent event) {
+        final String name = event.getName();
+        resources.remove(name);
+    }
+
+    public void enableLogging(Logger logger) {
+        this.logger = logger;
+    }
+}

Added: james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/api/kernel/ServiceLocator.java
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/api/kernel/ServiceLocator.java?rev=725962&view=auto
==============================================================================
--- james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/api/kernel/ServiceLocator.java (added)
+++ james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/api/kernel/ServiceLocator.java Fri Dec 12 03:02:01 2008
@@ -0,0 +1,34 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.api.kernel;
+
+/**
+ * Locates services.
+ */
+public interface ServiceLocator {
+    
+    /**
+     * Gets a service by name.
+     * @param name not null
+     * @return the service, 
+     * or null when the service cannot be located
+     */
+    public Object get(String name);
+}

Modified: james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/JamesMailetLoader.java
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/JamesMailetLoader.java?rev=725962&r1=725961&r2=725962&view=diff
==============================================================================
--- james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/JamesMailetLoader.java (original)
+++ james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/JamesMailetLoader.java Fri Dec 12 03:02:01 2008
@@ -19,10 +19,15 @@
 
 
 package org.apache.james.transport;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import javax.annotation.Resource;
 import javax.mail.MessagingException;
 
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.james.api.kernel.ServiceLocator;
 import org.apache.mailet.Mailet;
 import org.apache.mailet.MailetException;
 /**
@@ -30,6 +35,26 @@
  *
  */
 public class JamesMailetLoader extends Loader implements MailetLoader {
+    
+    private ServiceLocator serviceLocator;
+     
+    /**
+     * Gets the service locator.
+     * @return the serviceLocator, not null after initialisation
+     */
+    public final ServiceLocator getServiceLocator() {
+        return serviceLocator;
+    }
+
+    /**
+     * Sets the service locator.
+     * @param serviceLocator the serviceLocator to set
+     */
+    @Resource(name="org.apache.james.ServiceLocator")
+    public final void setServiceLocator(ServiceLocator serviceLocator) {
+        this.serviceLocator = serviceLocator;
+    }
+
     /**
      * @see org.apache.avalon.framework.configuration.Configurable#configure(Configuration)
      */
@@ -51,6 +76,9 @@
                     configImpl.setMailetName(mailetName);
                     configImpl.setConfiguration(configuration);
                     configImpl.setMailetContext(new MailetContextWrapper(mailetContext, getLogger().getChildLogger(mailetName))); 
+
+                    injectServices(mailet);
+
                     mailet.init(configImpl);
                     return mailet;
                 } catch (ClassNotFoundException cnfe) {
@@ -73,4 +101,28 @@
             throw new MailetException(exceptionBuffer.toString(), e);
         }
     }
+
+    private void injectServices(Mailet mailet) throws IllegalArgumentException, IllegalAccessException, 
+                                                        InvocationTargetException {
+        if (serviceLocator == null) {
+           getLogger().warn("Service locator not set. Cannot load services.");
+        } else {
+            Method[] methods = mailet.getClass().getMethods();
+            for (Method method : methods) {
+                Resource resourceAnnotation = method.getAnnotation(Resource.class);
+                if (resourceAnnotation != null) {
+                    final String name = resourceAnnotation.name();
+                    final Object resource = serviceLocator.get(name);
+                    if (resource == null) {
+                        if (getLogger().isWarnEnabled()) {
+                            getLogger().warn("Unknown service: "  + name);
+                        }
+                   } else {
+                        Object[] args = {resource};
+                        method.invoke(mailet, args);
+                    }
+                }
+            }
+        }
+    }
 }

Modified: james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/JamesSpoolManager.java
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/JamesSpoolManager.java?rev=725962&r1=725961&r2=725962&view=diff
==============================================================================
--- james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/JamesSpoolManager.java (original)
+++ james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/JamesSpoolManager.java Fri Dec 12 03:02:01 2008
@@ -40,6 +40,8 @@
 import java.util.List;
 import java.util.ArrayList;
 
+import javax.annotation.PostConstruct;
+
 /**
  * Manages the mail spool.  This class is responsible for retrieving
  * messages from the spool, directing messages to the appropriate
@@ -50,7 +52,7 @@
  */
 public class JamesSpoolManager
     extends AbstractLogEnabled
-    implements Serviceable, Configurable, Initializable, Runnable, Disposable, SpoolManager {
+    implements Serviceable, Configurable, Runnable, Disposable, SpoolManager {
 
     /**
      * System component manager
@@ -147,8 +149,9 @@
     }
 
     /**
-     * @see org.apache.avalon.framework.activity.Initializable#initialize()
+     * Initialises the spool manager.
      */
+    @PostConstruct
     public void initialize() throws Exception {
 
         getLogger().info("JamesSpoolManager init...");

Modified: james/server/trunk/spring-deployment/src/main/config/james/james-config.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/spring-deployment/src/main/config/james/james-config.xml?rev=725962&r1=725961&r2=725962&view=diff
==============================================================================
--- james/server/trunk/spring-deployment/src/main/config/james/james-config.xml (original)
+++ james/server/trunk/spring-deployment/src/main/config/james/james-config.xml Fri Dec 12 03:02:01 2008
@@ -153,10 +153,14 @@
    <!-- Set the Java packages from which to load mailets and matchers -->
    <mailetpackages>
       <mailetpackage>org.apache.james.transport.mailets</mailetpackage>
+      <!-- Cryptography Mailets -->
       <mailetpackage>org.apache.james.transport.mailets.smime</mailetpackage>
+      <!-- Sieve Mail Scripting -->
+      <mailetpackage>org.apache.james.imapserver.sieve</mailetpackage>      
    </mailetpackages>
    <matcherpackages>
       <matcherpackage>org.apache.james.transport.matchers</matcherpackage>
+      <!-- Crytographic mailets -->
       <matcherpackage>org.apache.james.transport.matchers.smime</matcherpackage>
    </matcherpackages>
 
@@ -343,6 +347,10 @@
             </mapping>
          </mailet>
          -->
+         
+        <!-- Deliver To IMAP mailboxes, applying a Sieve script if the user has one
+        <mailet match="All" class="SieveMailet"/>
+        -->
 
          <!-- Anti-spam processing -->
          <!-- The following two entries avoid double anti-spam analysis -->



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org