Author: norman
Date: Mon Dec 27 16:17:40 2010
New Revision: 1053101

URL: http://svn.apache.org/viewvc?rev=1053101&view=rev
Log:
The user is now be able to config the mailboxmanager to use via the provider 
tag in the mailbox.xml configuration file. See JAMES-1156

Added:
    james/server/trunk/container-spring/src/main/config/james/mailbox.xml
    
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/MailboxConfigurationBeanFactoryPostProcessor.java
Modified:
    
james/server/trunk/container-spring/src/main/config/james/context/james-server-context.xml

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=1053101&r1=1053100&r2=1053101&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
 Mon Dec 27 16:17:40 2010
@@ -303,8 +303,8 @@
     <!-- 
       Mailbox Managers
      -->
-    <bean id="mailboxmanager" parent="jpa-mailboxmanager" />
-    <bean id="subscriptionManager" parent="jpa-subscriptionManager" />
+    <bean 
class="org.apache.james.container.spring.bean.factorypostprocessor.MailboxConfigurationBeanFactoryPostProcessor"/>
+     
     <bean id="locker" 
class="org.apache.james.mailbox.store.JVMMailboxPathLocker"/>
     <bean id="authenticator" 
class="org.apache.james.adapter.mailbox.store.UserRepositoryAuthenticator"/>
     <import resource="classpath:context/james-mailbox-jpa-context.xml" />

Added: james/server/trunk/container-spring/src/main/config/james/mailbox.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/mailbox.xml?rev=1053101&view=auto
==============================================================================
--- james/server/trunk/container-spring/src/main/config/james/mailbox.xml 
(added)
+++ james/server/trunk/container-spring/src/main/config/james/mailbox.xml Mon 
Dec 27 16:17:40 2010
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+  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.                                           
+ -->
+ 
+<!-- See http://james.apache.org/server/3/config.html for usage -->
+ 
+<mailbox>
+    <!-- supported providers are: -->
+    <!-- jpa, jcr, maildir, memory -->
+    <!--  -->
+    <!-- Be aware that maildir will only work on unix like operation systems! 
-->
+    <provider>jpa</provider>
+</mailbox>
\ No newline at end of file

Added: 
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/MailboxConfigurationBeanFactoryPostProcessor.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/MailboxConfigurationBeanFactoryPostProcessor.java?rev=1053101&view=auto
==============================================================================
--- 
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/MailboxConfigurationBeanFactoryPostProcessor.java
 (added)
+++ 
james/server/trunk/container-spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/MailboxConfigurationBeanFactoryPostProcessor.java
 Mon Dec 27 16:17:40 2010
@@ -0,0 +1,81 @@
+/****************************************************************
+ * 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.container.spring.bean.factorypostprocessor;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+import 
org.apache.james.container.spring.provider.configuration.ConfigurationProvider;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.FatalBeanException;
+import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
+import 
org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.beans.factory.support.BeanDefinitionRegistry;
+
+/**
+ * Read mailbox.xml file and register the right bean alias in the {...@link 
BeanDefinitionRegistry} depending on the configured
+ * provider. As default jpa is used!
+ * 
+ * It will register it with the alias mailboxmanager
+ * 
+ *
+ */
+public class MailboxConfigurationBeanFactoryPostProcessor implements 
BeanFactoryPostProcessor{
+
+    
+    /*
+     * (non-Javadoc)
+     * @see 
org.springframework.beans.factory.config.BeanFactoryPostProcessor#postProcessBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory)
+     */
+    public void postProcessBeanFactory(ConfigurableListableBeanFactory 
beanFactory) throws BeansException {
+        ConfigurationProvider confProvider = 
beanFactory.getBean(ConfigurationProvider.class);
+        try {
+            HierarchicalConfiguration config = 
confProvider.getConfiguration("mailbox");
+            String provider = config.getString("provider", "jpa");
+            
+            BeanDefinitionRegistry registry = (BeanDefinitionRegistry) 
beanFactory;
+            String mailbox = null;
+            String subscription = null;
+            if (provider.equalsIgnoreCase("jpa")) {
+                mailbox = "jpa-mailboxmanager";
+                subscription = "jpa-subscriptionManager";
+            } else if (provider.equalsIgnoreCase("memory")) {
+                mailbox = "memory-mailboxmanager";
+                subscription = "memory-subscriptionManager";
+            } else if (provider.equalsIgnoreCase("jcr")) {
+                mailbox = "jcr-mailboxmanager";
+                subscription = "jcr-subscriptionManager";
+            } else if (provider.equalsIgnoreCase("maildir")) {
+                mailbox = "maildir-mailboxmanager";
+                subscription = "maildir-subscriptionManager";
+
+            }
+            
+            if (mailbox == null) throw new 
ConfigurationException("Mailboxmanager provider "+ provider + " not 
supported!");
+            registry.registerAlias(mailbox, "mailboxmanager");
+            registry.registerAlias(subscription, "subscriptionManager");
+
+        } catch (ConfigurationException e) {
+            throw new FatalBeanException("Unable to config the 
mailboxmanager", e);
+        }
+        
+    }
+
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to