diff --git a/greenmail-core/src/main/java/com/icegreen/greenmail/imap/ImapSessionFolder.java b/greenmail-core/src/main/java/com/icegreen/greenmail/imap/ImapSessionFolder.java index b3a5fc64c3..6d5d6d848f 100644 --- a/greenmail-core/src/main/java/com/icegreen/greenmail/imap/ImapSessionFolder.java +++ b/greenmail-core/src/main/java/com/icegreen/greenmail/imap/ImapSessionFolder.java @@ -81,10 +81,10 @@ public boolean isReadonly() { public int[] getExpunged() { synchronized (expungedMsns) { - int[] expungedMsns = new int[this.expungedMsns.size()]; - for (int i = 0; i < expungedMsns.length; i++) { + int[] expungedMsnsArray = new int[this.expungedMsns.size()]; + for (int i = 0; i < expungedMsnsArray.length; i++) { int msn = this.expungedMsns.get(i); - expungedMsns[i] = msn; + expungedMsnsArray[i] = msn; } this.expungedMsns.clear(); @@ -92,7 +92,7 @@ public int[] getExpunged() { if (!(modifiedFlags.isEmpty() && !sizeChanged)) { throw new IllegalStateException("Need to do this properly..."); } - return expungedMsns; + return expungedMsnsArray; } } diff --git a/greenmail-core/src/main/java/com/icegreen/greenmail/store/InMemoryStore.java b/greenmail-core/src/main/java/com/icegreen/greenmail/store/InMemoryStore.java index d9be27590f..886f514b96 100644 --- a/greenmail-core/src/main/java/com/icegreen/greenmail/store/InMemoryStore.java +++ b/greenmail-core/src/main/java/com/icegreen/greenmail/store/InMemoryStore.java @@ -79,7 +79,7 @@ public void deleteMailbox(MailFolder folder) throws FolderException { } @Override - public void renameMailbox(MailFolder existingFolder, String newName) throws FolderException { + public void renameMailbox(MailFolder existingFolder, String newName) { HierarchicalFolder toRename = (HierarchicalFolder) existingFolder; HierarchicalFolder parent = toRename.getParent(); @@ -112,16 +112,16 @@ public void renameMailbox(MailFolder existingFolder, String newName) throws Fold } private HierarchicalFolder getInboxOrUserRootFolder(HierarchicalFolder folder) { - final HierarchicalFolder inboxFolder = findParentByName(folder, ImapConstants.INBOX_NAME); + final HierarchicalFolder inboxFolder = findParentByName(folder); if(null==inboxFolder) { return folder.getParent(); } return inboxFolder.getParent(); } - private HierarchicalFolder findParentByName(HierarchicalFolder folder, String name) { + private HierarchicalFolder findParentByName(HierarchicalFolder folder) { HierarchicalFolder currentFolder = folder; - while (null != currentFolder && !name.equals(currentFolder.getName())) { + while (null != currentFolder && !ImapConstants.INBOX_NAME.equals(currentFolder.getName())) { currentFolder = currentFolder.getParent(); } return currentFolder; diff --git a/greenmail-core/src/main/java/com/icegreen/greenmail/user/UserManager.java b/greenmail-core/src/main/java/com/icegreen/greenmail/user/UserManager.java index b1667749a7..2c30c3412f 100644 --- a/greenmail-core/src/main/java/com/icegreen/greenmail/user/UserManager.java +++ b/greenmail-core/src/main/java/com/icegreen/greenmail/user/UserManager.java @@ -11,14 +11,15 @@ import org.slf4j.LoggerFactory; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; public class UserManager { private static final Logger log = LoggerFactory.getLogger(UserManager.class); /** - * User list by their trimmed, lowercased user names + * User list by their trimmed, lower-cased user names */ - private Map loginToUser = Collections.synchronizedMap(new HashMap()); - private Map emailToUser = Collections.synchronizedMap(new HashMap()); + private Map loginToUser = new ConcurrentHashMap<>(); + private Map emailToUser = new ConcurrentHashMap<>(); private ImapHostManager imapHostManager; private boolean authRequired = true; diff --git a/greenmail-core/src/main/java/com/icegreen/greenmail/util/GreenMailUtil.java b/greenmail-core/src/main/java/com/icegreen/greenmail/util/GreenMailUtil.java index 7cc56efcf3..8499aabf06 100644 --- a/greenmail-core/src/main/java/com/icegreen/greenmail/util/GreenMailUtil.java +++ b/greenmail-core/src/main/java/com/icegreen/greenmail/util/GreenMailUtil.java @@ -51,7 +51,7 @@ public static GreenMailUtil instance() { /** * Writes the content of an input stream to an output stream * - * @throws IOException + * @throws IOException on io error. */ public static void copyStream(final InputStream src, OutputStream dest) throws IOException { byte[] buffer = new byte[1024]; @@ -129,7 +129,7 @@ public static int getLineCount(String str) { public static String getBody(Part msg) { String all = getWholeMessage(msg); int i = all.indexOf("\r\n\r\n"); - return i < 0 ? "" /* empty body */ : all.substring(i + 4, all.length()); + return i < 0 ? "" /* empty body */ : all.substring(i + 4); } /** @@ -333,7 +333,7 @@ public static MimeMultipart createMultipartWithAttachment(String msg, final byte DataSource ds = new DataSource() { @Override - public InputStream getInputStream() throws IOException { + public InputStream getInputStream() { return new ByteArrayInputStream(attachment); } @@ -363,6 +363,12 @@ public String getName() { } } + /** + * Gets a JavaMail Session for given server type such as IMAP and additional props for JavaMail. + * + * @param setup the setup type, such as ServerSetup.IMAP + * @return the JavaMail session. + */ public static Session getSession(final ServerSetup setup) { return getSession(setup, null); } @@ -375,10 +381,20 @@ public static Session getSession(final ServerSetup setup) { * @return the JavaMail session. */ public static Session getSession(final ServerSetup setup, Properties mailProps) { - Properties props = setup.configureJavaMailSessionProperties(mailProps, false); + return getSession(setup, mailProps, false); + } + /** + * Gets a JavaMail Session for given server type such as IMAP and additional props for JavaMail. + * + * @param setup the setup type, such as ServerSetup.IMAP + * @param mailProps additional mail properties. + * @param debug sets JavaMail debug properties. + * @return the JavaMail session. + */ + public static Session getSession(final ServerSetup setup, Properties mailProps, boolean debug) { + Properties props = setup.configureJavaMailSessionProperties(mailProps, debug); log.debug("Mail session properties are {}", props); - return Session.getInstance(props, null); }