noel        2003/08/28 09:12:37

  Modified:    src/java/org/apache/james/transport/matchers Tag:
                        branch_2_1_fcs GenericRegexMatcher.java
                        RecipientIsRegex.java SenderIsRegex.java
  Log:
  As per ORO documentation (and code), the Perl5Matcher is not defined to be 
thread-safe.  Also, patterns need to be compiled as READ-ONLY if they are to be used 
with multiple matchers (e.g, per-thread).  Finally, for our purposes, treat data in 
single line mode.
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.1.2.4   +4 -3      
james-server/src/java/org/apache/james/transport/matchers/GenericRegexMatcher.java
  
  Index: GenericRegexMatcher.java
  ===================================================================
  RCS file: 
/home/cvs/james-server/src/java/org/apache/james/transport/matchers/GenericRegexMatcher.java,v
  retrieving revision 1.1.2.3
  retrieving revision 1.1.2.4
  diff -u -r1.1.2.3 -r1.1.2.4
  --- GenericRegexMatcher.java  8 Mar 2003 21:54:09 -0000       1.1.2.3
  +++ GenericRegexMatcher.java  28 Aug 2003 16:12:37 -0000      1.1.2.4
  @@ -85,16 +85,14 @@
    */
   
   abstract public class GenericRegexMatcher extends GenericMatcher {
  -    protected Perl5Matcher matcher;
       protected Object[][] patterns;
   
       public void compile(Object[][] patterns) throws MalformedPatternException {
           // compile a bunch of regular expressions
           this.patterns = patterns;
  -        matcher = new Perl5Matcher();
           for (int i = 0; i < patterns.length; i++) {
               String pattern = (String)patterns[i][1];
  -            patterns[i][1] = new Perl5Compiler().compile(pattern);
  +            patterns[i][1] = new Perl5Compiler().compile(pattern, 
Perl5Compiler.READ_ONLY_MASK | Perl5Compiler.SINGLELINE_MASK);
           }
       }
   
  @@ -102,6 +100,7 @@
   
       public Collection match(Mail mail) throws MessagingException {
           MimeMessage message = mail.getMessage();
  +        Perl5Matcher matcher = new Perl5Matcher();
   
           //Loop through all the patterns
           if (patterns != null) for (int i = 0; i < patterns.length; i++) {
  @@ -114,8 +113,10 @@
               //Loop through the header values
               if (headers != null) for (int j = 0; j < headers.length; j++) {
                   if (matcher.matches(headers[j], pattern)) {
  +                    // log("Match: " + headerName + "[" + j + "]: " + headers[j]);
                       return mail.getRecipients();
                   }
  +                //log("       " + headerName + "[" + j + "]: " + headers[j]);
               }
           }
           return null;
  
  
  
  1.1.2.3   +4 -6      
james-server/src/java/org/apache/james/transport/matchers/RecipientIsRegex.java
  
  Index: RecipientIsRegex.java
  ===================================================================
  RCS file: 
/home/cvs/james-server/src/java/org/apache/james/transport/matchers/RecipientIsRegex.java,v
  retrieving revision 1.1.2.2
  retrieving revision 1.1.2.3
  diff -u -r1.1.2.2 -r1.1.2.3
  --- RecipientIsRegex.java     23 Jun 2003 18:51:39 -0000      1.1.2.2
  +++ RecipientIsRegex.java     28 Aug 2003 16:12:37 -0000      1.1.2.3
  @@ -82,10 +82,6 @@
    */
   
   public class RecipientIsRegex extends GenericRecipientMatcher {
  -
  -   // Create Perl5Compiler and Perl5Matcher instances.
  -    Perl5Compiler compiler = new Perl5Compiler();
  -    Perl5Matcher matcher  = new Perl5Matcher();
       Pattern pattern   = null;
   
       public void init() throws javax.mail.MessagingException {
  @@ -95,8 +91,9 @@
           }
           
           patternString = patternString.trim();
  +        Perl5Compiler compiler = new Perl5Compiler();
           try {
  -            pattern = compiler.compile(patternString);
  +            pattern = compiler.compile(patternString, Perl5Compiler.READ_ONLY_MASK);
           } catch(MalformedPatternException mpe) {
               throw new MessagingException("Malformed pattern: " + patternString, 
mpe);
           }
  @@ -104,6 +101,7 @@
   
       public boolean matchRecipient(MailAddress recipient) {
           String myRecipient = recipient.toString();
  +        Perl5Matcher matcher  = new Perl5Matcher();
           if (matcher.matches(myRecipient, pattern)){
               return true;
           } else {
  
  
  
  1.1.2.2   +4 -6      
james-server/src/java/org/apache/james/transport/matchers/SenderIsRegex.java
  
  Index: SenderIsRegex.java
  ===================================================================
  RCS file: 
/home/cvs/james-server/src/java/org/apache/james/transport/matchers/SenderIsRegex.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- SenderIsRegex.java        23 Jun 2003 18:51:14 -0000      1.1.2.1
  +++ SenderIsRegex.java        28 Aug 2003 16:12:37 -0000      1.1.2.2
  @@ -91,10 +91,6 @@
    * @since 2.2.0
    */
   public class SenderIsRegex extends GenericMatcher {
  -
  -   // Create Perl5Compiler and Perl5Matcher instances.
  -    Perl5Compiler compiler = new Perl5Compiler();
  -    Perl5Matcher matcher  = new Perl5Matcher();
       Pattern pattern   = null;
   
       public void init() throws MessagingException {
  @@ -104,8 +100,9 @@
           }
           
           patternString = patternString.trim();
  +        Perl5Compiler compiler = new Perl5Compiler();
           try {
  -            pattern = compiler.compile(patternString);
  +            pattern = compiler.compile(patternString, Perl5Compiler.READ_ONLY_MASK);
           } catch(MalformedPatternException mpe) {
               throw new MessagingException("Malformed pattern: " + patternString, 
mpe);
           }
  @@ -117,6 +114,7 @@
               return null;
           }
           String senderString = mailAddress.toString();
  +        Perl5Matcher matcher  = new Perl5Matcher();
           if (matcher.matches(senderString, pattern)) {
               return mail.getRecipients();
           }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to