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 ad...@apache.org on 2017/12/12 08:48:31 UTC

[01/12] james-project git commit: JAMES-2251 Chain StringBuilder.append() calls

Repository: james-project
Updated Branches:
  refs/heads/master aee6cc7d3 -> 3bb571bf7


JAMES-2251 Chain StringBuilder.append() calls


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

Branch: refs/heads/master
Commit: c9233f18c114564d84fea3fe62622e9edc4a7c9f
Parents: 72eabca
Author: Daniel Trebbien <dt...@gmail.com>
Authored: Mon Oct 30 12:03:44 2017 -0400
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Dec 12 09:47:36 2017 +0100

----------------------------------------------------------------------
 .../org/apache/james/protocols/smtp/core/RcptCmdHandler.java  | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/c9233f18/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
index 7e00dc8..562686c 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
@@ -226,12 +226,13 @@ public class RcptCmdHandler extends AbstractHookableCmdHandler<RcptHook> impleme
     private String getContext(SMTPSession session, MailAddress recipientAddress, String recipient) {
         StringBuilder sb = new StringBuilder(128);
         if (null != recipientAddress) {
-            sb.append(" [to:" + recipientAddress.toString() + "]");
+            sb.append(" [to:").append(recipientAddress.asString()).append(']');
         } else if (null != recipient) {
-            sb.append(" [to:" + recipient + "]");
+            sb.append(" [to:").append(recipient).append(']');
         }
         if (null != session.getAttachment(SMTPSession.SENDER, State.Transaction)) {
-            sb.append(" [from:" + ((MailAddress) session.getAttachment(SMTPSession.SENDER, State.Transaction)).toString() + "]");
+            MailAddress mailAddress = (MailAddress) session.getAttachment(SMTPSession.SENDER, State.Transaction);
+            sb.append(" [from:").append(mailAddress.asString()).append(']');
         }
         return sb.toString();
     }


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


[02/12] james-project git commit: JAMES-2251 Avoid calling Collection.size()

Posted by ad...@apache.org.
JAMES-2251 Avoid calling Collection.size()

Avoiding Collection.size() is generally to be preferred because it might
be slow.


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

Branch: refs/heads/master
Commit: 0738899ee749b98166a50704660aad084b7bf7db
Parents: aee6cc7
Author: Daniel Trebbien <dt...@gmail.com>
Authored: Mon Oct 30 11:57:23 2017 -0400
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Dec 12 09:47:36 2017 +0100

----------------------------------------------------------------------
 .../org/apache/james/transport/mailets/BayesianAnalysis.java     | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/0738899e/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java
index 2d9924b..0888761 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java
@@ -374,10 +374,10 @@ public class BayesianAnalysis extends GenericMailet {
         StringBuilder sb = new StringBuilder();
         sb.append('[');
         for (int i = 0; iter.hasNext(); i++) {
-            sb.append(iter.next());
-            if (i + 1 < addresses.size()) {
+            if (i > 0) {
                 sb.append(", ");
             }
+            sb.append(iter.next());
         }
         sb.append(']');
         return sb.toString();


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


[06/12] james-project git commit: JAMES-2251 Don't convert logBuffer to a String twice

Posted by ad...@apache.org.
JAMES-2251 Don't convert logBuffer to a String twice


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

Branch: refs/heads/master
Commit: 9a06f4081691f0c13dda2b138c3bcb72fc8e700b
Parents: 4a58c3e
Author: Daniel Trebbien <dt...@gmail.com>
Authored: Mon Oct 30 12:09:55 2017 -0400
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Dec 12 09:47:37 2017 +0100

----------------------------------------------------------------------
 .../mailrepository/jdbc/JDBCMailRepository.java    | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/9a06f408/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
index d1ad86c..c18bdd4 100644
--- a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
+++ b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
@@ -265,7 +265,7 @@ public class JDBCMailRepository extends AbstractMailRepository {
                 LOGGER.debug(logBuf);
             }
         } catch (Exception e) {
-            final String message = "Failed to retrieve Store component:" + e.getMessage();
+            String message = "Failed to retrieve Store component:" + e.getMessage();
             LOGGER.error(message, e);
             throw new ConfigurationException(message, e);
         }
@@ -365,18 +365,21 @@ public class JDBCMailRepository extends AbstractMailRepository {
 
         if (hasUpdateMessageAttributesSQL && !hasRetrieveMessageAttributesSQL) {
             logBuffer.append("JDBC Mail Attributes support was activated for update but not for retrieval" + "(found 'updateMessageAttributesSQL' but not 'retrieveMessageAttributesSQL'" + "in table '").append(tableName).append("').");
-            LOGGER.error(logBuffer.toString());
-            throw new SQLException(logBuffer.toString());
+            String logBufferAsString = logBuffer.toString();
+            LOGGER.error(logBufferAsString);
+            throw new SQLException(logBufferAsString);
         }
         if (!hasUpdateMessageAttributesSQL && hasRetrieveMessageAttributesSQL) {
             logBuffer.append("JDBC Mail Attributes support was activated for retrieval but not for update" + "(found 'retrieveMessageAttributesSQL' but not 'updateMessageAttributesSQL'" + "in table '").append(tableName).append("'.");
-            LOGGER.error(logBuffer.toString());
-            throw new SQLException(logBuffer.toString());
+            String logBufferAsString = logBuffer.toString();
+            LOGGER.error(logBufferAsString);
+            throw new SQLException(logBufferAsString);
         }
         if (!hasMessageAttributesColumn && (hasUpdateMessageAttributesSQL || hasRetrieveMessageAttributesSQL)) {
             logBuffer.append("JDBC Mail Attributes support was activated but column '").append(attributesColumnName).append("' is missing in table '").append(tableName).append("'.");
-            LOGGER.error(logBuffer.toString());
-            throw new SQLException(logBuffer.toString());
+            String logBufferAsString = logBuffer.toString();
+            LOGGER.error(logBufferAsString);
+            throw new SQLException(logBufferAsString);
         }
         if (hasUpdateMessageAttributesSQL && hasRetrieveMessageAttributesSQL) {
             jdbcMailAttributesReady = true;


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


[09/12] james-project git commit: JAMES-2251 Refactor getDomainsIP()/getDomainIP() to work with Streams

Posted by ad...@apache.org.
JAMES-2251 Refactor getDomainsIP()/getDomainIP() to work with Streams

This avoids creation of temporary ImmutableLists.


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

Branch: refs/heads/master
Commit: 7d2fee7602d89761d0deb6c48615e647ded84752
Parents: 78b04fe
Author: Daniel Trebbien <dt...@gmail.com>
Authored: Wed Dec 6 17:50:44 2017 -0600
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Dec 12 09:47:38 2017 +0100

----------------------------------------------------------------------
 .../domainlist/lib/AbstractDomainList.java      | 29 ++++++++++----------
 1 file changed, 15 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/7d2fee76/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java b/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java
index 460933f..e786ab1 100644
--- a/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java
+++ b/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java
@@ -24,6 +24,7 @@ import java.net.UnknownHostException;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Locale;
+import java.util.stream.Stream;
 
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
@@ -158,8 +159,9 @@ public abstract class AbstractDomainList implements DomainList, Configurable {
         // https://stackoverflow.com/questions/37919648/concatenating-immutablelists
         // A work-around is to use Iterables.concat() until something like
         // https://github.com/google/guava/issues/1029 is implemented.
-        ImmutableList<String> detectedIps = detectIps(Iterables.concat(domains, detectedDomains));
-        Iterable<String> allDomains = Iterables.concat(domains, detectedDomains, detectedIps);
+        Iterable<String> domainsWithoutIp = (detectedDomains.isEmpty() ? domains : Iterables.concat(domains, detectedDomains));
+        ImmutableList<String> detectedIps = detectIps(domainsWithoutIp);
+        ImmutableList<String> allDomains = ImmutableList.copyOf(detectedIps.isEmpty() ? domainsWithoutIp : Iterables.concat(domainsWithoutIp, detectedIps));
 
         if (LOGGER.isDebugEnabled()) {
             for (String domain : allDomains) {
@@ -167,12 +169,13 @@ public abstract class AbstractDomainList implements DomainList, Configurable {
             }
         }
 
-        return ImmutableList.copyOf(allDomains);
+        return allDomains;
     }
 
     private ImmutableList<String> detectIps(Iterable<String> domains) {
         if (autoDetectIP) {
-            return getDomainsIP(domains, dns, LOGGER);
+            return getDomainsIpStream(domains, dns, LOGGER)
+                .collect(Guavate.toImmutableList());
         }
         return ImmutableList.of();
     }
@@ -195,31 +198,29 @@ public abstract class AbstractDomainList implements DomainList, Configurable {
     }
 
     /**
-     * Return a List which holds all ipAddress of the domains in the given List
+     * Return a stream of all IP addresses of the given domains.
      * 
      * @param domains
      *            Iterable of domains
-     * @return domainIP List of ipaddress for domains
+     * @return Stream of ipaddress for domains
      */
-    private static ImmutableList<String> getDomainsIP(Iterable<String> domains, DNSService dns, Logger log) {
+    private static Stream<String> getDomainsIpStream(Iterable<String> domains, DNSService dns, Logger log) {
         return Guavate.stream(domains)
-            .flatMap(domain -> getDomainIP(domain, dns, log).stream())
-            .distinct()
-            .collect(Guavate.toImmutableList());
+            .flatMap(domain -> getDomainIpStream(domain, dns, log))
+            .distinct();
     }
 
     /**
      * @see #getDomainsIP(List, DNSService, Logger)
      */
-    private static ImmutableList<String> getDomainIP(String domain, DNSService dns, Logger log) {
+    private static Stream<String> getDomainIpStream(String domain, DNSService dns, Logger log) {
         try {
             return dns.getAllByName(domain).stream()
                 .map(InetAddress::getHostAddress)
-                .distinct()
-                .collect(Guavate.toImmutableList());
+                .distinct();
         } catch (UnknownHostException e) {
             log.error("Cannot get IP address(es) for " + domain);
-            return ImmutableList.of();
+            return Stream.of();
         }
     }
 


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


[07/12] james-project git commit: JAMES-2251 Fix potential undefined behavior

Posted by ad...@apache.org.
JAMES-2251 Fix potential undefined behavior

Because attributes is a Hashtable, iteration over the keys/keySet
collection view should be manually synchronized.


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

Branch: refs/heads/master
Commit: 4a58c3e9d1af852460fa6717d7d5af8d6b30b7aa
Parents: c9233f1
Author: Daniel Trebbien <dt...@gmail.com>
Authored: Mon Oct 30 12:06:41 2017 -0400
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Dec 12 09:47:37 2017 +0100

----------------------------------------------------------------------
 .../james/mailetcontainer/impl/JamesMailetContext.java    | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/4a58c3e9/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
index 51d01f9..b013414 100644
--- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
+++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
@@ -19,16 +19,14 @@
 
 package org.apache.james.mailetcontainer.impl;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
-import java.util.Enumeration;
 import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
-import java.util.Optional;
-import java.util.Vector;
 
 import javax.inject.Inject;
 import javax.mail.Address;
@@ -132,9 +130,9 @@ public class JamesMailetContext implements MailetContext, Configurable {
 
     @Override
     public Iterator<String> getAttributeNames() {
-        Vector<String> names = new Vector<>();
-        for (Enumeration<String> e = attributes.keys(); e.hasMoreElements(); ) {
-            names.add(e.nextElement());
+        final List<String> names;
+        synchronized (attributes) {
+            names = new ArrayList<>(attributes.keySet());
         }
         return names.iterator();
     }


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


[08/12] james-project git commit: JAMES-2251 Switch to ConcurrentHashMap

Posted by ad...@apache.org.
JAMES-2251 Switch to ConcurrentHashMap


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

Branch: refs/heads/master
Commit: 3bb571bf74e25d71e46165c2da25d2436b8d7a56
Parents: 62619e2
Author: Daniel Trebbien <dt...@gmail.com>
Authored: Thu Dec 7 11:59:58 2017 -0600
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Dec 12 09:47:38 2017 +0100

----------------------------------------------------------------------
 .../apache/james/mailetcontainer/impl/JamesMailetContext.java   | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/3bb571bf/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
index 34db500..c4d34bb 100644
--- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
+++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
@@ -19,15 +19,14 @@
 
 package org.apache.james.mailetcontainer.impl;
 
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 import javax.inject.Inject;
 import javax.mail.Address;
@@ -70,7 +69,7 @@ public class JamesMailetContext implements MailetContext, Configurable {
     /**
      * A hash table of server attributes These are the MailetContext attributes
      */
-    private final Map<String, Object> attributes = new HashMap<>();
+    private final Map<String, Object> attributes = new ConcurrentHashMap<>();
     protected DNSService dns;
 
     private UsersRepository localusers;


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


[05/12] james-project git commit: JAMES-2251 Avoid creating mutableDomains in AbstractDomainList.getDomains()

Posted by ad...@apache.org.
JAMES-2251 Avoid creating mutableDomains in AbstractDomainList.getDomains()


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

Branch: refs/heads/master
Commit: 9c871fef63c0c7cff6dbd460e4e77103a67a97b5
Parents: f4b6276
Author: Daniel Trebbien <dt...@gmail.com>
Authored: Thu Nov 9 08:20:39 2017 -0600
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Dec 12 09:47:37 2017 +0100

----------------------------------------------------------------------
 .../domainlist/lib/AbstractDomainList.java      | 35 ++++++++++----------
 1 file changed, 18 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/9c871fef/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java b/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java
index 4582006..460933f 100644
--- a/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java
+++ b/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java
@@ -21,7 +21,6 @@ package org.apache.james.domainlist.lib;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Locale;
@@ -40,6 +39,7 @@ import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Strings;
 import com.google.common.base.Throwables;
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
 
 /**
  * All implementations of the DomainList interface should extends this abstract
@@ -151,32 +151,33 @@ public abstract class AbstractDomainList implements DomainList, Configurable {
     }
 
     @Override
-    public List<String> getDomains() throws DomainListException {
+    public ImmutableList<String> getDomains() throws DomainListException {
         List<String> domains = getDomainListInternal();
-
-        // create mutable copy, some subclasses return ImmutableList
-        ArrayList<String> mutableDomains = new ArrayList<>(domains);
-        List<String> detectedDomains = detectDomains();
-        mutableDomains.addAll(detectedDomains);
-        mutableDomains.addAll(detectIps(mutableDomains));
+        ImmutableList<String> detectedDomains = detectDomains();
+        // Guava does not support concatenating ImmutableLists at this time:
+        // https://stackoverflow.com/questions/37919648/concatenating-immutablelists
+        // A work-around is to use Iterables.concat() until something like
+        // https://github.com/google/guava/issues/1029 is implemented.
+        ImmutableList<String> detectedIps = detectIps(Iterables.concat(domains, detectedDomains));
+        Iterable<String> allDomains = Iterables.concat(domains, detectedDomains, detectedIps);
 
         if (LOGGER.isDebugEnabled()) {
-            for (String domain : mutableDomains) {
+            for (String domain : allDomains) {
                 LOGGER.debug("Handling mail for: " + domain);
             }
         }
 
-        return ImmutableList.copyOf(mutableDomains);
+        return ImmutableList.copyOf(allDomains);
     }
 
-    private List<String> detectIps(ArrayList<String> mutableDomains) {
+    private ImmutableList<String> detectIps(Iterable<String> domains) {
         if (autoDetectIP) {
-            return getDomainsIP(mutableDomains, dns, LOGGER);
+            return getDomainsIP(domains, dns, LOGGER);
         }
         return ImmutableList.of();
     }
 
-    private List<String> detectDomains() {
+    private ImmutableList<String> detectDomains() {
         if (autoDetect) {
             String hostName;
             try {
@@ -197,11 +198,11 @@ public abstract class AbstractDomainList implements DomainList, Configurable {
      * Return a List which holds all ipAddress of the domains in the given List
      * 
      * @param domains
-     *            List of domains
+     *            Iterable of domains
      * @return domainIP List of ipaddress for domains
      */
-    private static List<String> getDomainsIP(List<String> domains, DNSService dns, Logger log) {
-        return domains.stream()
+    private static ImmutableList<String> getDomainsIP(Iterable<String> domains, DNSService dns, Logger log) {
+        return Guavate.stream(domains)
             .flatMap(domain -> getDomainIP(domain, dns, log).stream())
             .distinct()
             .collect(Guavate.toImmutableList());
@@ -210,7 +211,7 @@ public abstract class AbstractDomainList implements DomainList, Configurable {
     /**
      * @see #getDomainsIP(List, DNSService, Logger)
      */
-    private static List<String> getDomainIP(String domain, DNSService dns, Logger log) {
+    private static ImmutableList<String> getDomainIP(String domain, DNSService dns, Logger log) {
         try {
             return dns.getAllByName(domain).stream()
                 .map(InetAddress::getHostAddress)


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


[10/12] james-project git commit: JAMES-2251 Switch to using Guava's Joiner

Posted by ad...@apache.org.
JAMES-2251 Switch to using Guava's Joiner


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

Branch: refs/heads/master
Commit: 23b9690968f472ff8fea89927ab01a98a0526aac
Parents: 9c871fe
Author: Daniel Trebbien <dt...@gmail.com>
Authored: Wed Dec 6 12:16:47 2017 -0600
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Dec 12 09:47:38 2017 +0100

----------------------------------------------------------------------
 .../apache/james/transport/mailets/BayesianAnalysis.java | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/23b96909/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java
index 0888761..69845ca 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java
@@ -25,7 +25,6 @@ import java.io.StringReader;
 import java.sql.Connection;
 import java.text.DecimalFormat;
 import java.util.Collection;
-import java.util.Iterator;
 
 import javax.inject.Inject;
 import javax.mail.MessagingException;
@@ -43,6 +42,8 @@ import org.apache.mailet.base.RFC2822Headers;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Joiner;
+
 /**
  * <p>
  * Spam detection mailet using bayesian analysis techniques.
@@ -370,15 +371,9 @@ public class BayesianAnalysis extends GenericMailet {
             return "null";
         }
 
-        Iterator<MailAddress> iter = addresses.iterator();
         StringBuilder sb = new StringBuilder();
         sb.append('[');
-        for (int i = 0; iter.hasNext(); i++) {
-            if (i > 0) {
-                sb.append(", ");
-            }
-            sb.append(iter.next());
-        }
+        Joiner.on(", ").appendTo(sb, addresses);
         sb.append(']');
         return sb.toString();
     }


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


[11/12] james-project git commit: JAMES-2251 Always perform the concatenation

Posted by ad...@apache.org.
JAMES-2251 Always perform the concatenation


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

Branch: refs/heads/master
Commit: 62619e28b2c45da024eb2b56192c889f7453dbb9
Parents: 7d2fee7
Author: Daniel Trebbien <dt...@gmail.com>
Authored: Thu Dec 7 11:56:59 2017 -0600
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Dec 12 09:47:38 2017 +0100

----------------------------------------------------------------------
 .../java/org/apache/james/domainlist/lib/AbstractDomainList.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/62619e28/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java b/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java
index e786ab1..9184a6b 100644
--- a/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java
+++ b/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/AbstractDomainList.java
@@ -159,9 +159,9 @@ public abstract class AbstractDomainList implements DomainList, Configurable {
         // https://stackoverflow.com/questions/37919648/concatenating-immutablelists
         // A work-around is to use Iterables.concat() until something like
         // https://github.com/google/guava/issues/1029 is implemented.
-        Iterable<String> domainsWithoutIp = (detectedDomains.isEmpty() ? domains : Iterables.concat(domains, detectedDomains));
+        Iterable<String> domainsWithoutIp = Iterables.concat(domains, detectedDomains);
         ImmutableList<String> detectedIps = detectIps(domainsWithoutIp);
-        ImmutableList<String> allDomains = ImmutableList.copyOf(detectedIps.isEmpty() ? domainsWithoutIp : Iterables.concat(domainsWithoutIp, detectedIps));
+        ImmutableList<String> allDomains = ImmutableList.copyOf(Iterables.concat(domainsWithoutIp, detectedIps));
 
         if (LOGGER.isDebugEnabled()) {
             for (String domain : allDomains) {


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


[12/12] james-project git commit: JAMES-2251 Switch to HashMap

Posted by ad...@apache.org.
JAMES-2251 Switch to HashMap

Using a synchronized collection appears to be unnecessary.


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

Branch: refs/heads/master
Commit: 78b04fed9f6d53bda65cb68674c40e8b5af5e16c
Parents: 23b9690
Author: Daniel Trebbien <dt...@gmail.com>
Authored: Wed Dec 6 17:45:11 2017 -0600
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Dec 12 09:47:38 2017 +0100

----------------------------------------------------------------------
 .../james/mailetcontainer/impl/JamesMailetContext.java | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/78b04fed/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
index b013414..34db500 100644
--- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
+++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
@@ -22,11 +22,12 @@ package org.apache.james.mailetcontainer.impl;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 
 import javax.inject.Inject;
 import javax.mail.Address;
@@ -60,8 +61,6 @@ import org.apache.mailet.base.RFC2822Headers;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.github.fge.lambdas.Throwing;
-import com.github.fge.lambdas.consumers.ConsumerChainer;
 import com.google.common.collect.ImmutableSet;
 
 @SuppressWarnings("deprecation")
@@ -71,7 +70,7 @@ public class JamesMailetContext implements MailetContext, Configurable {
     /**
      * A hash table of server attributes These are the MailetContext attributes
      */
-    private final Hashtable<String, Object> attributes = new Hashtable<>();
+    private final Map<String, Object> attributes = new HashMap<>();
     protected DNSService dns;
 
     private UsersRepository localusers;
@@ -130,11 +129,7 @@ public class JamesMailetContext implements MailetContext, Configurable {
 
     @Override
     public Iterator<String> getAttributeNames() {
-        final List<String> names;
-        synchronized (attributes) {
-            names = new ArrayList<>(attributes.keySet());
-        }
-        return names.iterator();
+        return attributes.keySet().iterator();
     }
 
     /**


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


[03/12] james-project git commit: JAMES-2251 Use ArrayList instead of obsolete Vector

Posted by ad...@apache.org.
JAMES-2251 Use ArrayList instead of obsolete Vector

The thread safety provided by Vector is not needed.


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

Branch: refs/heads/master
Commit: 72eabcad5af3ad6b4527a08ee92119e04953cc2c
Parents: 0738899
Author: Daniel Trebbien <dt...@gmail.com>
Authored: Mon Oct 30 12:01:36 2017 -0400
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Dec 12 09:47:36 2017 +0100

----------------------------------------------------------------------
 .../apache/james/transport/mailets/delivery/MailDispatcher.java  | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/72eabcad/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java
index f4743cb..6611330 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java
@@ -18,11 +18,11 @@
  ****************************************************************/
 package org.apache.james.transport.mailets.delivery;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
-import java.util.Vector;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
@@ -115,7 +115,7 @@ public class MailDispatcher {
     }
 
     private Collection<MailAddress> deliver(Mail mail, MimeMessage message) {
-        Collection<MailAddress> errors = new Vector<>();
+        Collection<MailAddress> errors = new ArrayList<>();
         for (MailAddress recipient : mail.getRecipients()) {
             try {
                 Map<String, List<String>> savedHeaders = saveHeaders(mail, recipient);


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


[04/12] james-project git commit: JAMES-2251 Switch over to using ParameterMetaData.getParameterCount()

Posted by ad...@apache.org.
JAMES-2251 Switch over to using ParameterMetaData.getParameterCount()


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

Branch: refs/heads/master
Commit: f4b62766bcafe6424567bd367c6566d5093f85e7
Parents: 9a06f40
Author: Daniel Trebbien <dt...@gmail.com>
Authored: Mon Oct 30 12:11:18 2017 -0400
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Dec 12 09:47:37 2017 +0100

----------------------------------------------------------------------
 .../mailrepository/jdbc/JDBCMailRepository.java | 21 +-------------------
 1 file changed, 1 insertion(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/f4b62766/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
index c18bdd4..9a67212 100644
--- a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
+++ b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/JDBCMailRepository.java
@@ -543,8 +543,8 @@ public class JDBCMailRepository extends AbstractMailRepository {
                 PreparedStatement insertMessage = null;
                 try {
                     String insertMessageSQL = sqlQueries.getSqlString("insertMessageSQL", true);
-                    int number_of_parameters = getNumberOfParameters(insertMessageSQL);
                     insertMessage = conn.prepareStatement(insertMessageSQL);
+                    int number_of_parameters = insertMessage.getParameterMetaData().getParameterCount();
                     insertMessage.setString(1, mc.getName());
                     insertMessage.setString(2, repositoryName);
                     insertMessage.setString(3, mc.getState());
@@ -825,23 +825,4 @@ public class JDBCMailRepository extends AbstractMailRepository {
         }
         return result;
     }
-
-    /**
-     * This method calculates number of parameters in a prepared statement SQL
-     * String. It does so by counting the number of '?' in the string
-     * 
-     * @param sqlstring
-     *            to return parameter count for
-     * @return number of parameters
-     **/
-    private int getNumberOfParameters(String sqlstring) {
-        // it is alas a java 1.4 feature to be able to call
-        // getParameterMetaData which could provide us with the parameterCount
-        char[] chars = sqlstring.toCharArray();
-        int count = 0;
-        for (char aChar : chars) {
-            count += aChar == '?' ? 1 : 0;
-        }
-        return count;
-    }
 }


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