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 ma...@apache.org on 2015/11/17 15:16:39 UTC

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

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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org