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