Remove dependency from StringUtils to Json

Change-Id: I2a89497fb9ec12a37ba09f4598742e88f6700576
diff --git a/java/src/com/android/inputmethod/keyboard/internal/DynamicGridKeyboard.java b/java/src/com/android/inputmethod/keyboard/internal/DynamicGridKeyboard.java
index f0feb25..e2fd390 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/DynamicGridKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/DynamicGridKeyboard.java
@@ -25,7 +25,7 @@
 import com.android.inputmethod.keyboard.Keyboard;
 import com.android.inputmethod.latin.settings.Settings;
 import com.android.inputmethod.latin.utils.CollectionUtils;
-import com.android.inputmethod.latin.utils.StringUtils;
+import com.android.inputmethod.latin.utils.JsonUtils;
 
 import java.util.ArrayDeque;
 import java.util.ArrayList;
@@ -139,7 +139,7 @@
                 keys.add(key.getCode());
             }
         }
-        final String jsonStr = StringUtils.listToJsonStr(keys);
+        final String jsonStr = JsonUtils.listToJsonStr(keys);
         Settings.writeEmojiRecentKeys(mPrefs, jsonStr);
     }
 
@@ -167,7 +167,7 @@
 
     public void loadRecentKeys(final Collection<DynamicGridKeyboard> keyboards) {
         final String str = Settings.readEmojiRecentKeys(mPrefs);
-        final List<Object> keys = StringUtils.jsonStrToList(str);
+        final List<Object> keys = JsonUtils.jsonStrToList(str);
         for (final Object o : keys) {
             final Key key;
             if (o instanceof Integer) {
diff --git a/java/src/com/android/inputmethod/latin/utils/JsonUtils.java b/java/src/com/android/inputmethod/latin/utils/JsonUtils.java
new file mode 100644
index 0000000..764ef72
--- /dev/null
+++ b/java/src/com/android/inputmethod/latin/utils/JsonUtils.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed 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 com.android.inputmethod.latin.utils;
+
+import android.util.JsonReader;
+import android.util.JsonWriter;
+import android.util.Log;
+
+import java.io.Closeable;
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public final class JsonUtils {
+    private static final String TAG = JsonUtils.class.getSimpleName();
+
+    private static final String INTEGER_CLASS_NAME = Integer.class.getSimpleName();
+    private static final String STRING_CLASS_NAME = String.class.getSimpleName();
+
+    private static final String EMPTY_STRING = "";
+
+    public static List<Object> jsonStrToList(final String s) {
+        final ArrayList<Object> list = CollectionUtils.newArrayList();
+        final JsonReader reader = new JsonReader(new StringReader(s));
+        try {
+            reader.beginArray();
+            while (reader.hasNext()) {
+                reader.beginObject();
+                while (reader.hasNext()) {
+                    final String name = reader.nextName();
+                    if (name.equals(INTEGER_CLASS_NAME)) {
+                        list.add(reader.nextInt());
+                    } else if (name.equals(STRING_CLASS_NAME)) {
+                        list.add(reader.nextString());
+                    } else {
+                        Log.w(TAG, "Invalid name: " + name);
+                        reader.skipValue();
+                    }
+                }
+                reader.endObject();
+            }
+            reader.endArray();
+            return list;
+        } catch (final IOException e) {
+        } finally {
+            close(reader);
+        }
+        return Collections.<Object>emptyList();
+    }
+
+    public static String listToJsonStr(final List<Object> list) {
+        if (list == null || list.isEmpty()) {
+            return EMPTY_STRING;
+        }
+        final StringWriter sw = new StringWriter();
+        final JsonWriter writer = new JsonWriter(sw);
+        try {
+            writer.beginArray();
+            for (final Object o : list) {
+                writer.beginObject();
+                if (o instanceof Integer) {
+                    writer.name(INTEGER_CLASS_NAME).value((Integer)o);
+                } else if (o instanceof String) {
+                    writer.name(STRING_CLASS_NAME).value((String)o);
+                }
+                writer.endObject();
+            }
+            writer.endArray();
+            return sw.toString();
+        } catch (final IOException e) {
+        } finally {
+            close(writer);
+        }
+        return EMPTY_STRING;
+    }
+
+    private static void close(final Closeable closeable) {
+        try {
+            if (closeable != null) {
+                closeable.close();
+            }
+        } catch (final IOException e) {
+            // Ignore
+        }
+    }
+}
diff --git a/java/src/com/android/inputmethod/latin/utils/StringUtils.java b/java/src/com/android/inputmethod/latin/utils/StringUtils.java
index 928000e..df42041 100644
--- a/java/src/com/android/inputmethod/latin/utils/StringUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/StringUtils.java
@@ -17,20 +17,14 @@
 package com.android.inputmethod.latin.utils;
 
 import android.text.TextUtils;
-import android.util.JsonReader;
-import android.util.JsonWriter;
 import android.util.Log;
 
 import com.android.inputmethod.annotations.UsedForTesting;
 import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.settings.SettingsValues;
 
-import java.io.Closeable;
 import java.io.IOException;
-import java.io.StringReader;
-import java.io.StringWriter;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
 
@@ -426,72 +420,4 @@
         }
         return bytes;
     }
-
-    private static final String INTEGER_CLASS_NAME = Integer.class.getSimpleName();
-    private static final String STRING_CLASS_NAME = String.class.getSimpleName();
-
-    public static List<Object> jsonStrToList(final String s) {
-        final ArrayList<Object> list = CollectionUtils.newArrayList();
-        final JsonReader reader = new JsonReader(new StringReader(s));
-        try {
-            reader.beginArray();
-            while (reader.hasNext()) {
-                reader.beginObject();
-                while (reader.hasNext()) {
-                    final String name = reader.nextName();
-                    if (name.equals(INTEGER_CLASS_NAME)) {
-                        list.add(reader.nextInt());
-                    } else if (name.equals(STRING_CLASS_NAME)) {
-                        list.add(reader.nextString());
-                    } else {
-                        Log.w(TAG, "Invalid name: " + name);
-                        reader.skipValue();
-                    }
-                }
-                reader.endObject();
-            }
-            reader.endArray();
-            return list;
-        } catch (final IOException e) {
-        } finally {
-            close(reader);
-        }
-        return Collections.<Object>emptyList();
-    }
-
-    public static String listToJsonStr(final List<Object> list) {
-        if (list == null || list.isEmpty()) {
-            return EMPTY_STRING;
-        }
-        final StringWriter sw = new StringWriter();
-        final JsonWriter writer = new JsonWriter(sw);
-        try {
-            writer.beginArray();
-            for (final Object o : list) {
-                writer.beginObject();
-                if (o instanceof Integer) {
-                    writer.name(INTEGER_CLASS_NAME).value((Integer)o);
-                } else if (o instanceof String) {
-                    writer.name(STRING_CLASS_NAME).value((String)o);
-                }
-                writer.endObject();
-            }
-            writer.endArray();
-            return sw.toString();
-        } catch (final IOException e) {
-        } finally {
-            close(writer);
-        }
-        return EMPTY_STRING;
-    }
-
-    private static void close(final Closeable closeable) {
-        try {
-            if (closeable != null) {
-                closeable.close();
-            }
-        } catch (final IOException e) {
-            // Ignore
-        }
-    }
 }
diff --git a/tests/src/com/android/inputmethod/latin/utils/StringUtilsTests.java b/tests/src/com/android/inputmethod/latin/utils/StringAndJsonUtilsTests.java
similarity index 98%
rename from tests/src/com/android/inputmethod/latin/utils/StringUtilsTests.java
rename to tests/src/com/android/inputmethod/latin/utils/StringAndJsonUtilsTests.java
index 21fcf11..2123e84 100644
--- a/tests/src/com/android/inputmethod/latin/utils/StringUtilsTests.java
+++ b/tests/src/com/android/inputmethod/latin/utils/StringAndJsonUtilsTests.java
@@ -26,7 +26,7 @@
 import java.util.Locale;
 
 @SmallTest
-public class StringUtilsTests extends AndroidTestCase {
+public class StringAndJsonUtilsTests extends AndroidTestCase {
     public void testContainsInArray() {
         assertFalse("empty array", StringUtils.containsInArray("key", new String[0]));
         assertFalse("not in 1 element", StringUtils.containsInArray("key", new String[] {
@@ -292,11 +292,11 @@
         assertTrue(bytesStr.equals(bytesStr2));
     }
 
-    public void testJsonStringUtils() {
+    public void testJsonUtils() {
         final Object[] objs = new Object[] { 1, "aaa", "bbb", 3 };
         final List<Object> objArray = Arrays.asList(objs);
-        final String str = StringUtils.listToJsonStr(objArray);
-        final List<Object> newObjArray = StringUtils.jsonStrToList(str);
+        final String str = JsonUtils.listToJsonStr(objArray);
+        final List<Object> newObjArray = JsonUtils.jsonStrToList(str);
         for (int i = 0; i < objs.length; ++i) {
             assertEquals(objs[i], newObjArray.get(i));
         }