Author: matthieu
Date: Tue Nov 17 14:16:39 2015
New Revision: 1714789

URL: http://svn.apache.org/viewvc?rev=1714789&view=rev
Log:
JAMES-1641 CassandraDomainList must be initialized and used as a singleton

Modified:
    
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraDomainListModule.java

Modified: 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraDomainListModule.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraDomainListModule.java?rev=1714789&r1=1714788&r2=1714789&view=diff
==============================================================================
--- 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraDomainListModule.java
 (original)
+++ 
james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraDomainListModule.java
 Tue Nov 17 14:16:39 2015
@@ -21,17 +21,47 @@ package org.apache.james.modules.data;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.domainlist.api.DomainList;
 import org.apache.james.domainlist.cassandra.CassandraDomainList;
+import org.apache.james.modules.protocols.IMAPServerModule;
+import org.apache.james.utils.ConfigurationPerformer;
+import org.apache.james.utils.ConfigurationProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.google.inject.AbstractModule;
+import com.google.inject.Inject;
+import com.google.inject.Scope;
+import com.google.inject.Scopes;
+import com.google.inject.Singleton;
 import com.google.inject.multibindings.Multibinder;
 
 public class CassandraDomainListModule extends AbstractModule {
 
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(DomainList.class);
+    
     @Override
     public void configure() {
+        bind(CassandraDomainList.class).in(Scopes.SINGLETON);
         bind(DomainList.class).to(CassandraDomainList.class);
-        Multibinder<CassandraModule> cassandraDataDefinitions = 
Multibinder.newSetBinder(binder(), CassandraModule.class);
-        
cassandraDataDefinitions.addBinding().to(org.apache.james.domainlist.cassandra.CassandraDomainListModule.class);
+        Multibinder.newSetBinder(binder(), 
CassandraModule.class).addBinding().to(org.apache.james.domainlist.cassandra.CassandraDomainListModule.class);
+        Multibinder.newSetBinder(binder(), 
ConfigurationPerformer.class).addBinding().to(CassandraDomainListConfigurationPerformer.class);
     }
+    
+    @Singleton
+    public static class CassandraDomainListConfigurationPerformer implements 
ConfigurationPerformer {
 
+        private final ConfigurationProvider configurationProvider;
+        private final CassandraDomainList cassandraDomainList;
+
+        @Inject
+        public CassandraDomainListConfigurationPerformer(ConfigurationProvider 
configurationProvider, CassandraDomainList cassandraDomainList) {
+            this.configurationProvider = configurationProvider;
+            this.cassandraDomainList = cassandraDomainList;
+        }
+
+        @Override
+        public void initModule() throws Exception {
+            cassandraDomainList.setLog(LOGGER);
+            
cassandraDomainList.configure(configurationProvider.getConfiguration("domainlist"));
+        }
+    }
 }



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

Reply via email to