From 384e1b4a3e3dd3e06035efa0833a011bb6e82351 Mon Sep 17 00:00:00 2001 From: Marcono1234 Date: Wed, 5 Aug 2026 19:30:38 +0200 Subject: [PATCH 1/2] Update code and docs for minimum Android API level 24 The overridden methods for NonNullElementWrapperList are already covered by the tests in JsonArrayAsListTest. --- README.md | 2 ++ .../gson/internal/NonNullElementWrapperList.java | 15 ++++++++++++--- .../google/gson/internal/bind/TypeAdapters.java | 11 ++--------- pom.xml | 2 +- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 90026e44a7..093b987fc7 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,8 @@ see [`GsonBuilder.disableJdkUnsafe()`](https://javadoc.io/doc/com.google.code.gs #### Minimum Android API level +- Gson 2.15.0 and newer: API level 24 +- Gson 2.14.0 and newer: API level 23 - Gson 2.11.0 and newer: API level 21 - Gson 2.10.1 and older: API level 19 diff --git a/gson/src/main/java/com/google/gson/internal/NonNullElementWrapperList.java b/gson/src/main/java/com/google/gson/internal/NonNullElementWrapperList.java index 45a9c2905b..a683c5da02 100644 --- a/gson/src/main/java/com/google/gson/internal/NonNullElementWrapperList.java +++ b/gson/src/main/java/com/google/gson/internal/NonNullElementWrapperList.java @@ -19,9 +19,11 @@ import java.util.AbstractList; import java.util.ArrayList; import java.util.Collection; +import java.util.Comparator; import java.util.List; import java.util.Objects; import java.util.RandomAccess; +import java.util.Spliterator; /** * {@link List} which wraps another {@code List} but prevents insertion of {@code null} elements. @@ -117,6 +119,16 @@ public T[] toArray(T[] a) { return delegate.toArray(a); } + @Override + public void sort(Comparator c) { + delegate.sort(c); + } + + @Override + public Spliterator spliterator() { + return delegate.spliterator(); + } + @Override public boolean equals(Object o) { return delegate.equals(o); @@ -126,7 +138,4 @@ public boolean equals(Object o) { public int hashCode() { return delegate.hashCode(); } - - // Maybe also delegate List#sort and List#spliterator in the future, but that - // requires Android API level 24 } diff --git a/gson/src/main/java/com/google/gson/internal/bind/TypeAdapters.java b/gson/src/main/java/com/google/gson/internal/bind/TypeAdapters.java index b20e93aca6..54582e2a27 100644 --- a/gson/src/main/java/com/google/gson/internal/bind/TypeAdapters.java +++ b/gson/src/main/java/com/google/gson/internal/bind/TypeAdapters.java @@ -16,6 +16,8 @@ package com.google.gson.internal.bind; +import static java.lang.Math.toIntExact; + import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonIOException; @@ -903,15 +905,6 @@ long[] integerValues(Calendar calendar) { } }; - // TODO: update this when we are on at least Android API Level 24. - private static int toIntExact(long x) { - int i = (int) x; - if (i != x) { - throw new IllegalArgumentException("Too big for an int: " + x); - } - return i; - } - public static final TypeAdapterFactory CALENDAR_FACTORY = newFactoryForMultipleTypes(Calendar.class, GregorianCalendar.class, CALENDAR); diff --git a/pom.xml b/pom.xml index 3098b9120f..fe4327a97c 100644 --- a/pom.xml +++ b/pom.xml @@ -523,7 +523,7 @@ ${gson.isTestModule} - + net.sf.androidscents.signature android-api-level-24 7.0_r2 From a6ed419144252e80e61c86f6ed2cdf6bb2ff3f5c Mon Sep 17 00:00:00 2001 From: Marcono1234 Date: Wed, 5 Aug 2026 19:47:24 +0200 Subject: [PATCH 2/2] Doc API level 21 as minimum version for Gson 2.14.0 The minimum API level for the `check-android-compatibility` check had been increased to 23, but it seems there was no usage from that API level. --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 093b987fc7..45dc13f814 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,6 @@ see [`GsonBuilder.disableJdkUnsafe()`](https://javadoc.io/doc/com.google.code.gs #### Minimum Android API level - Gson 2.15.0 and newer: API level 24 -- Gson 2.14.0 and newer: API level 23 - Gson 2.11.0 and newer: API level 21 - Gson 2.10.1 and older: API level 19