james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From btell...@apache.org
Subject [11/17] james-project git commit: MAILET-124 Add shortcut optimization on Or matcher
Date Thu, 15 Sep 2016 10:08:52 GMT
MAILET-124 Add shortcut optimization on Or matcher

It is important as it might avoid some expensive matcher execution


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

Branch: refs/heads/master
Commit: a78c8547e7b77675a6ba007f4d8979428e1d7d7b
Parents: 5636d89
Author: Benoit Tellier <btellier@linagora.com>
Authored: Thu Sep 8 14:50:00 2016 +0200
Committer: Benoit Tellier <btellier@linagora.com>
Committed: Thu Sep 15 12:05:20 2016 +0200

----------------------------------------------------------------------
 .../james/mailetcontainer/impl/matchers/Or.java  | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/a78c8547/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/matchers/Or.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/matchers/Or.java
b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/matchers/Or.java
index cc7ab84..5d4f3c1 100644
--- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/matchers/Or.java
+++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/matchers/Or.java
@@ -19,15 +19,15 @@
 
 package org.apache.james.mailetcontainer.impl.matchers;
 
-import org.apache.mailet.MailAddress;
-import org.apache.mailet.Mail;
-import org.apache.mailet.Matcher;
-
 import java.util.Collection;
-import java.util.Iterator;
-import java.util.ArrayList;
+import java.util.HashSet;
+
 import javax.mail.MessagingException;
 
+import org.apache.mailet.Mail;
+import org.apache.mailet.MailAddress;
+import org.apache.mailet.Matcher;
+
 import com.google.common.collect.ImmutableSet;
 
 public class Or extends GenericCompositeMatcher {
@@ -40,14 +40,17 @@ public class Or extends GenericCompositeMatcher {
      *         child matchers.
      */
     public Collection<MailAddress> match(Mail mail) throws MessagingException {
-        ImmutableSet.Builder<MailAddress> result = ImmutableSet.builder();
+        HashSet<MailAddress> result = new HashSet<MailAddress>();
         for (Matcher matcher : getMatchers()) {
             Collection<MailAddress> matchResult = matcher.match(mail);
             if (matchResult != null) {
                 result.addAll(matchResult);
             }
+            if (result.size() == mail.getRecipients().size()) {
+                break;
+            }
         }
-        return result.build();
+        return ImmutableSet.copyOf(result);
     }
 
 }


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


Mime
View raw message