aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2014-02-14 01:54:48 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2014-02-14 01:54:48 -0800
commit56120831a60228eb7da5a164bc493541b5c00e99 (patch)
tree73a08835d4e063678e6916f4df0ed1ee971dbbc8 /java
parent82b92b21470931691417b428bdb2d5db2eae8ae0 (diff)
parentb136b7dd6f0757e3988639b0794c04d50b4087da (diff)
downloadlatinime-56120831a60228eb7da5a164bc493541b5c00e99.tar.gz
latinime-56120831a60228eb7da5a164bc493541b5c00e99.tar.xz
latinime-56120831a60228eb7da5a164bc493541b5c00e99.zip
am b136b7dd: Merge "Add sanity check to KeybaordTextsTable for debugging"
* commit 'b136b7dd6f0757e3988639b0794c04d50b4087da': Add sanity check to KeybaordTextsTable for debugging
Diffstat (limited to 'java')
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java4
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java29
2 files changed, 24 insertions, 9 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
index 27e3e3006..89221ba24 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
@@ -85,13 +85,13 @@ public final class KeyboardTextsSet {
do {
level++;
if (level >= MAX_STRING_REFERENCE_INDIRECTION) {
- throw new RuntimeException("too many @string/resource indirection: " + text);
+ throw new RuntimeException("Too many " + PREFIX_TEXT + "name indirection: " + text);
}
final int prefixLen = PREFIX_TEXT.length();
final int size = text.length();
if (size < prefixLen) {
- return TextUtils.isEmpty(text) ? null : text;
+ break;
}
sb = null;
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
index a7bcef0f1..93d80c909 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -43,22 +43,36 @@ import java.util.HashMap;
public final class KeyboardTextsTable {
// Name to index map.
private static final HashMap<String, Integer> sNameToIndexesMap = CollectionUtils.newHashMap();
- // Language to texts map.
- private static final HashMap<String, String[]> sLanguageToTextsMap =
+ // Language to texts table map.
+ private static final HashMap<String, String[]> sLanguageToTextsTableMap =
+ CollectionUtils.newHashMap();
+ // TODO: Remove this variable after debugging.
+ // Texts table to language maps.
+ private static final HashMap<String[], String> sTextsTableToLanguageMap =
CollectionUtils.newHashMap();
public static String getText(final String name, final String[] textsTable) {
final Integer indexObj = sNameToIndexesMap.get(name);
if (indexObj == null) {
- throw new RuntimeException("Unknown text name: " + name);
+ throw new RuntimeException("Unknown text name=" + name + " language="
+ + sTextsTableToLanguageMap.get(textsTable));
}
final int index = indexObj;
final String text = (index < textsTable.length) ? textsTable[index] : null;
- return (text != null) ? text : LANGUAGE_DEFAULT[index];
+ if (text != null) {
+ return text;
+ }
+ // Sanity check.
+ if (index >= 0 && index < LANGUAGE_DEFAULT.length) {
+ return LANGUAGE_DEFAULT[index];
+ }
+ // Throw exception for debugging purpose.
+ throw new RuntimeException("Illegal index=" + index + " for name=" + name
+ + " language=" + sTextsTableToLanguageMap.get(textsTable));
}
public static String[] getTextsTable(final String language) {
- final String[] textsTable = sLanguageToTextsMap.get(language);
+ final String[] textsTable = sLanguageToTextsTableMap.get(language);
return textsTable != null ? textsTable : LANGUAGE_DEFAULT;
}
@@ -3632,8 +3646,9 @@ public final class KeyboardTextsTable {
for (int i = 0; i < LANGUAGES_AND_TEXTS.length; i += 2) {
final String language = (String)LANGUAGES_AND_TEXTS[i];
- final String[] texts = (String[])LANGUAGES_AND_TEXTS[i + 1];
- sLanguageToTextsMap.put(language, texts);
+ final String[] textsTable = (String[])LANGUAGES_AND_TEXTS[i + 1];
+ sLanguageToTextsTableMap.put(language, textsTable);
+ sTextsTableToLanguageMap.put(textsTable, language);
}
}
}