public MailboxQuery mailboxQuery()

in protocols/imap/src/main/java/org/apache/james/imap/main/PathConverter.java [175:242]


        public MailboxQuery mailboxQuery(String finalReferencename, String mailboxName, ImapSession session) {
            MailboxSession mailboxSession = session.getMailboxSession();
            String decodedMailboxName = ModifiedUtf7.decodeModifiedUTF7(mailboxName);
            if (finalReferencename.isEmpty()) {
                if (mailboxName.equals("*")) {
                    return MailboxQuery.builder()
                        .matchesAllMailboxNames()
                        .build();
                }
                int delimiterPosition = mailboxName.indexOf(mailboxSession.getPathDelimiter());
                if (mailboxName.startsWith("#") && delimiterPosition > 0 && delimiterPosition + 1 < mailboxName.length()) {
                    return mailboxQuery(mailboxName.substring(0, delimiterPosition),
                        mailboxName.substring(delimiterPosition + 1),
                        session);
                }
                return MailboxQuery.builder()
                    .expression(new PrefixedRegex(
                        "",
                        decodedMailboxName,
                        mailboxSession.getPathDelimiter()))
                    .build();
            }

            MailboxPath basePath = computeBasePath(session, finalReferencename);
            if (basePath.getNamespace().equals(MailboxConstants.USER_NAMESPACE)
                && basePath.getUser() == null) {

                int separatorPosition = decodedMailboxName.indexOf(mailboxSession.getPathDelimiter());
                if (separatorPosition >= 0) {
                    // interpret first part as the user
                    Username username = Username.of(decodedMailboxName.substring(0, separatorPosition));
                    return MailboxQuery.builder()
                        .namespace(MailboxConstants.USER_NAMESPACE)
                        .username(username)
                        .expression(new PrefixedRegex(
                            basePath.getName(),
                            decodedMailboxName.substring(separatorPosition + 1),
                            mailboxSession.getPathDelimiter()))
                        .build();
                }

                return MailboxQuery.builder()
                    .namespace(MailboxConstants.USER_NAMESPACE)
                    .expression(new PrefixedRegex(
                        basePath.getName(),
                        decodedMailboxName,
                        mailboxSession.getPathDelimiter()))
                    .build();
            }
            if (basePath.getNamespace().equals(MailboxConstants.USER_NAMESPACE)
                && basePath.getUser().equals(mailboxSession.getUser())
                && basePath.getName().isEmpty()
                && mailboxName.equals("*")) {

                return MailboxQuery.builder()
                    .userAndNamespaceFrom(basePath)
                    .expression(Wildcard.INSTANCE)
                    .build();
            }

            return MailboxQuery.builder()
                .userAndNamespaceFrom(basePath)
                .expression(new PrefixedRegex(
                    basePath.getName(),
                    decodedMailboxName,
                    mailboxSession.getPathDelimiter()))
                .build();
        }