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 bt...@apache.org on 2017/05/04 02:26:33 UTC
[2/6] james-project git commit: JAMES-1823 quotaUpdater is not
invoked more than one time for a message addition or deletion
JAMES-1823 quotaUpdater is not invoked more than one time for a message addition or deletion
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/e30634c9
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/e30634c9
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/e30634c9
Branch: refs/heads/master
Commit: e30634c9db343b8d333ae1e678ee07832341e7d1
Parents: 4f71913
Author: quynhn <qn...@linagora.com>
Authored: Thu Apr 27 17:27:15 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu May 4 09:25:52 2017 +0700
----------------------------------------------------------------------
...oxConfigurationBeanFactoryPostProcessor.java | 41 ++++++++++++++++----
1 file changed, 34 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/e30634c9/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/MailboxConfigurationBeanFactoryPostProcessor.java
----------------------------------------------------------------------
diff --git a/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/MailboxConfigurationBeanFactoryPostProcessor.java b/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/MailboxConfigurationBeanFactoryPostProcessor.java
index db2625c..516dec4 100644
--- a/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/MailboxConfigurationBeanFactoryPostProcessor.java
+++ b/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/MailboxConfigurationBeanFactoryPostProcessor.java
@@ -22,6 +22,8 @@ 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.lifecycle.ConfigurationProvider;
+
+import com.google.common.collect.ImmutableSet;
import org.springframework.beans.BeansException;
import org.springframework.beans.FatalBeanException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
@@ -36,11 +38,21 @@ import org.springframework.beans.factory.support.BeanDefinitionRegistry;
* It will register it with the alias mailboxmanager
*/
public class MailboxConfigurationBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
-
/**
* @see org.springframework.beans.factory.config.BeanFactoryPostProcessor#postProcessBeanFactory
* (org.springframework.beans.factory.config.ConfigurableListableBeanFactory)
*/
+
+ private static final String JPA_MAILBOXMANAGER = "jpa-mailboxmanager";
+ private static final String MEMORY_MAILBOX_MANAGER = "memory-mailboxManager";
+ private static final String JCR_MAILBOXMANAGER = "jcr-mailboxmanager";
+ private static final String MAILDIR_MAILBOXMANAGER = "maildir-mailboxmanager";
+ private static final String HBASE_MAILBOXMANAGER = "hbase-mailboxmanager";
+ private static final String CASSANDRA_MAILBOXMANAGER = "cassandra-mailboxmanager";
+ private static final ImmutableSet<String> MAILBOX_MANAGER_IDS = ImmutableSet.of(JPA_MAILBOXMANAGER, MEMORY_MAILBOX_MANAGER,
+ JCR_MAILBOXMANAGER, MAILDIR_MAILBOXMANAGER,
+ HBASE_MAILBOXMANAGER, CASSANDRA_MAILBOXMANAGER);
+
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
ConfigurationProvider confProvider = beanFactory.getBean(ConfigurationProvider.class);
try {
@@ -54,34 +66,35 @@ public class MailboxConfigurationBeanFactoryPostProcessor implements BeanFactory
String mailboxIdDeserializer = null;
String mailboxIdFactory = null;
if (provider.equalsIgnoreCase("jpa")) {
- mailbox = "jpa-mailboxmanager";
+ mailbox = JPA_MAILBOXMANAGER;
subscription = "jpa-subscriptionManager";
messageMapperFactory = "jpa-sessionMapperFactory";
mailboxIdDeserializer = "jpa-mailbox-id-deserializer";
mailboxIdFactory = "jpa-mailboxIdFactory";
} else if (provider.equalsIgnoreCase("memory")) {
- mailbox = "memory-mailboxmanager";
+ mailbox = MEMORY_MAILBOX_MANAGER;
subscription = "memory-subscriptionManager";
messageMapperFactory = "memory-sessionMapperFactory";
mailboxIdDeserializer = "memory-mailbox-id-deserializer";
mailboxIdFactory = "memory-mailboxIdFactory";
} else if (provider.equalsIgnoreCase("jcr")) {
- mailbox = "jcr-mailboxmanager";
+ mailbox = JCR_MAILBOXMANAGER;
subscription = "jcr-subscriptionManager";
messageMapperFactory = "jcr-sessionMapperFactory";
mailboxIdDeserializer = "jcr-mailbox-id-deserializer";
} else if (provider.equalsIgnoreCase("maildir")) {
- mailbox = "maildir-mailboxmanager";
+ mailbox = MAILDIR_MAILBOXMANAGER;
subscription = "maildir-subscriptionManager";
messageMapperFactory = "maildir-sessionMapperFactory";
mailboxIdDeserializer = "maildir-mailbox-id-deserializer";
+ mailboxIdFactory = "maildir-mailboxIdFactory";
} else if (provider.equalsIgnoreCase("hbase")) {
- mailbox = "hbase-mailboxmanager";
+ mailbox = HBASE_MAILBOXMANAGER;
subscription = "hbase-subscriptionManager";
messageMapperFactory = "hbase-sessionMapperFactory";
mailboxIdDeserializer = "hbase-mailbox-id-deserializer";
} else if (provider.equalsIgnoreCase("cassandra")) {
- mailbox = "cassandra-mailboxmanager";
+ mailbox = CASSANDRA_MAILBOXMANAGER;
subscription = "cassandra-subscriptionManager";
messageMapperFactory = "cassandra-sessionMapperFactory";
mailboxIdDeserializer = "cassandra-mailbox-id-deserializer";
@@ -96,10 +109,24 @@ public class MailboxConfigurationBeanFactoryPostProcessor implements BeanFactory
registry.registerAlias(mailboxIdDeserializer, "mailbox-id-deserializer");
registry.registerAlias(mailboxIdFactory, "mailboxIdFactory");
+ removeMailboxManagersExceptRightSelectedOne(registry, mailbox);
+
} catch (ConfigurationException e) {
throw new FatalBeanException("Unable to config the mailboxmanager", e);
}
}
+ private void removeMailboxManagersExceptRightSelectedOne(BeanDefinitionRegistry registry, String selectedMailboxManager) {
+ for (String mailboxManagerId : MAILBOX_MANAGER_IDS) {
+ if (registeredAndNotSelected(registry, selectedMailboxManager, mailboxManagerId)) {
+ registry.removeBeanDefinition(mailboxManagerId);
+ }
+ }
+ }
+
+ private boolean registeredAndNotSelected(BeanDefinitionRegistry registry, String selectedMailboxManager, String otherMailboxManager) {
+ return !otherMailboxManager.equals(selectedMailboxManager) && registry.containsBeanDefinition(otherMailboxManager);
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org