From f641128cb07f7f28225d9b6bb3152de45149bac7 Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Mon, 27 Jun 2016 17:16:54 -0400 Subject: [PATCH] Made EmailExtracted class thread safe --- .../sleuthkit/autopsy/datamodel/EmailExtracted.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/EmailExtracted.java b/Core/src/org/sleuthkit/autopsy/datamodel/EmailExtracted.java index 6523fa2b99..8fe73099e2 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/EmailExtracted.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/EmailExtracted.java @@ -72,36 +72,34 @@ public class EmailExtracted implements AutopsyVisitableItem { private final class EmailResults extends Observable { + // NOTE: "accounts" object can be accessed by multiple threads and needs to be synchronized private final Map>> accounts = new LinkedHashMap<>(); - // "accounts" object can be accessed by multiple threads and needs to be protected with locks - private final Object accountsLock; EmailResults() { - accountsLock = new Object(); update(); } public Set getAccounts() { - synchronized (accountsLock) { + synchronized (accounts) { return accounts.keySet(); } } public Set getFolders(String account) { - synchronized (accountsLock) { + synchronized (accounts) { return accounts.get(account).keySet(); } } public List getArtifactIds(String account, String folder) { - synchronized (accountsLock) { + synchronized (accounts) { return accounts.get(account).get(folder); } } @SuppressWarnings("deprecation") public void update() { - synchronized (accountsLock) { + synchronized (accounts) { accounts.clear(); if (skCase == null) { return;