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 2020/05/20 11:00:27 UTC
[james-project] 01/11: JAMES-3140 Avoid a module override for
CassandraBlobStore
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 38bd8e9d908c73cf754f6fb0b2f6c17b54269536
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Apr 23 15:00:05 2020 +0700
JAMES-3140 Avoid a module override for CassandraBlobStore
The "conbine" semantic for configuration enabled modules is safer (thus
should be used) but then we can no longer override repvious declaration.
A better organisation then need to be setted up.
We need to split Cassandra Blob store dependency module from the actual
declaration.
---
.../james/mpt/smtp/CassandraSmtpTestRuleFactory.java | 2 ++
.../org/apache/james/CassandraJamesServerMain.java | 6 ++++--
...java => CassandraBlobStoreDeclarationModule.java} | 20 +-------------------
...ava => CassandraBlobStoreDependenciesModule.java} | 8 +-------
.../james/RabbitMQJamesServerReprocessingTest.java | 1 +
5 files changed, 9 insertions(+), 28 deletions(-)
diff --git a/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/CassandraSmtpTestRuleFactory.java b/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/CassandraSmtpTestRuleFactory.java
index 98cb9c4..dfec67e 100644
--- a/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/CassandraSmtpTestRuleFactory.java
+++ b/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/CassandraSmtpTestRuleFactory.java
@@ -24,6 +24,7 @@ import org.apache.james.GuiceJamesServer;
import org.apache.james.backends.cassandra.DockerCassandra;
import org.apache.james.backends.cassandra.init.configuration.ClusterConfiguration;
import org.apache.james.dnsservice.api.DNSService;
+import org.apache.james.modules.mailbox.CassandraBlobStoreDeclarationModule;
import org.apache.james.modules.mailbox.KeyspacesConfiguration;
import org.apache.james.modules.protocols.SmtpGuiceProbe.SmtpServerConnectedType;
import org.apache.james.modules.server.CamelMailetContainerModule;
@@ -48,6 +49,7 @@ public final class CassandraSmtpTestRuleFactory {
return GuiceJamesServer.forConfiguration(configuration)
.combineWith(CassandraJamesServerMain.CASSANDRA_SERVER_CORE_MODULE,
+ new CassandraBlobStoreDeclarationModule(),
SmtpTestRule.SMTP_PROTOCOL_MODULE,
binder -> binder.bind(MailQueueItemDecoratorFactory.class).to(RawMailQueueItemDecoratorFactory.class),
binder -> binder.bind(CamelMailetContainerModule.DefaultProcessorsConfigurationSupplier.class)
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
index bc01ba1..440828e 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
@@ -35,7 +35,8 @@ import org.apache.james.modules.data.CassandraSieveRepositoryModule;
import org.apache.james.modules.data.CassandraUsersRepositoryModule;
import org.apache.james.modules.eventstore.CassandraEventStoreModule;
import org.apache.james.modules.mailbox.BlobStoreAPIModule;
-import org.apache.james.modules.mailbox.CassandraBlobStoreModule;
+import org.apache.james.modules.mailbox.CassandraBlobStoreDeclarationModule;
+import org.apache.james.modules.mailbox.CassandraBlobStoreDependenciesModule;
import org.apache.james.modules.mailbox.CassandraDeletedMessageVaultModule;
import org.apache.james.modules.mailbox.CassandraMailboxModule;
import org.apache.james.modules.mailbox.CassandraQuotaMailingModule;
@@ -123,12 +124,12 @@ public class CassandraJamesServerMain implements JamesServerMain {
public static final Module CASSANDRA_SERVER_CORE_MODULE = Modules.combine(
new ActiveMQQueueModule(),
+ new CassandraBlobStoreDependenciesModule(),
new CassandraDomainListModule(),
new CassandraDLPConfigurationStoreModule(),
new CassandraEventStoreModule(),
new CassandraMailRepositoryModule(),
new CassandraMetricsModule(),
- new CassandraBlobStoreModule(),
new CassandraRecipientRewriteTableModule(),
new CassandraSessionModule(),
new CassandraSieveRepositoryModule(),
@@ -154,6 +155,7 @@ public class CassandraJamesServerMain implements JamesServerMain {
new DKIMMailetModule());
public static Module ALL_BUT_JMX_CASSANDRA_MODULE = Modules.combine(
+ new CassandraBlobStoreDeclarationModule(),
REQUIRE_TASK_MANAGER_MODULE,
new TaskManagerModule(),
CASSANDRA_EVENT_STORE_JSON_SERIALIZATION_DEFAULT_MODULE
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraBlobStoreModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraBlobStoreDeclarationModule.java
similarity index 62%
copy from server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraBlobStoreModule.java
copy to server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraBlobStoreDeclarationModule.java
index 97f5eb6..e885e15 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraBlobStoreModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraBlobStoreDeclarationModule.java
@@ -19,36 +19,18 @@
package org.apache.james.modules.mailbox;
-import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.blob.api.BlobStore;
-import org.apache.james.blob.api.BucketName;
import org.apache.james.blob.api.MetricableBlobStore;
-import org.apache.james.blob.cassandra.CassandraBlobModule;
import org.apache.james.blob.cassandra.CassandraBlobStore;
-import org.apache.james.blob.cassandra.CassandraDefaultBucketDAO;
-import org.apache.james.blob.cassandra.CassandraDumbBlobStore;
import com.google.inject.AbstractModule;
-import com.google.inject.Scopes;
-import com.google.inject.multibindings.Multibinder;
import com.google.inject.name.Names;
-public class CassandraBlobStoreModule extends AbstractModule {
+public class CassandraBlobStoreDeclarationModule extends AbstractModule {
@Override
protected void configure() {
- bind(CassandraDefaultBucketDAO.class).in(Scopes.SINGLETON);
- bind(CassandraBlobStore.class).in(Scopes.SINGLETON);
- bind(CassandraDumbBlobStore.class).in(Scopes.SINGLETON);
-
- bind(BucketName.class)
- .annotatedWith(Names.named(CassandraDumbBlobStore.DEFAULT_BUCKET))
- .toInstance(BucketName.DEFAULT);
-
bind(BlobStore.class)
.annotatedWith(Names.named(MetricableBlobStore.BLOB_STORE_IMPLEMENTATION))
.to(CassandraBlobStore.class);
-
- Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class);
- cassandraDataDefinitions.addBinding().toInstance(CassandraBlobModule.MODULE);
}
}
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraBlobStoreModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraBlobStoreDependenciesModule.java
similarity index 88%
rename from server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraBlobStoreModule.java
rename to server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraBlobStoreDependenciesModule.java
index 97f5eb6..ea5b1a7 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraBlobStoreModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraBlobStoreDependenciesModule.java
@@ -20,9 +20,7 @@
package org.apache.james.modules.mailbox;
import org.apache.james.backends.cassandra.components.CassandraModule;
-import org.apache.james.blob.api.BlobStore;
import org.apache.james.blob.api.BucketName;
-import org.apache.james.blob.api.MetricableBlobStore;
import org.apache.james.blob.cassandra.CassandraBlobModule;
import org.apache.james.blob.cassandra.CassandraBlobStore;
import org.apache.james.blob.cassandra.CassandraDefaultBucketDAO;
@@ -33,7 +31,7 @@ import com.google.inject.Scopes;
import com.google.inject.multibindings.Multibinder;
import com.google.inject.name.Names;
-public class CassandraBlobStoreModule extends AbstractModule {
+public class CassandraBlobStoreDependenciesModule extends AbstractModule {
@Override
protected void configure() {
bind(CassandraDefaultBucketDAO.class).in(Scopes.SINGLETON);
@@ -44,10 +42,6 @@ public class CassandraBlobStoreModule extends AbstractModule {
.annotatedWith(Names.named(CassandraDumbBlobStore.DEFAULT_BUCKET))
.toInstance(BucketName.DEFAULT);
- bind(BlobStore.class)
- .annotatedWith(Names.named(MetricableBlobStore.BLOB_STORE_IMPLEMENTATION))
- .to(CassandraBlobStore.class);
-
Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class);
cassandraDataDefinitions.addBinding().toInstance(CassandraBlobModule.MODULE);
}
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/RabbitMQJamesServerReprocessingTest.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/RabbitMQJamesServerReprocessingTest.java
index 59c3ab8..f5aa48f 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/RabbitMQJamesServerReprocessingTest.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/RabbitMQJamesServerReprocessingTest.java
@@ -26,6 +26,7 @@ import org.apache.james.jmap.draft.JmapJamesServerContract;
import org.apache.james.mailrepository.api.MailRepositoryUrl;
import org.apache.james.modules.RabbitMQExtension;
import org.apache.james.modules.TestJMAPServerModule;
+import org.apache.james.modules.blobstore.BlobStoreChoosingModule;
import org.apache.james.modules.protocols.SmtpGuiceProbe;
import org.apache.james.utils.MailRepositoryProbeImpl;
import org.apache.james.utils.SMTPMessageSender;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org