summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Richard Uhler <ruhler@google.com> 2019-02-27 11:18:45 +0000
committer Richard Uhler <ruhler@google.com> 2019-02-27 14:41:41 +0000
commitf16ebd08113fd6060a6420be6a436688bc797211 (patch)
tree1a1887948ec08935600b6247725452a1a6546789
parent479a296d6d3e0058e78791f1d272376b9a1032e0 (diff)
Miscellaneous cleanup in RollbackStore.
* Factor out code for reading and writing RollbackInfo from json. * Make methods static where appropriate. * Minor other cleanup. In preparation for having RollbackData reuse RollbackInfo so we don't end up with duplicate copies of PackageRollbackInfo for a rollback so we can fix the bug when doing userdata restore for staged installs. Test: atest RollbackTest Bug: 124044231 Change-Id: I4f579393c1ffe8d519560ed223f61b002d730c50
-rw-r--r--services/core/java/com/android/server/rollback/RollbackStore.java69
1 files changed, 37 insertions, 32 deletions
diff --git a/services/core/java/com/android/server/rollback/RollbackStore.java b/services/core/java/com/android/server/rollback/RollbackStore.java
index 99e102a2edb4..23defadf5421 100644
--- a/services/core/java/com/android/server/rollback/RollbackStore.java
+++ b/services/core/java/com/android/server/rollback/RollbackStore.java
@@ -183,6 +183,25 @@ class RollbackStore {
return ceSnapshotInodes;
}
+ private static JSONObject rollbackInfoToJson(RollbackInfo rollback) throws JSONException {
+ JSONObject json = new JSONObject();
+ json.put("rollbackId", rollback.getRollbackId());
+ json.put("packages", toJson(rollback.getPackages()));
+ json.put("isStaged", rollback.isStaged());
+ json.put("causePackages", versionedPackagesToJson(rollback.getCausePackages()));
+ json.put("committedSessionId", rollback.getCommittedSessionId());
+ return json;
+ }
+
+ private static RollbackInfo rollbackInfoFromJson(JSONObject json) throws JSONException {
+ return new RollbackInfo(
+ json.getInt("rollbackId"),
+ packageRollbackInfosFromJson(json.getJSONArray("packages")),
+ json.getBoolean("isStaged"),
+ versionedPackagesFromJson(json.getJSONArray("causePackages")),
+ json.getInt("committedSessionId"));
+ }
+
/**
* Reads the list of recently executed rollbacks from persistent storage.
*/
@@ -197,17 +216,7 @@ class RollbackStore {
JSONObject object = new JSONObject(jsonString);
JSONArray array = object.getJSONArray("recentlyExecuted");
for (int i = 0; i < array.length(); ++i) {
- JSONObject element = array.getJSONObject(i);
- int rollbackId = element.getInt("rollbackId");
- List<PackageRollbackInfo> packages = packageRollbackInfosFromJson(
- element.getJSONArray("packages"));
- boolean isStaged = element.getBoolean("isStaged");
- List<VersionedPackage> causePackages = versionedPackagesFromJson(
- element.getJSONArray("causePackages"));
- int committedSessionId = element.getInt("committedSessionId");
- RollbackInfo rollback = new RollbackInfo(rollbackId, packages, isStaged,
- causePackages, committedSessionId);
- recentlyExecutedRollbacks.add(rollback);
+ recentlyExecutedRollbacks.add(rollbackInfoFromJson(array.getJSONObject(i)));
}
} catch (IOException | JSONException e) {
// TODO: What to do here? Surely we shouldn't just forget about
@@ -303,13 +312,7 @@ class RollbackStore {
for (int i = 0; i < recentlyExecutedRollbacks.size(); ++i) {
RollbackInfo rollback = recentlyExecutedRollbacks.get(i);
- JSONObject element = new JSONObject();
- element.put("rollbackId", rollback.getRollbackId());
- element.put("packages", toJson(rollback.getPackages()));
- element.put("isStaged", rollback.isStaged());
- element.put("causePackages", versionedPackagesToJson(rollback.getCausePackages()));
- element.put("committedSessionId", rollback.getCommittedSessionId());
- array.put(element);
+ array.put(rollbackInfoToJson(rollback));
}
PrintWriter pw = new PrintWriter(mRecentlyExecutedRollbacksFile);
@@ -325,17 +328,17 @@ class RollbackStore {
* Reads the metadata for a rollback from the given directory.
* @throws IOException in case of error reading the data.
*/
- private RollbackData loadRollbackData(File backupDir) throws IOException {
+ private static RollbackData loadRollbackData(File backupDir) throws IOException {
try {
File rollbackJsonFile = new File(backupDir, "rollback.json");
JSONObject dataJson = new JSONObject(
IoUtils.readFileAsString(rollbackJsonFile.getAbsolutePath()));
- int rollbackId = dataJson.getInt("rollbackId");
- int stagedSessionId = dataJson.getInt("stagedSessionId");
- boolean isAvailable = dataJson.getBoolean("isAvailable");
- RollbackData data = new RollbackData(rollbackId, backupDir,
- stagedSessionId, isAvailable);
+ RollbackData data = new RollbackData(
+ dataJson.getInt("rollbackId"),
+ backupDir,
+ dataJson.getInt("stagedSessionId"),
+ dataJson.getBoolean("isAvailable"));
data.packages.addAll(packageRollbackInfosFromJson(dataJson.getJSONArray("packages")));
data.timestamp = Instant.parse(dataJson.getString("timestamp"));
data.apkSessionId = dataJson.getInt("apkSessionId");
@@ -346,20 +349,20 @@ class RollbackStore {
}
}
- private JSONObject toJson(VersionedPackage pkg) throws JSONException {
+ private static JSONObject toJson(VersionedPackage pkg) throws JSONException {
JSONObject json = new JSONObject();
json.put("packageName", pkg.getPackageName());
json.put("longVersionCode", pkg.getLongVersionCode());
return json;
}
- private VersionedPackage versionedPackageFromJson(JSONObject json) throws JSONException {
+ private static VersionedPackage versionedPackageFromJson(JSONObject json) throws JSONException {
String packageName = json.getString("packageName");
long longVersionCode = json.getLong("longVersionCode");
return new VersionedPackage(packageName, longVersionCode);
}
- private JSONObject toJson(PackageRollbackInfo info) throws JSONException {
+ private static JSONObject toJson(PackageRollbackInfo info) throws JSONException {
JSONObject json = new JSONObject();
json.put("versionRolledBackFrom", toJson(info.getVersionRolledBackFrom()));
json.put("versionRolledBackTo", toJson(info.getVersionRolledBackTo()));
@@ -378,7 +381,8 @@ class RollbackStore {
return json;
}
- private PackageRollbackInfo packageRollbackInfoFromJson(JSONObject json) throws JSONException {
+ private static PackageRollbackInfo packageRollbackInfoFromJson(JSONObject json)
+ throws JSONException {
VersionedPackage versionRolledBackFrom = versionedPackageFromJson(
json.getJSONObject("versionRolledBackFrom"));
VersionedPackage versionRolledBackTo = versionedPackageFromJson(
@@ -399,7 +403,7 @@ class RollbackStore {
pendingBackups, pendingRestores, isApex, installedUsers, ceSnapshotInodes);
}
- private JSONArray versionedPackagesToJson(List<VersionedPackage> packages)
+ private static JSONArray versionedPackagesToJson(List<VersionedPackage> packages)
throws JSONException {
JSONArray json = new JSONArray();
for (VersionedPackage pkg : packages) {
@@ -408,7 +412,8 @@ class RollbackStore {
return json;
}
- private List<VersionedPackage> versionedPackagesFromJson(JSONArray json) throws JSONException {
+ private static List<VersionedPackage> versionedPackagesFromJson(JSONArray json)
+ throws JSONException {
List<VersionedPackage> packages = new ArrayList<>();
for (int i = 0; i < json.length(); ++i) {
packages.add(versionedPackageFromJson(json.getJSONObject(i)));
@@ -416,7 +421,7 @@ class RollbackStore {
return packages;
}
- private JSONArray toJson(List<PackageRollbackInfo> infos) throws JSONException {
+ private static JSONArray toJson(List<PackageRollbackInfo> infos) throws JSONException {
JSONArray json = new JSONArray();
for (PackageRollbackInfo info : infos) {
json.put(toJson(info));
@@ -424,7 +429,7 @@ class RollbackStore {
return json;
}
- private List<PackageRollbackInfo> packageRollbackInfosFromJson(JSONArray json)
+ private static List<PackageRollbackInfo> packageRollbackInfosFromJson(JSONArray json)
throws JSONException {
List<PackageRollbackInfo> infos = new ArrayList<>();
for (int i = 0; i < json.length(); ++i) {