release-request-d642586e-3e25-49f4-8b4c-acad0e3f63d8-for-git_oc-mr1-release-4249777 snap-temp-L81500000089724408

Change-Id: I4d3ad3e3e01581f884684c4472f7ee15594b9329
diff --git a/src/com/android/loganalysis/item/DumpsysPackageStatsItem.java b/src/com/android/loganalysis/item/DumpsysPackageStatsItem.java
index 14c4073..b10f055 100644
--- a/src/com/android/loganalysis/item/DumpsysPackageStatsItem.java
+++ b/src/com/android/loganalysis/item/DumpsysPackageStatsItem.java
@@ -19,6 +19,8 @@
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import java.util.Map;
+
 /** An {@link IItem} used to store apps and their version codes and names. */
 public class DumpsysPackageStatsItem extends GenericMapItem<AppVersionItem> {
     private static final long serialVersionUID = 1L;
@@ -31,7 +33,11 @@
     public JSONObject toJson() {
         JSONObject object = new JSONObject();
         try {
-            object.put(APP_VERSIONS, super.toJson());
+            JSONObject appVersions = new JSONObject();
+            for (Map.Entry<String, AppVersionItem> entry : entrySet()) {
+                appVersions.put(entry.getKey(), entry.getValue().toJson());
+            }
+            object.put(APP_VERSIONS, appVersions);
         } catch (JSONException e) {
             // Ignore
         }
diff --git a/tests/src/com/android/loganalysis/item/DumpsysPackageStatsItemTest.java b/tests/src/com/android/loganalysis/item/DumpsysPackageStatsItemTest.java
new file mode 100644
index 0000000..dd60500
--- /dev/null
+++ b/tests/src/com/android/loganalysis/item/DumpsysPackageStatsItemTest.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2017 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.loganalysis.item;
+
+import junit.framework.TestCase;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+/** Unit test for {@link DumpsysPackageStatsItem}. */
+public class DumpsysPackageStatsItemTest extends TestCase {
+
+    /** Test that {@link DumpsysPackageStatsItem#toJson()} returns correctly. */
+    public void testToJson() throws JSONException {
+        DumpsysPackageStatsItem item = new DumpsysPackageStatsItem();
+
+        item.put("com.google.android.calculator", new AppVersionItem(73000302, "7.3 (3821978)"));
+        item.put(
+                "com.google.android.googlequicksearchbox",
+                new AppVersionItem(300734793, "6.16.35.26.arm64"));
+
+        // Convert to JSON string and back again
+        JSONObject output = new JSONObject(item.toJson().toString());
+
+        assertTrue(output.has(DumpsysPackageStatsItem.APP_VERSIONS));
+
+        JSONObject appVersionsJson = output.getJSONObject(DumpsysPackageStatsItem.APP_VERSIONS);
+
+        assertEquals(2, appVersionsJson.length());
+        final JSONObject calcAppVersionJson =
+                appVersionsJson.getJSONObject("com.google.android.calculator");
+        assertEquals(73000302, calcAppVersionJson.getInt(AppVersionItem.VERSION_CODE));
+        assertEquals("7.3 (3821978)", calcAppVersionJson.getString(AppVersionItem.VERSION_NAME));
+        final JSONObject gsaAppVersionJson =
+                appVersionsJson.getJSONObject("com.google.android.googlequicksearchbox");
+        assertEquals(300734793, gsaAppVersionJson.getInt(AppVersionItem.VERSION_CODE));
+        assertEquals("6.16.35.26.arm64", gsaAppVersionJson.getString(AppVersionItem.VERSION_NAME));
+    }
+}
diff --git a/tests/src/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java b/tests/src/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java
index faa51b2..ee15b78 100644
--- a/tests/src/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java
+++ b/tests/src/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java
@@ -15,8 +15,8 @@
  */
 package com.android.loganalysis.parser;
 
-import com.android.loganalysis.item.DumpsysPackageStatsItem;
 import com.android.loganalysis.item.AppVersionItem;
+import com.android.loganalysis.item.DumpsysPackageStatsItem;
 
 import junit.framework.TestCase;