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 ro...@apache.org on 2018/02/28 13:46:37 UTC
[8/8] james-project git commit: JAMES-2341 Bind SpamAssassin in
Cassandra guice implementation
JAMES-2341 Bind SpamAssassin in Cassandra guice implementation
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/3dbfd86b
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/3dbfd86b
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/3dbfd86b
Branch: refs/heads/master
Commit: 3dbfd86b8bfb8780d3ed37dc65c1deabe1e52b44
Parents: bd25907
Author: Antoine Duprat <ad...@linagora.com>
Authored: Fri Feb 23 09:50:09 2018 +0100
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Feb 28 13:29:33 2018 +0100
----------------------------------------------------------------------
.../mailbox/store/StoreMailboxManager.java | 9 ---
.../apache/james/CassandraJamesServerMain.java | 4 +-
.../modules/mailbox/CassandraMailboxModule.java | 6 +-
.../mailbox/SpamAssassinListenerModule.java | 72 ++++++++++++++++++++
4 files changed, 80 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dbfd86b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index 46d05cc..a48e18f 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -67,7 +67,6 @@ import org.apache.james.mailbox.quota.QuotaRootResolver;
import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
import org.apache.james.mailbox.store.event.MailboxAnnotationListener;
import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
-import org.apache.james.mailbox.store.event.SpamEventListener;
import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -136,7 +135,6 @@ public class StoreMailboxManager implements MailboxManager {
private final MessageParser messageParser;
private final Factory messageIdFactory;
private final ImmutableMailboxMessage.Factory immutableMailboxMessageFactory;
- private SpamEventListener spamEventListener;
@Inject
public StoreMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, Authenticator authenticator, Authorizator authorizator,
@@ -201,10 +199,6 @@ public class StoreMailboxManager implements MailboxManager {
return immutableMailboxMessageFactory;
}
- public void setSpamEventListener(SpamEventListener spamEventListener) {
- this.spamEventListener = spamEventListener;
- }
-
/**
* Init the {@link MailboxManager}
*
@@ -240,9 +234,6 @@ public class StoreMailboxManager implements MailboxManager {
if (hasCapability(MailboxCapabilities.Annotation)) {
this.addGlobalListener(new MailboxAnnotationListener(mailboxSessionMapperFactory), session);
}
- if (spamEventListener != null) {
- this.addGlobalListener(spamEventListener, session);
- }
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dbfd86b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
----------------------------------------------------------------------
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 d117d9b..bfd1c84 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
@@ -29,6 +29,7 @@ import org.apache.james.modules.data.CassandraUsersRepositoryModule;
import org.apache.james.modules.mailbox.CassandraMailboxModule;
import org.apache.james.modules.mailbox.CassandraSessionModule;
import org.apache.james.modules.mailbox.ElasticSearchMailboxModule;
+import org.apache.james.modules.mailbox.SpamAssassinListenerModule;
import org.apache.james.modules.mailbox.TikaMailboxModule;
import org.apache.james.modules.metrics.CassandraMetricsModule;
import org.apache.james.modules.protocols.IMAPServerModule;
@@ -87,7 +88,8 @@ public class CassandraJamesServerMain {
new ElasticSearchMailboxModule(),
new ElasticSearchMetricReporterModule(),
new MailboxModule(),
- new TikaMailboxModule());
+ new TikaMailboxModule(),
+ new SpamAssassinListenerModule());
public static void main(String[] args) throws Exception {
GuiceJamesServer server = new GuiceJamesServer()
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dbfd86b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
index 0bd19a1..67da8b6 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
@@ -68,9 +68,11 @@ import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
import org.apache.james.mailbox.store.NoMailboxPathLocker;
import org.apache.james.mailbox.store.StoreAttachmentManager;
import org.apache.james.mailbox.store.StoreBlobManager;
+import org.apache.james.mailbox.store.StoreMailboxManager;
import org.apache.james.mailbox.store.StoreMessageIdManager;
import org.apache.james.mailbox.store.StoreRightManager;
import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
+import org.apache.james.mailbox.store.event.SpamEventListener;
import org.apache.james.mailbox.store.mail.AttachmentMapperFactory;
import org.apache.james.mailbox.store.mail.MailboxMapperFactory;
import org.apache.james.mailbox.store.mail.MessageMapperFactory;
@@ -144,6 +146,7 @@ public class CassandraMailboxModule extends AbstractModule {
bind(Authenticator.class).to(UserRepositoryAuthenticator.class);
bind(Authorizator.class).to(UserRepositoryAuthorizator.class);
bind(MailboxManager.class).to(CassandraMailboxManager.class);
+ bind(StoreMailboxManager.class).to(CassandraMailboxManager.class);
bind(MailboxId.Factory.class).to(CassandraId.Factory.class);
bind(MessageId.Factory.class).to(CassandraMessageId.Factory.class);
bind(MessageIdManager.class).to(StoreMessageIdManager.class);
@@ -176,7 +179,8 @@ public class CassandraMailboxModule extends AbstractModule {
@Named(Names.MAILBOXMANAGER_NAME)
@Singleton
public MailboxManager provideMailboxManager(CassandraMailboxManager cassandraMailboxManager, ListeningCurrentQuotaUpdater quotaUpdater,
- QuotaManager quotaManager, QuotaRootResolver quotaRootResolver, BatchSizes batchSizes) throws MailboxException {
+ QuotaManager quotaManager, QuotaRootResolver quotaRootResolver, BatchSizes batchSizes,
+ SpamEventListener spamEventListener) throws MailboxException {
cassandraMailboxManager.setQuotaUpdater(quotaUpdater);
cassandraMailboxManager.setQuotaManager(quotaManager);
cassandraMailboxManager.setQuotaRootResolver(quotaRootResolver);
http://git-wip-us.apache.org/repos/asf/james-project/blob/3dbfd86b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/SpamAssassinListenerModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/SpamAssassinListenerModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/SpamAssassinListenerModule.java
new file mode 100644
index 0000000..ce83ba9
--- /dev/null
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/SpamAssassinListenerModule.java
@@ -0,0 +1,72 @@
+/****************************************************************
+ * 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.modules.mailbox;
+
+import java.io.FileNotFoundException;
+
+import javax.inject.Singleton;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.spamassassin.SpamAssassin;
+import org.apache.james.mailbox.spamassassin.SpamAssassinConfiguration;
+import org.apache.james.mailbox.spamassassin.SpamAssassinListener;
+import org.apache.james.mailbox.store.StoreMailboxManager;
+import org.apache.james.mailbox.store.event.SpamEventListener;
+import org.apache.james.utils.PropertiesProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Provides;
+
+public class SpamAssassinListenerModule extends AbstractModule {
+ private static final Logger LOGGER = LoggerFactory.getLogger(SpamAssassinListenerModule.class);
+
+ public static final String SPAMASSASSIN_CONFIGURATION_NAME = "spamassassin";
+
+ @Override
+ protected void configure() {
+ }
+
+ @Provides
+ @Singleton
+ public SpamEventListener provideSpamEventListener(SpamAssassinConfiguration spamAssassinConfiguration, StoreMailboxManager storeMailboxManager) throws MailboxException {
+ SpamAssassinListener spamAssassinListener = new SpamAssassinListener(new SpamAssassin(spamAssassinConfiguration));
+ MailboxSession session = null;
+ storeMailboxManager.addGlobalListener(spamAssassinListener, session);
+ return spamAssassinListener;
+ }
+
+ @Provides
+ @Singleton
+ private SpamAssassinConfiguration getSpamAssassinConfiguration(PropertiesProvider propertiesProvider) throws ConfigurationException {
+ try {
+ PropertiesConfiguration configuration = propertiesProvider.getConfiguration(SPAMASSASSIN_CONFIGURATION_NAME);
+ return SpamAssassinConfigurationLoader.fromProperties(configuration);
+ } catch (FileNotFoundException e) {
+ LOGGER.warn("Could not find " + SPAMASSASSIN_CONFIGURATION_NAME + " configuration file. Disabling this service.");
+ return SpamAssassinConfigurationLoader.disable();
+ }
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org