Hi all,
I encountered a bug in the MailboxQuery class, posted as the following
ticket: https://issues.apache.org/jira/browse/JAMES-1566 . It occures
for folder names which contain unclosed parentheses (like
"Folder.foo(bar") and will raise the following exception:
java.util.regex.PatternSyntaxException: Unclosed group near index 13
Folder.foo(bar
^
at java.util.regex.Pattern.error(Pattern.java:1955)
at java.util.regex.Pattern.accept(Pattern.java:1813)
at java.util.regex.Pattern.group0(Pattern.java:2908)
at java.util.regex.Pattern.sequence(Pattern.java:2051)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.compile(Pattern.java:1696)
at java.util.regex.Pattern.<init>(Pattern.java:1351)
at java.util.regex.Pattern.compile(Pattern.java:1028)
at
org.apache.james.mailbox.model.MailboxQuery.<init>(MailboxQuery.java:72)
at
org.apache.james.imap.processor.ListProcessor.doProcess(ListProcessor.java:175)
[...]
A possible workaround is to always treat the whole folder name literally
and only replace the wildcard characters. I made a patch which should
solve the problem.
Best regards
Thomas
### Eclipse Workspace Patch 1.0
#P mailbox-trunk-temp
Index: api/src/main/java/org/apache/james/mailbox/model/MailboxQuery.java
===================================================================
--- api/src/main/java/org/apache/james/mailbox/model/MailboxQuery.java
(revision 1651383)
+++ api/src/main/java/org/apache/james/mailbox/model/MailboxQuery.java
(working copy)
@@ -68,8 +68,11 @@
}
this.pathDelimiter = pathDelimiter;
+ //escape the whole string and replace the wildcard characters
+ String escapedRegex = ("\\Q" + this.expression +
"\\E").replace(""+getFreeWildcard(), "\\E.*\\Q").replace(""+getLocalWildcard(),
"\\E[^\\Q" + pathDelimiter + "\\E]*\\Q" );
+
// Compile some pattern which is used later
- pattern = Pattern.compile(this.expression.replaceAll("\\" +
pathDelimiter ,"\\\\" + pathDelimiter).replaceAll("\\*",
"\\.\\*").replaceAll("\\%", "[^\\" + pathDelimiter + "]*"));
+ pattern = Pattern.compile(escapedRegex);
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]