Append entries for real

Test: manual

bug:35447008

Change-Id: I8ddbd39395f5064f7797562c3a423ba555c0c933
This commit is contained in:
Svet Ganov
2017-02-16 20:58:09 -08:00
parent 3d52f79be4
commit 8a10ef58d3
2 changed files with 28 additions and 9 deletions

View File

@@ -2691,9 +2691,9 @@ public class PackageParser {
certSha256 = certSha256.replace(":", "").toLowerCase();
pkg.usesStaticLibraries = ArrayUtils.add(pkg.usesStaticLibraries, lname);
pkg.usesStaticLibrariesVersions = ArrayUtils.appendInt(
pkg.usesStaticLibrariesVersions, version);
pkg.usesStaticLibrariesVersions, version, true);
pkg.usesStaticLibrariesCertDigests = ArrayUtils.appendElement(String.class,
pkg.usesStaticLibrariesCertDigests, certSha256);
pkg.usesStaticLibrariesCertDigests, certSha256, true);
XmlUtils.skipCurrentTag(parser);

View File

@@ -260,10 +260,19 @@ public class ArrayUtils {
*/
@SuppressWarnings("unchecked")
public static @NonNull <T> T[] appendElement(Class<T> kind, @Nullable T[] array, T element) {
return appendElement(kind, array, element, false);
}
/**
* Adds value to given array.
*/
@SuppressWarnings("unchecked")
public static @NonNull <T> T[] appendElement(Class<T> kind, @Nullable T[] array, T element,
boolean allowDuplicates) {
final T[] result;
final int end;
if (array != null) {
if (contains(array, element)) return array;
if (!allowDuplicates && contains(array, element)) return array;
end = array.length;
result = (T[])Array.newInstance(kind, end + 1);
System.arraycopy(array, 0, result, 0, end);
@@ -299,17 +308,19 @@ public class ArrayUtils {
}
/**
* Adds value to given array if not already present, providing set-like
* behavior.
* Adds value to given array.
*/
public static @NonNull int[] appendInt(@Nullable int[] cur, int val) {
public static @NonNull int[] appendInt(@Nullable int[] cur, int val,
boolean allowDuplicates) {
if (cur == null) {
return new int[] { val };
}
final int N = cur.length;
for (int i = 0; i < N; i++) {
if (cur[i] == val) {
return cur;
if (!allowDuplicates) {
for (int i = 0; i < N; i++) {
if (cur[i] == val) {
return cur;
}
}
}
int[] ret = new int[N + 1];
@@ -318,6 +329,14 @@ public class ArrayUtils {
return ret;
}
/**
* Adds value to given array if not already present, providing set-like
* behavior.
*/
public static @NonNull int[] appendInt(@Nullable int[] cur, int val) {
return appendInt(cur, val, false);
}
/**
* Removes value from given array if present, providing set-like behavior.
*/