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]