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:33 UTC

[4/8] james-project git commit: JAMES-2341 Load SpamAssassin configuration from file

JAMES-2341 Load SpamAssassin configuration from file


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/58c2debd
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/58c2debd
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/58c2debd

Branch: refs/heads/master
Commit: 58c2debda944e652ba272c86ad850df4525652a9
Parents: ae8652d
Author: Antoine Duprat <ad...@linagora.com>
Authored: Thu Feb 22 15:22:43 2018 +0100
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Feb 28 13:29:31 2018 +0100

----------------------------------------------------------------------
 server/container/guice/cassandra-guice/pom.xml  |  4 ++
 .../SpamAssassinConfigurationLoader.java        | 49 ++++++++++++++++
 .../SpamAssassinConfigurationLoaderTest.java    | 59 ++++++++++++++++++++
 3 files changed, 112 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/58c2debd/server/container/guice/cassandra-guice/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/pom.xml b/server/container/guice/cassandra-guice/pom.xml
index a0e6b14..affbae2 100644
--- a/server/container/guice/cassandra-guice/pom.xml
+++ b/server/container/guice/cassandra-guice/pom.xml
@@ -78,6 +78,10 @@
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
+            <artifactId>apache-james-mailbox-spamassassin</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
             <artifactId>apache-james-mailbox-tika</artifactId>
             <type>test-jar</type>
             <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/james-project/blob/58c2debd/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/SpamAssassinConfigurationLoader.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/SpamAssassinConfigurationLoader.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/SpamAssassinConfigurationLoader.java
new file mode 100644
index 0000000..35a2077
--- /dev/null
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/SpamAssassinConfigurationLoader.java
@@ -0,0 +1,49 @@
+/****************************************************************
+ * 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.util.Optional;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.james.mailbox.spamassassin.SpamAssassinConfiguration;
+import org.apache.james.util.Host;
+
+public class SpamAssassinConfigurationLoader {
+
+    private static final String SPAMASSASSIN_HOST = "spamassassin.host";
+    private static final String SPAMASSASSIN_PORT = "spamassassin.port";
+    public static final String DEFAULT_HOST = "127.0.0.1";
+    public static final int DEFAULT_PORT = 783;
+
+    public static SpamAssassinConfiguration disable() {
+        return new SpamAssassinConfiguration(Optional.empty());
+    }
+
+    public static SpamAssassinConfiguration fromProperties(PropertiesConfiguration configuration) throws ConfigurationException {
+        Host host = getHost(configuration);
+        return new SpamAssassinConfiguration(Optional.of(host));
+    }
+
+    private static Host getHost(PropertiesConfiguration propertiesReader) throws ConfigurationException {
+        return Host.from(propertiesReader.getString(SPAMASSASSIN_HOST, DEFAULT_HOST), 
+                propertiesReader.getInteger(SPAMASSASSIN_PORT, DEFAULT_PORT));
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/58c2debd/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/SpamAssassinConfigurationLoaderTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/SpamAssassinConfigurationLoaderTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/SpamAssassinConfigurationLoaderTest.java
new file mode 100644
index 0000000..a2c8f31
--- /dev/null
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/SpamAssassinConfigurationLoaderTest.java
@@ -0,0 +1,59 @@
+/****************************************************************
+ * 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 static org.assertj.core.api.Assertions.assertThat;
+
+import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.james.mailbox.spamassassin.SpamAssassinConfiguration;
+import org.apache.james.util.Host;
+import org.junit.Test;
+
+public class SpamAssassinConfigurationLoaderTest {
+
+    @Test
+    public void isEnableShouldReturnFalseWhenDisable() {
+        SpamAssassinConfiguration configuration = SpamAssassinConfigurationLoader.disable();
+        assertThat(configuration.isEnable()).isFalse();
+    }
+
+    @Test
+    public void isEnableShouldReturnTrueWhenEnable() throws Exception {
+        SpamAssassinConfiguration configuration = SpamAssassinConfigurationLoader.fromProperties(new PropertiesConfiguration());
+        assertThat(configuration.isEnable()).isTrue();
+    }
+
+    @Test
+    public void hostShouldReturnDefaultWhenConfigurationIsEmpty() throws Exception {
+        SpamAssassinConfiguration configuration = SpamAssassinConfigurationLoader.fromProperties(new PropertiesConfiguration());
+        assertThat(configuration.getHost().get()).isEqualTo(Host.from(SpamAssassinConfigurationLoader.DEFAULT_HOST, SpamAssassinConfigurationLoader.DEFAULT_PORT));
+    }
+
+    @Test
+    public void hostShouldReturnCustomWhenConfigurationIsProvided() throws Exception {
+        PropertiesConfiguration propertiesConfiguration = new PropertiesConfiguration();
+        String host = "10.69.1.123";
+        propertiesConfiguration.addProperty("spamassassin.host", host);
+        int port = 1783;
+        propertiesConfiguration.addProperty("spamassassin.port", port);
+
+        SpamAssassinConfiguration configuration = SpamAssassinConfigurationLoader.fromProperties(propertiesConfiguration);
+        assertThat(configuration.getHost().get()).isEqualTo(Host.from(host, port));
+    }
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org