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]