[prev in list] [next in list] [prev in thread] [next in thread] 

List:       james-dev
Subject:    [8/8] james-project git commit: JAMES-2341 Bind SpamAssassin in Cassandra guice implementation
From:       rouazana () apache ! org
Date:       2018-02-28 13:46:37
Message-ID: c06ac838fa444047a5a0445163c8a9f8 () git ! apache ! org
[Download RAW message or body]

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 <aduprat@linagora.com>
Authored: Fri Feb 23 09:50:09 2018 +0100
Committer: Antoine Duprat <aduprat@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/gu \
ice/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/gu \
ice/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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic