[TestPrep7] Encapsulate JsonWriter creation

Change-Id: I4e97fa28dd0bb1101edc0db03f024432fee6f6fe
diff --git a/java/src/com/android/inputmethod/research/ResearchLog.java b/java/src/com/android/inputmethod/research/ResearchLog.java
index 4dff175..2303ebc 100644
--- a/java/src/com/android/inputmethod/research/ResearchLog.java
+++ b/java/src/com/android/inputmethod/research/ResearchLog.java
@@ -209,26 +209,37 @@
     public JsonWriter getInitializedJsonWriterLocked() {
         try {
             if (mJsonWriter == NULL_JSON_WRITER && mFile != null) {
-                final FileOutputStream fos =
-                        mContext.openFileOutput(mFile.getName(), Context.MODE_PRIVATE);
-                mJsonWriter = new JsonWriter(new BufferedWriter(new OutputStreamWriter(fos)));
-                mJsonWriter.beginArray();
-                mHasWrittenData = true;
+                final JsonWriter jsonWriter = createJsonWriter(mContext, mFile);
+                if (jsonWriter != null) {
+                    jsonWriter.beginArray();
+                    mJsonWriter = jsonWriter;
+                    mHasWrittenData = true;
+                }
             }
         } catch (IOException e) {
-            e.printStackTrace();
-            Log.w(TAG, "Error in JsonWriter; disabling logging");
+            Log.w(TAG, "Error in JsonWriter; disabling logging", e);
             try {
                 mJsonWriter.close();
             } catch (IllegalStateException e1) {
                 // Assume that this is just the json not being terminated properly.
                 // Ignore
             } catch (IOException e1) {
-                e1.printStackTrace();
+                Log.w(TAG, "Error in closing JsonWriter; disabling logging", e1);
             } finally {
                 mJsonWriter = NULL_JSON_WRITER;
             }
         }
         return mJsonWriter;
     }
+
+    /**
+     * Create the JsonWriter to write the ResearchLog to.
+     *
+     * This method may be overriden in testing to redirect the output.
+     */
+    /* package for test */ JsonWriter createJsonWriter(final Context context, final File file)
+            throws IOException {
+        return new JsonWriter(new BufferedWriter(new OutputStreamWriter(
+                context.openFileOutput(file.getName(), Context.MODE_PRIVATE))));
+    }
 }