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 bt...@apache.org on 2018/12/18 08:00:48 UTC
[05/13] james-project git commit: MAILBOX-365 Turn MailboxSession
into POJO & delete SimpleMailboxSession
MAILBOX-365 Turn MailboxSession into POJO & delete SimpleMailboxSession
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/a5982615
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/a5982615
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/a5982615
Branch: refs/heads/master
Commit: a598261564104da0d0f0b30672a8983e8522681c
Parents: 46e26b8
Author: Benoit Tellier <bt...@linagora.com>
Authored: Sat Dec 15 16:25:56 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Tue Dec 18 14:48:10 2018 +0700
----------------------------------------------------------------------
.../apache/james/mailbox/MailboxSession.java | 103 ++++++++++--
.../mailbox/store/SimpleMailboxSession.java | 157 -------------------
.../mailbox/store/StoreMailboxManager.java | 2 +-
3 files changed, 88 insertions(+), 174 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/a5982615/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxSession.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxSession.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxSession.java
index 51dd6b3..0e1cc74 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxSession.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxSession.java
@@ -19,22 +19,25 @@
package org.apache.james.mailbox;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import org.apache.james.core.User;
+import org.apache.james.mailbox.model.MailboxConstants;
import com.google.common.base.MoreObjects;
/**
* Mailbox session.
*/
-public interface MailboxSession {
+public class MailboxSession {
- class SessionId {
+ public static class SessionId {
public static SessionId of(long sessionId) {
return new SessionId(sessionId);
@@ -76,9 +79,9 @@ public interface MailboxSession {
/**
* Id which will be used for a System session
*/
- long SYSTEM_SESSION_ID = 0L;
+ public static long SYSTEM_SESSION_ID = 0L;
- enum SessionType {
+ public enum SessionType {
/**
* Session was created via the System
*/
@@ -89,39 +92,83 @@ public interface MailboxSession {
*/
User
}
-
+
+ private final Collection<String> sharedSpaces;
+ private final String otherUsersSpace;
+ private final String personalSpace;
+ private final SessionId sessionId;
+ private final String userName;
+ private boolean open = true;
+ private final List<Locale> localePreferences;
+ private final Map<Object, Object> attributes;
+ private final char pathSeparator;
+ private final SessionType type;
+
+ public MailboxSession(SessionId sessionId, String userName,
+ List<Locale> localePreferences, char pathSeparator, SessionType type) {
+ this(sessionId, userName, localePreferences, new ArrayList<>(), null, pathSeparator, type);
+ }
+
+ public MailboxSession(SessionId sessionId, String userName,
+ List<Locale> localePreferences, List<String> sharedSpaces, String otherUsersSpace, char pathSeparator, SessionType type) {
+ this.sessionId = sessionId;
+ this.userName = userName;
+ this.otherUsersSpace = otherUsersSpace;
+ this.sharedSpaces = sharedSpaces;
+ this.type = type;
+ if (otherUsersSpace == null && (sharedSpaces == null || sharedSpaces.isEmpty())) {
+ this.personalSpace = "";
+ } else {
+ this.personalSpace = MailboxConstants.USER_NAMESPACE;
+ }
+
+ this.localePreferences = localePreferences;
+ this.attributes = new HashMap<>();
+ this.pathSeparator = pathSeparator;
+ }
+
/**
* Return if the {@link MailboxSession} is of type {@link SessionType#User} or {@link SessionType#System}
*
* @return type
*/
- SessionType getType();
+ public SessionType getType() {
+ return type;
+ }
/**
* Gets the session ID.
*
* @return session id
*/
- SessionId getSessionId();
+ public SessionId getSessionId() {
+ return sessionId;
+ }
/**
* Is this session open?
*
* @return true if the session is open, false otherwise
*/
- boolean isOpen();
+ public boolean isOpen() {
+ return open;
+ }
/**
* Closes this session.
*/
- void close();
+ public void close() {
+ open = false;
+ }
/**
* Gets the user executing this session.
*
* @return not null
*/
- User getUser();
+ public User getUser() {
+ return User.fromUsername(userName);
+ }
/**
* Gets acceptable localisation for this user in preference order.<br>
@@ -130,7 +177,9 @@ public interface MailboxSession {
*
* @return not null, when empty the default local should be used
*/
- List<Locale> getLocalePreferences();
+ public List<Locale> getLocalePreferences() {
+ return localePreferences;
+ }
/**
* Gets the <a href='http://www.isi.edu/in-notes/rfc2342.txt' rel='tag'>RFC
@@ -141,7 +190,9 @@ public interface MailboxSession {
*
* @return Personal Namespace, not null
*/
- String getPersonalSpace();
+ public String getPersonalSpace() {
+ return personalSpace;
+ }
/**
* Gets the <a href='http://www.isi.edu/in-notes/rfc2342.txt' rel='tag'>RFC
@@ -152,7 +203,9 @@ public interface MailboxSession {
*
* @return Other Users Namespace or null when there is non available
*/
- String getOtherUsersSpace();
+ public String getOtherUsersSpace() {
+ return otherUsersSpace;
+ }
/**
* Iterates the <a href='http://www.isi.edu/in-notes/rfc2342.txt'
@@ -161,19 +214,37 @@ public interface MailboxSession {
*
* @return not null though possibly empty
*/
- Collection<String> getSharedSpaces();
+ public Collection<String> getSharedSpaces() {
+ return sharedSpaces;
+ }
/**
* Return the stored attributes for this {@link MailboxSession}.
*
* @return attributes
*/
- Map<Object, Object> getAttributes();
+ public Map<Object, Object> getAttributes() {
+ return attributes;
+ }
/**
* Return server side, folder path separator
*
* @return path separator
*/
- char getPathDelimiter();
+ public char getPathDelimiter() {
+ return pathSeparator;
+ }
+
+ /**
+ * Renders suitably for logging.
+ *
+ * @return a <code>String</code> representation of this object.
+ */
+ public String toString() {
+ String TAB = " ";
+
+ return "MailboxSession ( " + "sessionId = "
+ + this.sessionId + TAB + "open = " + this.open + TAB + " )";
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a5982615/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMailboxSession.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMailboxSession.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMailboxSession.java
deleted file mode 100644
index 2e3f159..0000000
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMailboxSession.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.mailbox.store;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.james.core.User;
-import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.model.MailboxConstants;
-
-/**
- * Describes a mailbox session.
- */
-public class SimpleMailboxSession implements MailboxSession {
-
- private final Collection<String> sharedSpaces;
-
- private final String otherUsersSpace;
-
- private final String personalSpace;
-
- private final SessionId sessionId;
-
- private final String userName;
-
- private boolean open = true;
-
- private final List<Locale> localePreferences;
-
- private final Map<Object, Object> attributes;
-
- private final char pathSeparator;
-
- private final SessionType type;
-
-
- public SimpleMailboxSession(SessionId sessionId, String userName,
- List<Locale> localePreferences, char pathSeparator, SessionType type) {
- this(sessionId, userName, localePreferences, new ArrayList<>(), null, pathSeparator, type);
- }
-
- public SimpleMailboxSession(SessionId sessionId, String userName,
- List<Locale> localePreferences, List<String> sharedSpaces, String otherUsersSpace, char pathSeparator, SessionType type) {
- this.sessionId = sessionId;
- this.userName = userName;
- this.otherUsersSpace = otherUsersSpace;
- this.sharedSpaces = sharedSpaces;
- this.type = type;
- if (otherUsersSpace == null && (sharedSpaces == null || sharedSpaces.isEmpty())) {
- this.personalSpace = "";
- } else {
- this.personalSpace = MailboxConstants.USER_NAMESPACE;
- }
-
- this.localePreferences = localePreferences;
- this.attributes = new HashMap<>();
- this.pathSeparator = pathSeparator;
- }
-
-
- @Override
- public void close() {
- open = false;
- }
-
- @Override
- public SessionId getSessionId() {
- return sessionId;
- }
-
- @Override
- public boolean isOpen() {
- return open;
- }
-
- /**
- * Renders suitably for logging.
- *
- * @return a <code>String</code> representation of this object.
- */
- public String toString() {
- final String TAB = " ";
-
- return "MailboxSession ( " + "sessionId = "
- + this.sessionId + TAB + "open = " + this.open + TAB + " )";
- }
-
- /**
- * Gets the user executing this session.
- * @return not null
- */
- @Override
- public User getUser() {
- return User.fromUsername(userName);
- }
-
- @Override
- public String getOtherUsersSpace() {
- return otherUsersSpace;
- }
-
- @Override
- public String getPersonalSpace() {
- return personalSpace;
- }
-
- @Override
- public Collection<String> getSharedSpaces() {
- return sharedSpaces;
- }
-
- @Override
- public List<Locale> getLocalePreferences() {
- return localePreferences;
- }
-
- /**
- * @see org.apache.james.mailbox.MailboxSession#getAttributes()
- */
- @Override
- public Map<Object, Object> getAttributes() {
- return attributes;
- }
-
- @Override
- public char getPathDelimiter() {
- return pathSeparator;
- }
-
- @Override
- public SessionType getType() {
- return type;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a5982615/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index fba7edd..45b4fbc 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -357,7 +357,7 @@ public class StoreMailboxManager implements MailboxManager {
*/
protected MailboxSession createSession(String userName, SessionType type) {
- return new SimpleMailboxSession(newSessionId(), userName, new ArrayList<>(), getDelimiter(), type);
+ return new MailboxSession(newSessionId(), userName, new ArrayList<>(), getDelimiter(), type);
}
private MailboxSession.SessionId newSessionId() {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org