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 er...@apache.org on 2015/05/06 09:32:26 UTC
svn commit: r1677940 - in /james/mailbox/trunk: api/pom.xml
api/src/main/java/org/apache/james/mailbox/model/MailboxQuery.java pom.xml
Author: eric
Date: Wed May 6 07:32:25 2015
New Revision: 1677940
URL: http://svn.apache.org/r1677940
Log:
Better handle * and % characters in MailboxQuery, with a test, patch contributed by Thomas Söhngen (JAMES-1566)
Modified:
james/mailbox/trunk/api/pom.xml
james/mailbox/trunk/api/src/main/java/org/apache/james/mailbox/model/MailboxQuery.java
james/mailbox/trunk/pom.xml
Modified: james/mailbox/trunk/api/pom.xml
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/api/pom.xml?rev=1677940&r1=1677939&r2=1677940&view=diff
==============================================================================
--- james/mailbox/trunk/api/pom.xml (original)
+++ james/mailbox/trunk/api/pom.xml Wed May 6 07:32:25 2015
@@ -60,5 +60,10 @@
<artifactId>jmock-junit4</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
Modified: james/mailbox/trunk/api/src/main/java/org/apache/james/mailbox/model/MailboxQuery.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/api/src/main/java/org/apache/james/mailbox/model/MailboxQuery.java?rev=1677940&r1=1677939&r2=1677940&view=diff
==============================================================================
--- james/mailbox/trunk/api/src/main/java/org/apache/james/mailbox/model/MailboxQuery.java (original)
+++ james/mailbox/trunk/api/src/main/java/org/apache/james/mailbox/model/MailboxQuery.java Wed May 6 07:32:25 2015
@@ -19,6 +19,7 @@
package org.apache.james.mailbox.model;
+import java.util.StringTokenizer;
import java.util.regex.Pattern;
@@ -67,9 +68,7 @@ public final class MailboxQuery {
this.expression = expression;
}
this.pathDelimiter = pathDelimiter;
-
- // Compile some pattern which is used later
- pattern = Pattern.compile(this.expression.replaceAll("\\" + pathDelimiter ,"\\\\" + pathDelimiter).replaceAll("\\*", "\\.\\*").replaceAll("\\%", "[^\\" + pathDelimiter + "]*"));
+ pattern = constructEscapedRegex();
}
/**
@@ -189,4 +188,25 @@ public final class MailboxQuery {
return "MailboxExpression [ " + "base = " + this.base + TAB + "expression = " + this.expression + TAB + "freeWildcard = " + this.getFreeWildcard() + TAB + "localWildcard = " + this.getLocalWildcard() + TAB + " ]";
}
+
+ private Pattern constructEscapedRegex() {
+ StringBuilder stringBuilder = new StringBuilder();
+ StringTokenizer tokenizer = new StringTokenizer(expression, "*%", true);
+ while (tokenizer.hasMoreTokens()) {
+ stringBuilder.append(getRegexPartAssociatedWithToken(tokenizer));
+ }
+ return Pattern.compile(stringBuilder.toString());
+ }
+
+ private String getRegexPartAssociatedWithToken(StringTokenizer tokenizer) {
+ String token = tokenizer.nextToken();
+ if (token.equals("*")) {
+ return ".*";
+ } else if (token.equals("%")) {
+ return "[^" + pathDelimiter + "]*";
+ } else {
+ return Pattern.quote(token);
+ }
+ }
+
}
Modified: james/mailbox/trunk/pom.xml
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/pom.xml?rev=1677940&r1=1677939&r2=1677940&view=diff
==============================================================================
--- james/mailbox/trunk/pom.xml (original)
+++ james/mailbox/trunk/pom.xml Wed May 6 07:32:25 2015
@@ -121,6 +121,7 @@
<guava.version>13.0</guava.version>
<cassandra-driver-core.version>2.0.1</cassandra-driver-core.version>
<cassandra-unit.version>2.0.2.1</cassandra-unit.version>
+ <assertj.version>2.0.0</assertj.version>
</properties>
<dependencyManagement>
@@ -408,7 +409,11 @@
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
-
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <version>${assertj.version}</version>
+ </dependency>
<!--
END Testing
-->
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org