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 rd...@apache.org on 2009/05/09 15:51:47 UTC
svn commit: r773223 - in /james/imap/trunk:
mailbox/src/main/java/org/apache/james/imap/mailbox/
processor/src/main/java/org/apache/james/imap/processor/
processor/src/test/java/org/apache/james/imap/processor/
store/src/main/java/org/apache/james/imap...
Author: rdonkin
Date: Sat May 9 13:51:47 2009
New Revision: 773223
URL: http://svn.apache.org/viewvc?rev=773223&view=rev
Log:
Pass MailboxSession into calls. This allows access to user details and other context information. IMAP-71 https://issues.apache.org/jira/browse/IMAP-71
Modified:
james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MailboxManager.java
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AppendProcessor.java
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CopyProcessor.java
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CreateProcessor.java
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/ListProcessor.java
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/LoginProcessor.java
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/RenameProcessor.java
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/StatusProcessor.java
james/imap/trunk/processor/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java
james/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java
Modified: james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MailboxManager.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MailboxManager.java?rev=773223&r1=773222&r2=773223&view=diff
==============================================================================
--- james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MailboxManager.java (original)
+++ james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MailboxManager.java Sat May 9 13:51:47 2009
@@ -80,13 +80,14 @@
*
* @param mailboxName
* the name of the mailbox, not null
+ * @param session the context for this call, not null
* @return <code>ImapMailboxSession</code>, not null
* @throws MailboxException
* when the mailbox cannot be opened
* @throws MailboxNotFoundException
* when the given mailbox does not exist
*/
- Mailbox getMailbox(String mailboxName) throws MailboxException;
+ Mailbox getMailbox(String mailboxName, MailboxSession session) throws MailboxException;
/**
* Creates a new mailbox. Any intermediary mailboxes missing from the
@@ -94,9 +95,10 @@
*
* @param mailboxName
* name, not null
+ * @param mailboxSession the context for this call, not null
* @throws MailboxException
*/
- void createMailbox(String mailboxName) throws MailboxException;
+ void createMailbox(String mailboxName, MailboxSession mailboxSession) throws MailboxException;
void deleteMailbox(String mailboxName, MailboxSession session) throws MailboxException;
@@ -107,13 +109,14 @@
* original name for the mailbox
* @param to
* new name for the mailbox
+ * @param session the context for this call, not nul
* @throws MailboxException
* @throws MailboxExistsException
* when the <code>to</code> mailbox exists
* @throws MailboxNotFound
* when the <code>from</code> mailbox does not exist
*/
- void renameMailbox(String from, String to) throws MailboxException;
+ void renameMailbox(String from, String to, MailboxSession session) throws MailboxException;
/**
* this is done by the MailboxRepository because maybe this operation could
@@ -134,11 +137,19 @@
/**
* Searches for mailboxes matching the given query.
* @param expression not null
+ * @param session the context for this call, not null
* @throws MailboxException
*/
- List<MailboxMetaData> search(MailboxQuery expression) throws MailboxException;
+ List<MailboxMetaData> search(MailboxQuery expression, MailboxSession session) throws MailboxException;
- boolean mailboxExists(String mailboxName) throws MailboxException;
+ /**
+ * Does the given mailbox exist?
+ * @param mailboxName not null
+ * @param session the context for this call, not null
+ * @return true when the mailbox exists and is accessible for the given user, false otherwise
+ * @throws MailboxException
+ */
+ boolean mailboxExists(String mailboxName, MailboxSession session) throws MailboxException;
/**
* Creates a new session.
Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java?rev=773223&r1=773222&r2=773223&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java Sat May 9 13:51:47 2009
@@ -217,7 +217,7 @@
private Mailbox getMailbox(final ImapSession session, final SelectedMailbox selected) throws MailboxException {
final String fullMailboxName = buildFullName(session, selected.getName());
final MailboxManager mailboxManager = getMailboxManager();
- final Mailbox mailbox = mailboxManager.getMailbox(fullMailboxName);
+ final Mailbox mailbox = mailboxManager.getMailbox(fullMailboxName, ImapSessionUtils.getMailboxSession(session));
return mailbox;
}
@@ -314,7 +314,7 @@
} else {
final String mailboxName = selectedMailbox.getName();
final MailboxManager mailboxManager = getMailboxManager();
- result = mailboxManager.getMailbox(mailboxName);
+ result = mailboxManager.getMailbox(mailboxName, ImapSessionUtils.getMailboxSession(session));
}
return result;
}
Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java?rev=773223&r1=773222&r2=773223&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java Sat May 9 13:51:47 2009
@@ -174,8 +174,8 @@
private void selectMailbox(String mailboxName, ImapSession session)
throws MailboxException {
final MailboxManager mailboxManager = getMailboxManager();
- final Mailbox mailbox = mailboxManager.getMailbox(mailboxName);
final MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
+ final Mailbox mailbox = mailboxManager.getMailbox(mailboxName, mailboxSession);
final SelectedMailbox sessionMailbox;
final SelectedMailbox currentMailbox = session.getSelected();
Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AppendProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AppendProcessor.java?rev=773223&r1=773222&r2=773223&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AppendProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AppendProcessor.java Sat May 9 13:51:47 2009
@@ -66,7 +66,7 @@
final String fullMailboxName = buildFullName(session, mailboxName);
final MailboxManager mailboxManager = getMailboxManager();
- final Mailbox mailbox = mailboxManager.getMailbox(fullMailboxName);
+ final Mailbox mailbox = mailboxManager.getMailbox(fullMailboxName, ImapSessionUtils.getMailboxSession(session));
appendToMailbox(messageBytes, datetime, session, tag, command,
mailbox, responder, fullMailboxName);
Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CopyProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CopyProcessor.java?rev=773223&r1=773222&r2=773223&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CopyProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CopyProcessor.java Sat May 9 13:51:47 2009
@@ -58,10 +58,11 @@
final boolean useUids = request.isUseUids();
final SelectedMailbox currentMailbox = session.getSelected();
try {
+ final MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
final String fullMailboxName = buildFullName(session, mailboxName);
final MailboxManager mailboxManager = getMailboxManager();
final boolean mailboxExists = mailboxManager
- .mailboxExists(fullMailboxName);
+ .mailboxExists(fullMailboxName, mailboxSession);
if (!mailboxExists) {
no(command, tag, responder,
HumanReadableTextKey.FAILURE_NO_SUCH_MAILBOX,
@@ -81,8 +82,6 @@
}
MessageRange messageSet = MessageRangeImpl.uidRange(lowVal,
highVal);
- final MailboxSession mailboxSession = ImapSessionUtils
- .getMailboxSession(session);
mailboxManager.copyMessages(messageSet, currentMailbox
.getName(), fullMailboxName, mailboxSession);
}
Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CreateProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CreateProcessor.java?rev=773223&r1=773222&r2=773223&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CreateProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CreateProcessor.java Sat May 9 13:51:47 2009
@@ -29,6 +29,7 @@
import org.apache.james.imap.mailbox.MailboxManager;
import org.apache.james.imap.mailbox.MailboxManagerProvider;
import org.apache.james.imap.message.request.CreateRequest;
+import org.apache.james.imap.processor.base.ImapSessionUtils;
public class CreateProcessor extends AbstractMailboxProcessor {
@@ -50,7 +51,7 @@
final String fullMailboxName = buildFullName(session, mailboxName);
final MailboxManager mailboxManager = getMailboxManager();
- mailboxManager.createMailbox(fullMailboxName);
+ mailboxManager.createMailbox(fullMailboxName, ImapSessionUtils.getMailboxSession(session));
unsolicitedResponses(session, responder, false);
okComplete(command, tag, responder);
} catch (MailboxException e) {
Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/ListProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/ListProcessor.java?rev=773223&r1=773222&r2=773223&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/ListProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/ListProcessor.java Sat May 9 13:51:47 2009
@@ -194,7 +194,7 @@
String pattern) throws MailboxException {
final MailboxManager mailboxManager = getMailboxManager();
final List<MailboxMetaData> results = mailboxManager.search(new MailboxQuery(
- base, pattern, '*', '%'));
+ base, pattern, '*', '%'), ImapSessionUtils.getMailboxSession(session));
return results;
}
}
Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/LoginProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/LoginProcessor.java?rev=773223&r1=773222&r2=773223&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/LoginProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/LoginProcessor.java Sat May 9 13:51:47 2009
@@ -68,12 +68,12 @@
ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY,
mailboxSession);
final String inboxName = buildFullName(session, MailboxManager.INBOX);
- if (mailboxManager.mailboxExists(inboxName)) {
+ if (mailboxManager.mailboxExists(inboxName, mailboxSession)) {
session.getLog().debug("INBOX exists. No need to create it.");
} else {
try {
session.getLog().debug("INBOX does not exist. Creating it.");
- mailboxManager.createMailbox(inboxName);
+ mailboxManager.createMailbox(inboxName, mailboxSession);
} catch (MailboxExistsException e) {
session.getLog().debug("Mailbox created by concurrent call. Safe to ignore this exception.");
}
Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/RenameProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/RenameProcessor.java?rev=773223&r1=773222&r2=773223&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/RenameProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/RenameProcessor.java Sat May 9 13:51:47 2009
@@ -32,6 +32,7 @@
import org.apache.james.imap.mailbox.MailboxManagerProvider;
import org.apache.james.imap.mailbox.MailboxNotFoundException;
import org.apache.james.imap.message.request.RenameRequest;
+import org.apache.james.imap.processor.base.ImapSessionUtils;
public class RenameProcessor extends AbstractMailboxProcessor {
@@ -55,7 +56,7 @@
final String fullExistingName = buildFullName(session, existingName);
final String fullNewName = buildFullName(session, newName);
final MailboxManager mailboxManager = getMailboxManager();
- mailboxManager.renameMailbox(fullExistingName, fullNewName);
+ mailboxManager.renameMailbox(fullExistingName, fullNewName, ImapSessionUtils.getMailboxSession(session));
okComplete(command, tag, responder);
unsolicitedResponses(session, responder, false);
Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/StatusProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/StatusProcessor.java?rev=773223&r1=773222&r2=773223&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/StatusProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/StatusProcessor.java Sat May 9 13:51:47 2009
@@ -66,7 +66,7 @@
}
final MailboxManager mailboxManager = getMailboxManager();
- final Mailbox mailbox = mailboxManager.getMailbox(fullMailboxName);
+ final Mailbox mailbox = mailboxManager.getMailbox(fullMailboxName, ImapSessionUtils.getMailboxSession(session));
final Long messages = messages(statusDataItems, mailboxSession,
mailbox);
Modified: james/imap/trunk/processor/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java?rev=773223&r1=773222&r2=773223&view=diff
==============================================================================
--- james/imap/trunk/processor/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java (original)
+++ james/imap/trunk/processor/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java Sat May 9 13:51:47 2009
@@ -192,8 +192,8 @@
checking(new Expectations() {{
atMost(1).of(mailboxManagerProvider).getMailboxManager();will(returnValue(mailboxManager));
atMost(1).of(mailboxManager).resolve(with(equal("user")), with(equal("name")));will(returnValue("user"));
- atMost(1).of(mailboxManager).getMailbox(with(equal("user")));will(returnValue(mailbox));
- atMost(1).of(mailboxManager).getMailbox(with(equal("MailboxName")));will(returnValue(mailbox));
+ atMost(1).of(mailboxManager).getMailbox(with(equal("user")), with(same(mailboxSession)));will(returnValue(mailbox));
+ atMost(1).of(mailboxManager).getMailbox(with(equal("MailboxName")), with(same(mailboxSession)));will(returnValue(mailbox));
allowing(session).getSelected();will(returnValue(selectedMailbox));
atMost(1).of(selectedMailbox).isRecentUidRemoved();will(returnValue(false));
atLeast(1).of(selectedMailbox).isSizeChanged();will(returnValue(false));
Modified: james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java?rev=773223&r1=773222&r2=773223&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java Sat May 9 13:51:47 2009
@@ -69,7 +69,7 @@
protected abstract void doCreate(String namespaceName) throws MailboxException;
- public org.apache.james.imap.mailbox.Mailbox getMailbox(String mailboxName)
+ public org.apache.james.imap.mailbox.Mailbox getMailbox(String mailboxName, MailboxSession session)
throws MailboxException {
return doGetMailbox(mailboxName);
}
@@ -96,14 +96,14 @@
}
}
- public void createMailbox(String namespaceName)
+ public void createMailbox(String namespaceName, MailboxSession mailboxSession)
throws MailboxException {
getLog().debug("createMailbox " + namespaceName);
final int length = namespaceName.length();
if (length == 0) {
getLog().warn("Ignoring mailbox with empty name");
} else if (namespaceName.charAt(length - 1) == HIERARCHY_DELIMITER) {
- createMailbox(namespaceName.substring(0, length - 1));
+ createMailbox(namespaceName.substring(0, length - 1), mailboxSession);
} else {
synchronized (mailboxes) {
// Create root first
@@ -119,13 +119,13 @@
if (index > 0 && count++ > 1) {
final String mailbox = namespaceName
.substring(0, index);
- if (!mailboxExists(mailbox)) {
+ if (!mailboxExists(mailbox, mailboxSession)) {
doCreate(mailbox);
}
}
index = namespaceName.indexOf(HIERARCHY_DELIMITER, ++index);
}
- if (mailboxExists(namespaceName)) {
+ if (mailboxExists(namespaceName, mailboxSession)) {
throw new MailboxExistsException(namespaceName);
} else {
doCreate(namespaceName);
@@ -154,12 +154,12 @@
}
}
- public void renameMailbox(String from, String to)
+ public void renameMailbox(String from, String to, MailboxSession session)
throws MailboxException {
final Log log = getLog();
if (log.isDebugEnabled()) log.debug("renameMailbox " + from + " to " + to);
synchronized (mailboxes) {
- if (mailboxExists(to)) {
+ if (mailboxExists(to, session)) {
throw new MailboxExistsException(to);
}
@@ -213,7 +213,7 @@
fromMailbox.copyTo(set, toMailbox, session);
}
- public List<MailboxMetaData> search(final MailboxQuery mailboxExpression)
+ public List<MailboxMetaData> search(final MailboxQuery mailboxExpression, MailboxSession session)
throws MailboxException {
final char localWildcard = mailboxExpression.getLocalWildcard();
final char freeWildcard = mailboxExpression.getFreeWildcard();
@@ -263,7 +263,7 @@
return mapper.hasChildren(name, HIERARCHY_DELIMITER);
}
- public boolean mailboxExists(String mailboxName) throws MailboxException {
+ public boolean mailboxExists(String mailboxName, MailboxSession session) throws MailboxException {
synchronized (mailboxes) {
final MailboxMapper mapper = createMailboxMapper();
final long count = mapper.countMailboxesWithName(mailboxName);
Modified: james/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java?rev=773223&r1=773222&r2=773223&view=diff
==============================================================================
--- james/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java (original)
+++ james/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java Sat May 9 13:51:47 2009
@@ -74,7 +74,7 @@
this.userManager = userManager;
}
- public Mailbox getMailbox(String mailboxName)
+ public Mailbox getMailbox(String mailboxName, MailboxSession session)
throws MailboxException {
return doGetMailbox(mailboxName);
}
@@ -107,14 +107,14 @@
}
}
- public void createMailbox(String namespaceName)
+ public void createMailbox(String namespaceName, MailboxSession mailboxSession)
throws MailboxException {
getLog().debug("createMailbox " + namespaceName);
final int length = namespaceName.length();
if (length == 0) {
getLog().warn("Ignoring mailbox with empty name");
} else if (namespaceName.charAt(length - 1) == HIERARCHY_DELIMITER) {
- createMailbox(namespaceName.substring(0, length - 1));
+ createMailbox(namespaceName.substring(0, length - 1), mailboxSession);
} else {
synchronized (mailboxes) {
// Create root first
@@ -130,13 +130,13 @@
if (index > 0 && count++ > 1) {
final String mailbox = namespaceName
.substring(0, index);
- if (!mailboxExists(mailbox)) {
+ if (!mailboxExists(mailbox, mailboxSession)) {
doCreate(mailbox);
}
}
index = namespaceName.indexOf(HIERARCHY_DELIMITER, ++index);
}
- if (mailboxExists(namespaceName)) {
+ if (mailboxExists(namespaceName, mailboxSession)) {
throw new MailboxExistsException(namespaceName);
} else {
doCreate(namespaceName);
@@ -179,12 +179,12 @@
}
}
- public void renameMailbox(String from, String to)
+ public void renameMailbox(String from, String to, MailboxSession session)
throws MailboxException {
getLog().debug("renameMailbox " + from + " to " + to);
try {
synchronized (mailboxes) {
- if (mailboxExists(to)) {
+ if (mailboxExists(to, session)) {
throw new MailboxExistsException(to);
}
// TODO put this into a serilizable transaction
@@ -238,7 +238,7 @@
fromMailbox.copyTo(set, toMailbox, session);
}
- public List<MailboxMetaData> search(final MailboxQuery mailboxExpression)
+ public List<MailboxMetaData> search(final MailboxQuery mailboxExpression, MailboxSession session)
throws MailboxException {
final char localWildcard = mailboxExpression.getLocalWildcard();
final char freeWildcard = mailboxExpression.getFreeWildcard();
@@ -296,7 +296,7 @@
return !mailboxes.isEmpty();
}
- public boolean mailboxExists(String mailboxName)
+ public boolean mailboxExists(String mailboxName, MailboxSession session)
throws MailboxException {
Criteria c = new Criteria();
c.add(MailboxRowPeer.NAME, mailboxName);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org