aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2012-05-24 03:39:09 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-05-24 03:39:09 -0700
commit0c20714403d3548d1500cf8ac30041bedeae23d5 (patch)
treee9a972dce03a142ae82593dcd8ea54f892bd226d /java
parentf11c8cd15a0b24231dba886c2135833a94923793 (diff)
parent1b06b59e28743b713947947437ea5b312477f808 (diff)
downloadlatinime-0c20714403d3548d1500cf8ac30041bedeae23d5.tar.gz
latinime-0c20714403d3548d1500cf8ac30041bedeae23d5.tar.xz
latinime-0c20714403d3548d1500cf8ac30041bedeae23d5.zip
Merge "Fix a bug with a concurrent modification of a map." into jb-dev
Diffstat (limited to 'java')
-rw-r--r--java/src/com/android/inputmethod/latin/AutoCorrection.java22
-rw-r--r--java/src/com/android/inputmethod/latin/Suggest.java17
2 files changed, 21 insertions, 18 deletions
diff --git a/java/src/com/android/inputmethod/latin/AutoCorrection.java b/java/src/com/android/inputmethod/latin/AutoCorrection.java
index da1936aef..32b213e67 100644
--- a/java/src/com/android/inputmethod/latin/AutoCorrection.java
+++ b/java/src/com/android/inputmethod/latin/AutoCorrection.java
@@ -22,7 +22,7 @@ import android.text.TextUtils;
import android.util.Log;
import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.concurrent.ConcurrentHashMap;
public class AutoCorrection {
private static final boolean DBG = LatinImeLogger.sDBG;
@@ -33,10 +33,10 @@ public class AutoCorrection {
}
public static CharSequence computeAutoCorrectionWord(
- HashMap<String, Dictionary> dictionaries,
- WordComposer wordComposer, ArrayList<SuggestedWordInfo> suggestions,
- CharSequence consideredWord, float autoCorrectionThreshold,
- CharSequence whitelistedWord) {
+ final ConcurrentHashMap<String, Dictionary> dictionaries,
+ final WordComposer wordComposer, final ArrayList<SuggestedWordInfo> suggestions,
+ final CharSequence consideredWord, final float autoCorrectionThreshold,
+ final CharSequence whitelistedWord) {
if (hasAutoCorrectionForWhitelistedWord(whitelistedWord)) {
return whitelistedWord;
} else if (hasAutoCorrectionForConsideredWord(
@@ -49,8 +49,8 @@ public class AutoCorrection {
return null;
}
- public static boolean isValidWord(
- HashMap<String, Dictionary> dictionaries, CharSequence word, boolean ignoreCase) {
+ public static boolean isValidWord(final ConcurrentHashMap<String, Dictionary> dictionaries,
+ CharSequence word, boolean ignoreCase) {
if (TextUtils.isEmpty(word)) {
return false;
}
@@ -75,7 +75,8 @@ public class AutoCorrection {
}
public static boolean allowsToBeAutoCorrected(
- HashMap<String, Dictionary> dictionaries, CharSequence word, boolean ignoreCase) {
+ final ConcurrentHashMap<String, Dictionary> dictionaries,
+ final CharSequence word, final boolean ignoreCase) {
final WhitelistDictionary whitelistDictionary =
(WhitelistDictionary)dictionaries.get(Suggest.DICT_KEY_WHITELIST);
// If "word" is in the whitelist dictionary, it should not be auto corrected.
@@ -91,8 +92,9 @@ public class AutoCorrection {
}
private static boolean hasAutoCorrectionForConsideredWord(
- HashMap<String, Dictionary> dictionaries, WordComposer wordComposer,
- ArrayList<SuggestedWordInfo> suggestions, CharSequence consideredWord) {
+ final ConcurrentHashMap<String, Dictionary> dictionaries,
+ final WordComposer wordComposer, final ArrayList<SuggestedWordInfo> suggestions,
+ final CharSequence consideredWord) {
if (TextUtils.isEmpty(consideredWord)) return false;
return wordComposer.size() > 1 && suggestions.size() > 0
&& !allowsToBeAutoCorrected(dictionaries, consideredWord, false);
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index c98a27b64..336a76f4b 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -26,9 +26,9 @@ import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
import java.io.File;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Locale;
+import java.util.concurrent.ConcurrentHashMap;
/**
* This class loads a dictionary and provides a list of suggestions for a given sequence of
@@ -68,10 +68,10 @@ public class Suggest implements Dictionary.WordCallback {
private boolean mHasMainDictionary;
private Dictionary mContactsDict;
private WhitelistDictionary mWhiteListDictionary;
- private final HashMap<String, Dictionary> mUnigramDictionaries =
- new HashMap<String, Dictionary>();
- private final HashMap<String, Dictionary> mBigramDictionaries =
- new HashMap<String, Dictionary>();
+ private final ConcurrentHashMap<String, Dictionary> mUnigramDictionaries =
+ new ConcurrentHashMap<String, Dictionary>();
+ private final ConcurrentHashMap<String, Dictionary> mBigramDictionaries =
+ new ConcurrentHashMap<String, Dictionary>();
private int mPrefMaxSuggestions = 18;
@@ -117,8 +117,9 @@ public class Suggest implements Dictionary.WordCallback {
initWhitelistAndAutocorrectAndPool(context, locale);
}
- private static void addOrReplaceDictionary(HashMap<String, Dictionary> dictionaries, String key,
- Dictionary dict) {
+ private static void addOrReplaceDictionary(
+ final ConcurrentHashMap<String, Dictionary> dictionaries,
+ final String key, final Dictionary dict) {
final Dictionary oldDict = (dict == null)
? dictionaries.remove(key)
: dictionaries.put(key, dict);
@@ -151,7 +152,7 @@ public class Suggest implements Dictionary.WordCallback {
return mContactsDict;
}
- public HashMap<String, Dictionary> getUnigramDictionaries() {
+ public ConcurrentHashMap<String, Dictionary> getUnigramDictionaries() {
return mUnigramDictionaries;
}