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 bt...@apache.org on 2016/01/04 23:40:10 UTC

svn commit: r1722972 - in /james/jsieve/trunk: mailet/pom.xml mailet/src/main/java/org/apache/jsieve/mailet/SieveMailAdapter.java pom.xml

Author: btellier
Date: Mon Jan  4 22:40:10 2016
New Revision: 1722972

URL: http://svn.apache.org/viewvc?rev=1722972&view=rev
Log:
JSIEVE-73 Mailet adapter should rely on mime4j/james-utils to match against mail content

Modified:
    james/jsieve/trunk/mailet/pom.xml
    james/jsieve/trunk/mailet/src/main/java/org/apache/jsieve/mailet/SieveMailAdapter.java
    james/jsieve/trunk/pom.xml

Modified: james/jsieve/trunk/mailet/pom.xml
URL: http://svn.apache.org/viewvc/james/jsieve/trunk/mailet/pom.xml?rev=1722972&r1=1722971&r2=1722972&view=diff
==============================================================================
--- james/jsieve/trunk/mailet/pom.xml (original)
+++ james/jsieve/trunk/mailet/pom.xml Mon Jan  4 22:40:10 2016
@@ -71,11 +71,19 @@
             <groupId>org.apache.james</groupId>
             <artifactId>apache-mime4j-dom</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.james</groupId>
+            <artifactId>apache-mime4j-james-utils</artifactId>
+        </dependency>
 
         <dependency>
             <groupId>commons-logging</groupId>
             <artifactId>commons-logging</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
 
         <dependency>
             <groupId>junit</groupId>

Modified: james/jsieve/trunk/mailet/src/main/java/org/apache/jsieve/mailet/SieveMailAdapter.java
URL: http://svn.apache.org/viewvc/james/jsieve/trunk/mailet/src/main/java/org/apache/jsieve/mailet/SieveMailAdapter.java?rev=1722972&r1=1722971&r2=1722972&view=diff
==============================================================================
--- james/jsieve/trunk/mailet/src/main/java/org/apache/jsieve/mailet/SieveMailAdapter.java (original)
+++ james/jsieve/trunk/mailet/src/main/java/org/apache/jsieve/mailet/SieveMailAdapter.java Mon Jan  4 22:40:10 2016
@@ -18,6 +18,8 @@
  ****************************************************************/
 package org.apache.jsieve.mailet;
 
+import com.google.common.base.Function;
+import com.google.common.collect.Lists;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.james.mime4j.dom.address.AddressList;
@@ -25,6 +27,7 @@ import org.apache.james.mime4j.dom.addre
 import org.apache.james.mime4j.dom.address.MailboxList;
 import org.apache.james.mime4j.dom.field.ParseException;
 import org.apache.james.mime4j.field.address.DefaultAddressParser;
+import org.apache.james.mime4j.utils.search.MessageMatcher;
 import org.apache.jsieve.SieveContext;
 import org.apache.jsieve.exception.InternetAddressException;
 import org.apache.jsieve.exception.SieveException;
@@ -41,7 +44,6 @@ import org.apache.mailet.MailetContext;
 import javax.mail.Header;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -80,8 +82,6 @@ public class SieveMailAdapter implements
     
     private final Poster poster;
 
-    private String contentText;
-    
     /**
      * Constructor for SieveMailAdapter.
      * 
@@ -340,7 +340,6 @@ public class SieveMailAdapter implements
     protected void setMail(Mail mail)
     {
         fieldMail = mail;
-        contentText = null;
     }
     
     /**
@@ -431,30 +430,55 @@ public class SieveMailAdapter implements
         getMailetContext().sendMail(sender, recipients, mail);
     }
 
-
-    public boolean isInBodyText(String phraseCaseInsensitive) throws SieveMailException {
+    public boolean isInBodyText(List<String> phrasesCaseInsensitive) throws SieveMailException {
         try {
-            if (contentText == null) {
-                contentText = getMessage().getContent().toString().toLowerCase();
-            }
-            return contentText.contains(phraseCaseInsensitive);
-        } catch (MessagingException e) {
-            throw new SieveMailException(e);
-        } catch (IOException e) {
-            throw new SieveMailException(e);
+            return MessageMatcher.builder()
+                .contentTypes(Lists.newArrayList("text/plain"))
+                .includeHeaders(false)
+                .caseInsensitive(false)
+                .searchContents(Lists.transform(phrasesCaseInsensitive, new Function<String, CharSequence>() {
+                    public CharSequence apply(String s) {
+                        return s;
+                    }
+                })).build()
+                .messageMatches(getMail().getMessage().getInputStream());
+        } catch (Exception e) {
+            throw new SieveMailException("Error searching in the mail content", e);
         }
     }
 
-    public boolean isInBodyText(List<String> phrasesCaseInsensitive) throws SieveMailException {
-        throw new SieveMailException("Not yet implemented");
-    }
-
     public boolean isInBodyRaw(List<String> phrasesCaseInsensitive) throws SieveMailException {
-        throw new SieveMailException("Not yet implemented");
+        try {
+            return MessageMatcher.builder()
+                .includeHeaders(false)
+                .caseInsensitive(false)
+                .ignoringMime(true)
+                .searchContents(Lists.transform(phrasesCaseInsensitive, new Function<String, CharSequence>() {
+                    public CharSequence apply(String s) {
+                        return s;
+                    }
+                })).build()
+                .messageMatches(getMail().getMessage().getInputStream());
+        } catch (Exception e) {
+            throw new SieveMailException("Error searching in the mail content", e);
+        }
     }
 
     public boolean isInBodyContent(List<String> contentTypes, List<String> phrasesCaseInsensitive) throws SieveMailException {
-        throw new SieveMailException("Not yet implemented");
+        try {
+            return MessageMatcher.builder()
+                .contentTypes(contentTypes)
+                .includeHeaders(false)
+                .caseInsensitive(false)
+                .searchContents(Lists.transform(phrasesCaseInsensitive, new Function<String, CharSequence>() {
+                    public CharSequence apply(String s) {
+                        return s;
+                    }
+                })).build()
+                .messageMatches(getMail().getMessage().getInputStream());
+        } catch (Exception e) {
+            throw new SieveMailException("Error searching in the mail content", e);
+        }
     }
 
     public void setContext(SieveContext context) {}

Modified: james/jsieve/trunk/pom.xml
URL: http://svn.apache.org/viewvc/james/jsieve/trunk/pom.xml?rev=1722972&r1=1722971&r2=1722972&view=diff
==============================================================================
--- james/jsieve/trunk/pom.xml (original)
+++ james/jsieve/trunk/pom.xml Mon Jan  4 22:40:10 2016
@@ -89,6 +89,7 @@
         <commons-io.version>2.1</commons-io.version>
         <mockito-core.version>1.9.0</mockito-core.version>
         <assertj.version>1.7.1</assertj.version>
+        <guava.version>16.0</guava.version>
     </properties>
 
     <dependencyManagement>
@@ -150,6 +151,16 @@
                 <version>${mime4j.version}</version>
             </dependency>
             <dependency>
+                <groupId>org.apache.james</groupId>
+                <artifactId>apache-mime4j-james-utils</artifactId>
+                <version>${mime4j.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.google.guava</groupId>
+                <artifactId>guava</artifactId>
+                <version>${guava.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>commons-logging</groupId>
                 <artifactId>commons-logging</artifactId>
                 <version>1.1.1</version>



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