Snap for 11904077 from eab9abe11108315a75fcbd52d38bf6231b419a41 to sdk-release
Change-Id: I962042bef14e9de69c142399ac8173958879ef54
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUBinary.java b/android_icu4j/src/main/java/android/icu/impl/ICUBinary.java
index b1f9a72..5e0c57f 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUBinary.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUBinary.java
@@ -21,6 +21,7 @@
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import java.util.MissingResourceException;
import java.util.Set;
@@ -283,7 +284,8 @@
}
}
- private static final List<DataFile> icuDataFiles = new ArrayList<>();
+ // Android-changed: make icuDataFiles immutable and assign value exactly once.
+ private static final List<DataFile> icuDataFiles;
static {
// BEGIN Android-changed: Initialize ICU data file paths.
@@ -297,9 +299,15 @@
dataPath = AndroidDataFiles.generateIcuDataPath();
}
// END Android-changed: Initialize ICU data file paths.
+ // BEGIN Android-changed: make icuDataFiles immutable and assign value exactly once.
if (dataPath != null) {
- addDataFilesFromPath(dataPath, icuDataFiles);
+ List<DataFile> resolvedFiles = new ArrayList<>();
+ addDataFilesFromPath(dataPath, resolvedFiles);
+ icuDataFiles = Collections.unmodifiableList(resolvedFiles);
+ } else {
+ icuDataFiles = Collections.emptyList();
}
+ // END Android-changed: make icuDataFiles immutable and assign value exactly once.
}
private static void addDataFilesFromPath(String dataPath, List<DataFile> files) {
@@ -322,7 +330,8 @@
path = path.substring(0, path.length() - 1);
}
if (path.length() != 0) {
- addDataFilesFromFolder(new File(path), new StringBuilder(), icuDataFiles);
+ // Android-changed: pass `files` argument and not icuDataFiles.
+ addDataFilesFromFolder(new File(path), new StringBuilder(), files);
}
if (sepIndex < 0) {
break;
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUBinary.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUBinary.java
index bd4e8de..7e1d79e 100644
--- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUBinary.java
+++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUBinary.java
@@ -20,6 +20,7 @@
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import java.util.MissingResourceException;
import java.util.Set;
@@ -279,7 +280,8 @@
}
}
- private static final List<DataFile> icuDataFiles = new ArrayList<>();
+ // Android-changed: make icuDataFiles immutable and assign value exactly once.
+ private static final List<DataFile> icuDataFiles;
static {
// BEGIN Android-changed: Initialize ICU data file paths.
@@ -293,9 +295,15 @@
dataPath = AndroidDataFiles.generateIcuDataPath();
}
// END Android-changed: Initialize ICU data file paths.
+ // BEGIN Android-changed: make icuDataFiles immutable and assign value exactly once.
if (dataPath != null) {
- addDataFilesFromPath(dataPath, icuDataFiles);
+ List<DataFile> resolvedFiles = new ArrayList<>();
+ addDataFilesFromPath(dataPath, resolvedFiles);
+ icuDataFiles = Collections.unmodifiableList(resolvedFiles);
+ } else {
+ icuDataFiles = Collections.emptyList();
}
+ // END Android-changed: make icuDataFiles immutable and assign value exactly once.
}
private static void addDataFilesFromPath(String dataPath, List<DataFile> files) {
@@ -318,7 +326,8 @@
path = path.substring(0, path.length() - 1);
}
if (path.length() != 0) {
- addDataFilesFromFolder(new File(path), new StringBuilder(), icuDataFiles);
+ // Android-changed: pass `files` argument and not icuDataFiles.
+ addDataFilesFromFolder(new File(path), new StringBuilder(), files);
}
if (sepIndex < 0) {
break;