(geronimo-mail) 04/07: GERONIMO-6898 - store.getDefaultFolder().list() returns empty when the server hierarchy delimiter is not '/'
[email protected] Sat, 18 Jul 2026 18:49:03 +0000
| Newsgroups | gmane.comp.java.geronimo.cvs |
|---|---|
| Message-ID | <[email protected]> |
This is an automated email from the ASF dual-hosted git repository. rzo1 pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/geronimo-mail.git commit e4ab6c1fe983197c54367d19c840d4b0d2e07dac Author: Richard Zowalla <[email protected]> AuthorDate: Sat Jul 18 20:48:28 2026 +0200 GERONIMO-6898 - store.getDefaultFolder().list() returns empty when the server hierarchy delimiter is not '/' --- .../geronimo/mail/store/imap/IMAPFolder.java | 8 +++++-- .../mail/store/imap/IMAPTckRegressionTest.java | 26 ++++++++++++++++++++++ geronimo-mail_2.1_tck/src/tck/geronimo.jtx | 2 -- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/geronimo-mail_2.1_impl/geronimo-mail_2.1_provider/src/main/java/org/apache/geronimo/mail/store/imap/IMAPFolder.java b/geronimo-mail_2.1_impl/geronimo-mail_2.1_provider/src/main/java/org/apache/geronimo/mail/store/imap/IMAPFolder.java index d94d6e8..62bebeb 100644 --- a/geronimo-mail_2.1_impl/geronimo-mail_2.1_provider/src/main/java/org/apache/geronimo/mail/store/imap/IMAPFolder.java +++ b/geronimo-mail_2.1_impl/geronimo-mail_2.1_provider/src/main/java/org/apache/geronimo/mail/store/imap/IMAPFolder.java @@ -1594,8 +1594,12 @@ public class IMAPFolder extends Folder implements UIDFolder, IMAPUntaggedRespons */ protected synchronized Folder[] filterFolders(String pattern, boolean subscribed) throws MessagingException { IMAPConnection connection = getConnection(); - // this is used to filter out our own folder from the search - String root = fullname + getSeparator(); + // this is used to filter out our own folder from the search. + // NB: for the root (default) folder the fullname is empty and the + // reference must be the empty string as well. Using the hard-coded + // root separator (e.g. "/") as the reference does not match anything + // on servers using a different hierarchy delimiter (James uses '.'). + String root = fullname.length() == 0 ? "" : fullname + getSeparator(); List responses = null; try { diff --git a/geronimo-mail_2.1_impl/geronimo-mail_2.1_provider/src/test/java/org/apache/geronimo/mail/store/imap/IMAPTckRegressionTest.java b/geronimo-mail_2.1_impl/geronimo-mail_2.1_provider/src/test/java/org/apache/geronimo/mail/store/imap/IMAPTckRegressionTest.java index 57c11d8..6cb5727 100644 --- a/geronimo-mail_2.1_impl/geronimo-mail_2.1_provider/src/test/java/org/apache/geronimo/mail/store/imap/IMAPTckRegressionTest.java +++ b/geronimo-mail_2.1_impl/geronimo-mail_2.1_provider/src/test/java/org/apache/geronimo/mail/store/imap/IMAPTckRegressionTest.java @@ -93,6 +93,32 @@ public class IMAPTckRegressionTest extends AbstractProtocolTest { } } + /** + * Folder#list_Test/listSubscribed_Test: listing the default folder used to + * issue LIST / "%" (the hard-coded root separator as reference), which + * matches nothing on servers with a '.' hierarchy delimiter such as James. + * The reference for the root folder must be the empty string. + */ + @Test + public void testDefaultFolderListIsNonEmpty() throws Exception { + start(); + createMailboxWithMessage("test1"); + + final Store store = connect(); + try { + final Folder[] folders = store.getDefaultFolder().list("%"); + assertTrue(folders.length > 0, "default folder list(\"%\") must return at least INBOX"); + + // also exercise the LSUB flavour of the same code path + final Folder test1 = store.getDefaultFolder().getFolder("test1"); + test1.setSubscribed(true); + final Folder[] subscribed = store.getDefaultFolder().listSubscribed("%"); + assertTrue(subscribed.length > 0, "default folder listSubscribed(\"%\") must find the subscribed folder"); + } finally { + store.close(); + } + } + /** * MimeMessage#getContentLanguage_Test: a message whose BODYSTRUCTURE * carries no language information used to trigger a NullPointerException; diff --git a/geronimo-mail_2.1_tck/src/tck/geronimo.jtx b/geronimo-mail_2.1_tck/src/tck/geronimo.jtx index 9a534c2..c00fe5a 100644 --- a/geronimo-mail_2.1_tck/src/tck/geronimo.jtx +++ b/geronimo-mail_2.1_tck/src/tck/geronimo.jtx @@ -44,8 +44,6 @@ javasoft/sqe/tests/jakarta/mail/event/FolderEvent/testlist.html#addMsgChangeList javasoft/sqe/tests/jakarta/mail/exception/testlist.html#folderNotFoundExp_Test javasoft/sqe/tests/jakarta/mail/exception/testlist.html#msgRemoveExp_Test javasoft/sqe/tests/jakarta/mail/Folder/testlist.html#getPermanentFlags_Test -javasoft/sqe/tests/jakarta/mail/Folder/testlist.html#list_Test -javasoft/sqe/tests/jakarta/mail/Folder/testlist.html#listSubscribed_Test javasoft/sqe/tests/jakarta/mail/internet/InternetAddress/testlist.html#unicode_Test javasoft/sqe/tests/jakarta/mail/internet/MimeBodyPart/testlist.html#attachFile_saveFile_Test javasoft/sqe/tests/jakarta/mail/internet/MimeBodyPart/testlist.html#isMimeType_Test