Author: btellier
Date: Tue Sep 22 10:34:17 2015
New Revision: 1704557

URL: http://svn.apache.org/viewvc?rev=1704557&view=rev
Log:
JAMES-511 Spring Quota post factory

Added:
    
james/server/trunk/container/spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/QuotaBeanFactoryPostProcessor.java

Added: 
james/server/trunk/container/spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/QuotaBeanFactoryPostProcessor.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container/spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/QuotaBeanFactoryPostProcessor.java?rev=1704557&view=auto
==============================================================================
--- 
james/server/trunk/container/spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/QuotaBeanFactoryPostProcessor.java
 (added)
+++ 
james/server/trunk/container/spring/src/main/java/org/apache/james/container/spring/bean/factorypostprocessor/QuotaBeanFactoryPostProcessor.java
 Tue Sep 22 10:34:17 2015
@@ -0,0 +1,119 @@
+/****************************************************************
+ * 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.lifecycle.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;
+
+public class QuotaBeanFactoryPostProcessor implements BeanFactoryPostProcessor 
{
+
+    private static final String IN_MEMORY = "inmemory";
+    private static final String CASSANDRA = "cassandra";
+    private static final String FAKE = "fake";
+    private static final String MAX_QUOTA_MANAGER = "maxQuotaManager";
+    private static final String CURRENT_QUOTA_MANAGER = "currentQuotaManager";
+    private static final String QUOTA_MANAGER = "quotaManager";
+    private static final String QUOTA_UPDATER = "quotaUpdater";
+    private static final String PROVIDER = "provider";
+    private static final String DEFAULT = "default";
+    private static final String UPDATES = "updates";
+    private static final String QUOTA_ROOT_RESOLVER = "quotaRootResolver";
+    private static final String EVENT = "event";
+
+    @Override
+    public void postProcessBeanFactory(ConfigurableListableBeanFactory 
beanFactory) throws BeansException {
+        ConfigurationProvider confProvider = 
beanFactory.getBean(ConfigurationProvider.class);
+        try {
+            HierarchicalConfiguration config = 
confProvider.getConfiguration("quota");
+
+            String quotaRootResolver = 
config.configurationAt(QUOTA_ROOT_RESOLVER).getString(PROVIDER, DEFAULT);
+            String currentQuotaManager = 
config.configurationAt(CURRENT_QUOTA_MANAGER).getString(PROVIDER, "none");
+            String maxQuotaManager = 
config.configurationAt(MAX_QUOTA_MANAGER).getString(PROVIDER, FAKE);
+            String quotaManager = 
config.configurationAt(QUOTA_MANAGER).getString(PROVIDER, FAKE);
+            String quotaUpdater = 
config.configurationAt(UPDATES).getString(PROVIDER, FAKE);
+
+            BeanDefinitionRegistry registry = (BeanDefinitionRegistry) 
beanFactory;
+
+            registerAliasForQuotaRootResolver(quotaRootResolver, registry);
+            registerAliasForCurrentQuotaManager(currentQuotaManager, registry);
+            registerAliasForMaxQuotaManager(maxQuotaManager, registry);
+            registerAliasForQuotaManager(quotaManager, registry);
+            registerAliasForQuotaUpdater(quotaUpdater, registry);
+        } catch (ConfigurationException e) {
+            throw new FatalBeanException("Unable to configure Quota system", 
e);
+        }
+    }
+
+    private void registerAliasForQuotaUpdater(String quotaUpdater, 
BeanDefinitionRegistry registry) {
+        if (quotaUpdater.equalsIgnoreCase(EVENT)) {
+            registry.registerAlias("eventQuotaUpdater", QUOTA_UPDATER);
+        } else if (quotaUpdater.equalsIgnoreCase(FAKE)) {
+            registry.registerAlias("noQuotaUpdater", QUOTA_UPDATER);
+        } else {
+            throw new FatalBeanException("Unreadable value for Quota Updater : 
" + quotaUpdater);
+        }
+    }
+
+    private void registerAliasForQuotaManager(String quotaManager, 
BeanDefinitionRegistry registry) {
+        if (quotaManager.equalsIgnoreCase(FAKE)) {
+            registry.registerAlias("noQuotaManager", QUOTA_MANAGER);
+        } else if (quotaManager.equalsIgnoreCase("store")) {
+            registry.registerAlias("storeQuotaManager", QUOTA_MANAGER);
+        } else {
+            throw new FatalBeanException("Unreadable value for Quota Manager : 
" + quotaManager);
+        }
+    }
+
+    private void registerAliasForMaxQuotaManager(String maxQuotaManager, 
BeanDefinitionRegistry registry) {
+        if (maxQuotaManager.equalsIgnoreCase(FAKE)) {
+            registry.registerAlias("noMaxQuotaManager", MAX_QUOTA_MANAGER);
+        } else if (maxQuotaManager.equalsIgnoreCase(IN_MEMORY)) {
+            registry.registerAlias("inMemoryMaxQuotaManager", 
MAX_QUOTA_MANAGER);
+        } else if (maxQuotaManager.equalsIgnoreCase(CASSANDRA)) {
+            registry.registerAlias("cassandraMaxQuotaManager", 
MAX_QUOTA_MANAGER);
+        } else {
+            throw new FatalBeanException("Unreadable value for Max Quota 
Manager : " + maxQuotaManager);
+        }
+    }
+
+    private void registerAliasForCurrentQuotaManager(String 
currentQuotaManager, BeanDefinitionRegistry registry) {
+        if (currentQuotaManager.equalsIgnoreCase(IN_MEMORY)) {
+            registry.registerAlias("inMemoryCurrentQuotaManager", 
CURRENT_QUOTA_MANAGER);
+        } else if (currentQuotaManager.equalsIgnoreCase(CASSANDRA)) {
+            registry.registerAlias("cassandraCurrentQuotaManager", 
CURRENT_QUOTA_MANAGER);
+        } else if (! currentQuotaManager.equalsIgnoreCase("none")) {
+            throw new FatalBeanException("Unreadable value for Current Quota 
Manager : " + currentQuotaManager);
+        }
+    }
+
+    private void registerAliasForQuotaRootResolver(String quotaRootResolver, 
BeanDefinitionRegistry registry) {
+        if (quotaRootResolver.equals(DEFAULT)) {
+            registry.registerAlias("defaultQuotaRootResolver", 
QUOTA_ROOT_RESOLVER);
+        } else {
+            throw new FatalBeanException("Unreadable value for QUOTA ROOT 
resolver : " + quotaRootResolver);
+        }
+    }
+}



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

Reply via email to