Author: rdonkin
Date: Sun Nov 25 06:24:59 2007
New Revision: 597992
URL: http://svn.apache.org/viewvc?rev=597992&view=rev
Log:
Replaced strings in mailboxmanager.list interface with MailboxExpression
object.
Added:
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxExpression.java
- copied, changed from r597976,
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/MailboxExpression.java
james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/manager/
james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/manager/MailboxExpressionTest.java
- copied, changed from r597976,
james/server/trunk/torque-mailboxmanager-function/src/test/java/org/apache/james/mailboxmanager/torque/MailboxExpressionTest.java
Removed:
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/MailboxExpression.java
james/server/trunk/torque-mailboxmanager-function/src/test/java/org/apache/james/mailboxmanager/torque/MailboxExpressionTest.java
Modified:
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/VirtualMailboxManager.java
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailstore/MailStoreMailboxManager.java
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxManager.java
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractListingProcessor.java
james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/ListCommand.java
james/server/trunk/phoenix-deployment/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java
james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/AbstractMailboxManagerSelfTestCase.java
james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/impl/VirtualMailboxManagerTest.java
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java
Modified:
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/VirtualMailboxManager.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/VirtualMailboxManager.java?rev=597992&r1=597991&r2=597992&view=diff
==============================================================================
---
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/VirtualMailboxManager.java
(original)
+++
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/VirtualMailboxManager.java
Sun Nov 25 06:24:59 2007
@@ -33,6 +33,7 @@
import org.apache.james.mailboxmanager.mailbox.GeneralMailboxSession;
import org.apache.james.mailboxmanager.mailbox.ImapMailboxSession;
import org.apache.james.mailboxmanager.mailbox.MailboxSession;
+import org.apache.james.mailboxmanager.manager.MailboxExpression;
import org.apache.james.mailboxmanager.manager.MailboxManager;
import org.apache.james.mailboxmanager.manager.MailboxManagerFactory;
import org.apache.james.services.User;
@@ -128,7 +129,7 @@
return getMailboxManager(mailboxName).getMailboxSession(mailboxName,
autoCreate);
}
- public ListResult[] list(String base, String expression, boolean
subscribed)
+ public ListResult[] list(MailboxExpression expression)
throws MailboxManagerException {
// TODO call only base matching managers
List listResults = new ArrayList();
@@ -140,8 +141,7 @@
.getValue();
MailboxManager mailboxManager = mailboxManagerFactory
.getMailboxManagerInstance(user);
- ListResult[] thisListResults = mailboxManager.list(base,
- expression, subscribed);
+ ListResult[] thisListResults = mailboxManager.list(expression);
for (int i = 0; i < thisListResults.length; i++) {
listResults.add(thisListResults[i]);
}
Modified:
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailstore/MailStoreMailboxManager.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailstore/MailStoreMailboxManager.java?rev=597992&r1=597991&r2=597992&view=diff
==============================================================================
---
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailstore/MailStoreMailboxManager.java
(original)
+++
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailstore/MailStoreMailboxManager.java
Sun Nov 25 06:24:59 2007
@@ -27,6 +27,7 @@
import org.apache.james.mailboxmanager.mailbox.GeneralMailboxSession;
import org.apache.james.mailboxmanager.mailbox.ImapMailboxSession;
import org.apache.james.mailboxmanager.mailbox.MailboxSession;
+import org.apache.james.mailboxmanager.manager.MailboxExpression;
import org.apache.james.mailboxmanager.manager.MailboxManager;
import org.apache.james.mailboxmanager.repository.MailRepositoryMailboxSession;
import org.apache.james.services.User;
@@ -74,7 +75,7 @@
return mailstoreMailboxCache.getMailboxSession(mailboxName);
}
- public ListResult[] list(String base, String expression, boolean
subscribed)
+ public ListResult[] list(MailboxExpression expression)
throws MailboxManagerException {
return new ListResult[0];
}
Copied:
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxExpression.java
(from r597976,
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/MailboxExpression.java)
URL:
http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxExpression.java?p2=james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxExpression.java&p1=james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/MailboxExpression.java&r1=597976&r2=597992&rev=597992&view=diff
==============================================================================
---
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/MailboxExpression.java
(original)
+++
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxExpression.java
Sun Nov 25 06:24:59 2007
@@ -17,8 +17,11 @@
* under the License. *
****************************************************************/
-package org.apache.james.mailboxmanager.torque;
+package org.apache.james.mailboxmanager.manager;
+/**
+ * Expresses select criteria for mailboxes.
+ */
public class MailboxExpression {
private final String base;
@@ -87,7 +90,7 @@
public final char getLocalWildcard() {
return localWildcard;
}
-
+
/**
* Is the given name a match for [EMAIL PROTECTED] #getExpression()}?
* @param name name to be matched
Modified:
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxManager.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxManager.java?rev=597992&r1=597991&r2=597992&view=diff
==============================================================================
---
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxManager.java
(original)
+++
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxManager.java
Sun Nov 25 06:24:59 2007
@@ -116,18 +116,12 @@
/**
* TODO: Expression requires parsing. Probably easier for the caller to
* parse the expression into an object representation and use that instead.
- * @param base
- * hierarchy starting point like #mail.user1 to list mailboxes
of
- * user1
- * @param expression
- * allows the use of wildcards
- * @param subscribed
- * if true, only list subscribed mailboxes (needs interaction
- * with the user-object)
+ * @param expression <code>MailboxExpression</code> used to select
mailboxes
+ * to be returned
* @throws MailboxManagerException
*/
- ListResult[] list(String base, String expression, boolean subscribed)
throws MailboxManagerException;
+ ListResult[] list(MailboxExpression expression) throws
MailboxManagerException;
/**
* could be implemented later. There could be enviroments where
Copied:
james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/manager/MailboxExpressionTest.java
(from r597976,
james/server/trunk/torque-mailboxmanager-function/src/test/java/org/apache/james/mailboxmanager/torque/MailboxExpressionTest.java)
URL:
http://svn.apache.org/viewvc/james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/manager/MailboxExpressionTest.java?p2=james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/manager/MailboxExpressionTest.java&p1=james/server/trunk/torque-mailboxmanager-function/src/test/java/org/apache/james/mailboxmanager/torque/MailboxExpressionTest.java&r1=597976&r2=597992&rev=597992&view=diff
==============================================================================
---
james/server/trunk/torque-mailboxmanager-function/src/test/java/org/apache/james/mailboxmanager/torque/MailboxExpressionTest.java
(original)
+++
james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/manager/MailboxExpressionTest.java
Sun Nov 25 06:24:59 2007
@@ -17,7 +17,9 @@
* under the License. *
****************************************************************/
-package org.apache.james.mailboxmanager.torque;
+package org.apache.james.mailboxmanager.manager;
+
+import org.apache.james.mailboxmanager.manager.MailboxExpression;
import junit.framework.TestCase;
Modified:
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractListingProcessor.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractListingProcessor.java?rev=597992&r1=597991&r2=597992&view=diff
==============================================================================
---
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractListingProcessor.java
(original)
+++
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractListingProcessor.java
Sun Nov 25 06:24:59 2007
@@ -34,6 +34,7 @@
import org.apache.james.mailboxmanager.ListResult;
import org.apache.james.mailboxmanager.MailboxManagerException;
import org.apache.james.mailboxmanager.impl.ListResultImpl;
+import org.apache.james.mailboxmanager.manager.MailboxExpression;
import org.apache.james.mailboxmanager.manager.MailboxManager;
import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
import org.apache.james.services.User;
@@ -227,7 +228,7 @@
String pattern) throws MailboxException {
try {
final MailboxManager mailboxManager = getMailboxManager(session);
- final ListResult[] result = mailboxManager.list(base, pattern,
subscribedOnly);
+ final ListResult[] result = mailboxManager.list(new
MailboxExpression(base,pattern, '*', '%'));
return result;
} catch (MailboxManagerException e) {
throw new MailboxException(e);
Modified:
james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/ListCommand.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/ListCommand.java?rev=597992&r1=597991&r2=597992&view=diff
==============================================================================
---
james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/ListCommand.java
(original)
+++
james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/ListCommand.java
Sun Nov 25 06:24:59 2007
@@ -27,6 +27,7 @@
import org.apache.james.mailboxmanager.ListResult;
import org.apache.james.mailboxmanager.MailboxManagerException;
import org.apache.james.mailboxmanager.impl.ListResultImpl;
+import org.apache.james.mailboxmanager.manager.MailboxExpression;
/**
* Handles processeing for the LIST imap command.
@@ -154,7 +155,8 @@
protected ListResult[] doList( ImapSession session, String base, String
pattern, boolean subscribed ) throws MailboxException
{
try {
- return session.getMailboxManager().list(base,pattern,false);
+ // TODO: LSUB should use user meta-data
+ return session.getMailboxManager().list(new
MailboxExpression(base, pattern, '*', '%'));
} catch (MailboxManagerException e) {
throw new MailboxException(e);
}
Modified:
james/server/trunk/phoenix-deployment/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java?rev=597992&r1=597991&r2=597992&view=diff
==============================================================================
---
james/server/trunk/phoenix-deployment/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java
(original)
+++
james/server/trunk/phoenix-deployment/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java
Sun Nov 25 06:24:59 2007
@@ -57,6 +57,7 @@
import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
import org.apache.james.mailboxmanager.mailbox.GeneralMailboxSession;
import org.apache.james.mailboxmanager.mailbox.ImapMailboxSession;
+import org.apache.james.mailboxmanager.manager.MailboxExpression;
import org.apache.james.mailboxmanager.manager.MailboxManager;
import org.apache.james.test.mock.avalon.MockLogger;
import org.jmock.MockObjectTestCase;
@@ -158,7 +159,7 @@
}
public String[] getFolderNames() throws MailboxManagerException {
- ListResult[] listResults=mailboxManager.list("","*",false);
+ ListResult[] listResults=mailboxManager.list(new
MailboxExpression("","*", '*', '%'));
String[] names=new String[listResults.length];
for (int i = 0; i < listResults.length; i++) {
names[i]=listResults[i].getName();
Modified:
james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/AbstractMailboxManagerSelfTestCase.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/AbstractMailboxManagerSelfTestCase.java?rev=597992&r1=597991&r2=597992&view=diff
==============================================================================
---
james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/AbstractMailboxManagerSelfTestCase.java
(original)
+++
james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/AbstractMailboxManagerSelfTestCase.java
Sun Nov 25 06:24:59 2007
@@ -24,6 +24,7 @@
import java.util.Set;
import org.apache.james.mailboxmanager.mailbox.GeneralMailboxSession;
+import org.apache.james.mailboxmanager.manager.MailboxExpression;
import org.apache.james.mailboxmanager.manager.MailboxManager;
import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
@@ -36,9 +37,9 @@
public void testCreateList() throws MailboxManagerException {
ListResult[] listResult;
- listResult=mailboxManager.list("","*",false);
+ listResult=mailboxManager.list(new MailboxExpression("","*", '*',
'%'));
assertNotNull(listResult);
- assertEquals(0,mailboxManager.list("","*",false).length);
+ assertEquals(0,mailboxManager.list(new MailboxExpression("","*", '*',
'%')).length);
Set boxes=new HashSet();
boxes.add("#users.joachim.INBOX");
boxes.add("#users.joachim.INBOX.Drafts");
@@ -47,7 +48,7 @@
String box = (String) iter.next();
mailboxManager.createMailbox(box);
}
- listResult=mailboxManager.list("","*",false);
+ listResult=mailboxManager.list(new MailboxExpression("","*", '*',
'%'));
assertEquals(3,listResult.length);
for (int i = 0; i < listResult.length; i++) {
assertTrue(boxes.contains(listResult[i].getName()));
@@ -71,7 +72,7 @@
mailboxManager.createMailbox("INBOX");
mailboxManager.createMailbox("INBOX2");
- ListResult[] listResult=mailboxManager.list("","INBOX",false);
+ ListResult[] listResult=mailboxManager.list(new
MailboxExpression("","*", '*', '%'));
assertNotNull(listResult);
assertEquals(1, listResult.length);
assertEquals("INBOX", listResult[0].getName());
Modified:
james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/impl/VirtualMailboxManagerTest.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/impl/VirtualMailboxManagerTest.java?rev=597992&r1=597991&r2=597992&view=diff
==============================================================================
---
james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/impl/VirtualMailboxManagerTest.java
(original)
+++
james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/impl/VirtualMailboxManagerTest.java
Sun Nov 25 06:24:59 2007
@@ -28,6 +28,7 @@
import org.apache.james.mailboxmanager.ListResult;
import org.apache.james.mailboxmanager.MailboxManagerException;
import
org.apache.james.mailboxmanager.impl.VirtualMailboxManagerFactory.LengthComparator;
+import org.apache.james.mailboxmanager.manager.MailboxExpression;
import org.apache.james.mailboxmanager.manager.MailboxManager;
import org.apache.james.mailboxmanager.manager.MailboxManagerFactory;
import org.apache.james.mailboxmanager.mock.MockUser;
@@ -91,6 +92,8 @@
}
public void testList() throws MailboxManagerException {
+ final MailboxExpression mailboxExpression = new
MailboxExpression("","%", '*', '%');
+
String[] expected = { "#mail.t1.t2", "#mail.t1.t3", "#mail",
"#mail.group.t5", "#mail.group.6", "#system.t1" };
String[] points = { "#mail", "#mail.group", "#system" };
@@ -101,23 +104,20 @@
mailboxManager, 1);
MailboxManagerFactory[] mailboxManagerFactories =
proxyFactoryMocks(mailboxManagerFactoryMocks);
- Constraint[] args = { new IsEqual(""), new IsEqual("%"),
- new IsEqual(Boolean.FALSE) };
-
- mailboxManagerMocks[0].expects(once()).method("list").with(args).will(
+
mailboxManagerMocks[0].expects(once()).method("list").with(eq(mailboxExpression)).will(
returnValue(generateListResults(new String[] { expected[0],
expected[1], expected[2] })));
- mailboxManagerMocks[1].expects(once()).method("list").with(args).will(
+
mailboxManagerMocks[1].expects(once()).method("list").with(eq(mailboxExpression)).will(
returnValue(generateListResults(new String[] { expected[3],
expected[4] })));
- mailboxManagerMocks[2].expects(once()).method("list").with(args).will(
+
mailboxManagerMocks[2].expects(once()).method("list").with(eq(mailboxExpression)).will(
returnValue(generateListResults(new String[] { expected[5]
})));
addMountPoints(points, mailboxManagerFactories);
- ListResult[] result = virtualMailboxManager.list("", "%", false);
+ ListResult[] result = virtualMailboxManager.list(mailboxExpression);
assertEquals(expected.length, result.length);
assertEquals(new HashSet(Arrays.asList(expected)), toNamesSet(result));
System.out.println(toNamesSet(result));
Modified:
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java?rev=597992&r1=597991&r2=597992&view=diff
==============================================================================
---
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java
(original)
+++
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java
Sun Nov 25 06:24:59 2007
@@ -39,6 +39,7 @@
import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
import org.apache.james.mailboxmanager.mailbox.ImapMailboxSession;
import org.apache.james.mailboxmanager.mailbox.MailboxSession;
+import org.apache.james.mailboxmanager.manager.MailboxExpression;
import org.apache.james.mailboxmanager.manager.MailboxManager;
import org.apache.james.mailboxmanager.torque.om.MailboxRow;
import org.apache.james.mailboxmanager.torque.om.MailboxRowPeer;
@@ -49,10 +50,12 @@
import org.apache.torque.TorqueException;
import org.apache.torque.util.CountHelper;
import org.apache.torque.util.Criteria;
+
import EDU.oswego.cs.dl.util.concurrent.ReadWriteLock;
public class TorqueMailboxManager implements MailboxManager {
+ private static final char SQL_WILDCARD_CHAR = '%';
private final static Random random = new Random();
private MailboxCache mailboxCache;
@@ -222,31 +225,33 @@
toMailbox.close();
}
- public ListResult[] list(String base, String expression, boolean
subscribed) throws MailboxManagerException {
- Criteria c=new Criteria();
- if (base.length()>0) {
- if (base.charAt(base.length()-1)==HIERARCHY_DELIMITER) {
- base=base.substring(0, base.length()-1);
- }
- if (expression.length()>0) {
- if (expression.charAt(0)==HIERARCHY_DELIMITER) {
- expression=base+expression;
- } else {
- expression=base+HIERARCHY_DELIMITER+expression;
- }
- }
+ public ListResult[] list(final MailboxExpression mailboxExpression) throws
MailboxManagerException {
+ final char localWildcard = mailboxExpression.getLocalWildcard();
+ final char freeWildcard = mailboxExpression.getFreeWildcard();
+ final String base = mailboxExpression.getBase();
+ final int baseLength;
+ if (base == null) {
+ baseLength = 0;
+ } else {
+ baseLength = base.length();
}
+
+ final String search =
mailboxExpression.getCombinedName(HIERARCHY_DELIMITER)
+ .replace(freeWildcard, SQL_WILDCARD_CHAR).replace(localWildcard,
SQL_WILDCARD_CHAR);
- MailboxExpression mailboxExpression = new MailboxExpression(base,
expression, '*', '%');
-
c.add(MailboxRowPeer.NAME,(Object)(expression.replaceAll("\\*","%")),Criteria.LIKE);
+ Criteria criteria = new Criteria();
+ criteria.add(MailboxRowPeer.NAME,(Object)(search),Criteria.LIKE);
try {
- List mailboxRows=MailboxRowPeer.doSelect(c);
+ List mailboxRows=MailboxRowPeer.doSelect(criteria);
List listResults=new ArrayList(mailboxRows.size());
for (Iterator iter = mailboxRows.iterator(); iter.hasNext();) {
final MailboxRow mailboxRow = (MailboxRow) iter.next();
final String name = mailboxRow.getName();
- if (mailboxExpression.isExpressionMatch(name,
HIERARCHY_DELIMITER)) {
- listResults.add(new ListResultImpl(name,"."));
+ if (name.startsWith(base)) {
+ final String match = name.substring(baseLength);
+ if (mailboxExpression.isExpressionMatch(match,
HIERARCHY_DELIMITER)) {
+ listResults.add(new ListResultImpl(name,"."));
+ }
}
}
return (ListResult[]) listResults.toArray(ListResult.EMPTY_ARRAY);
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]