From 5de043f17c2fcb35b28f7ebe24dcc19ec0a302c5 Mon Sep 17 00:00:00 2001 From: Marcono1234 Date: Thu, 30 Dec 2021 22:59:00 +0100 Subject: [PATCH 1/3] Change target Java version to 7 --- gson/bnd.bnd | 4 ++-- gson/build.gradle | 4 ++-- gson/pom.xml | 6 +++--- .../main/java/com/google/gson/internal/$Gson$Types.java | 5 +++-- .../com/google/gson/stream/MalformedJsonException.java | 9 ++------- .../java/com/google/gson/internal/LinkedTreeMapTest.java | 2 +- pom.xml | 2 +- 7 files changed, 14 insertions(+), 18 deletions(-) diff --git a/gson/bnd.bnd b/gson/bnd.bnd index 07746f0a48..626a0c5bec 100644 --- a/gson/bnd.bnd +++ b/gson/bnd.bnd @@ -3,8 +3,8 @@ Bundle-Name: ${project.name} Bundle-Description: ${project.description} Bundle-Vendor: Google Gson Project Bundle-ContactAddress: ${project.parent.url} -Bundle-RequiredExecutionEnvironment: JavaSE-1.6, JavaSE-1.7, JavaSE-1.8 -Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.6))" +Bundle-RequiredExecutionEnvironment: JavaSE-1.7, JavaSE-1.8 +Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.7))" # Optional dependency for JDK's sun.misc.Unsafe # https://bnd.bndtools.org/chapters/920-faq.html#remove-unwanted-imports- diff --git a/gson/build.gradle b/gson/build.gradle index 4dd24c1d0f..5a8919bcef 100644 --- a/gson/build.gradle +++ b/gson/build.gradle @@ -4,8 +4,8 @@ apply plugin: 'maven' group = 'com.google.code.gson' version = '2.8.6-SNAPSHOT' -sourceCompatibility = 1.6 -targetCompatibility = 1.6 +sourceCompatibility = 1.7 +targetCompatibility = 1.7 sourceSets.main.java.exclude("**/module-info.java") dependencies { diff --git a/gson/pom.xml b/gson/pom.xml index 31ea881f6b..1b1eb0d117 100644 --- a/gson/pom.xml +++ b/gson/pom.xml @@ -58,8 +58,8 @@ [1.5,9) - 1.6 - 1.6 + 1.7 + 1.7 @@ -83,7 +83,7 @@ com.google.gson.internal:com.google.gson.internal.bind - https://docs.oracle.com/javase/6/docs/api/ + https://docs.oracle.com/javase/7/docs/api/ diff --git a/gson/src/main/java/com/google/gson/internal/$Gson$Types.java b/gson/src/main/java/com/google/gson/internal/$Gson$Types.java index 617a644b1f..32a8456504 100644 --- a/gson/src/main/java/com/google/gson/internal/$Gson$Types.java +++ b/gson/src/main/java/com/google/gson/internal/$Gson$Types.java @@ -574,8 +574,9 @@ public Type getGenericComponentType() { /** * The WildcardType interface supports multiple upper bounds and multiple - * lower bounds. We only support what the Java 6 language needs - at most one - * bound. If a lower bound is set, the upper bound must be Object.class. + * lower bounds. We only support what the target Java version supports - at most one + * bound, see also https://bugs.openjdk.java.net/browse/JDK-8250660. If a lower bound + * is set, the upper bound must be Object.class. */ private static final class WildcardTypeImpl implements WildcardType, Serializable { private final Type upperBound; diff --git a/gson/src/main/java/com/google/gson/stream/MalformedJsonException.java b/gson/src/main/java/com/google/gson/stream/MalformedJsonException.java index 9da70ebccd..65b0a7719b 100644 --- a/gson/src/main/java/com/google/gson/stream/MalformedJsonException.java +++ b/gson/src/main/java/com/google/gson/stream/MalformedJsonException.java @@ -30,15 +30,10 @@ public MalformedJsonException(String msg) { } public MalformedJsonException(String msg, Throwable throwable) { - super(msg); - // Using initCause() instead of calling super() because Java 1.5 didn't retrofit IOException - // with a constructor with Throwable. This was done in Java 1.6 - initCause(throwable); + super(msg, throwable); } public MalformedJsonException(Throwable throwable) { - // Using initCause() instead of calling super() because Java 1.5 didn't retrofit IOException - // with a constructor with Throwable. This was done in Java 1.6 - initCause(throwable); + super(throwable); } } diff --git a/gson/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java b/gson/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java index 68220cf631..fa8b08c3e0 100644 --- a/gson/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java +++ b/gson/src/test/java/com/google/gson/internal/LinkedTreeMapTest.java @@ -161,7 +161,7 @@ public void testJavaSerialization() throws IOException, ClassNotFoundException { } @SafeVarargs - private void assertIterationOrder(Iterable actual, T... expected) { + private final void assertIterationOrder(Iterable actual, T... expected) { ArrayList actualList = new ArrayList(); for (T t : actual) { actualList.add(t); diff --git a/pom.xml b/pom.xml index 5e16a883b1..2c6dc9d617 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ UTF-8 - 1.6 + 1.7 From 60e2390adbd92197d8baf25ce74c908f00f8ea1e Mon Sep 17 00:00:00 2001 From: Marcono1234 Date: Thu, 30 Dec 2021 23:22:13 +0100 Subject: [PATCH 2/3] Document Gson requirements --- README.md | 19 +++++++++++++++++++ codegen/README.md | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index dccace4860..351fed1bf8 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,25 @@ Maven: ![Build Status](https://github.com/google/gson/actions/workflows/build.yml/badge.svg) +### Requirements +#### Java version +- Gson 2.9.0 and newer: Java 7 +- Gson 2.8.9 and older: Java 6 + +Despite supporting older Java versions, Gson also provides a JPMS module descriptor (module name `com.google.gson`) for users of Java 9 or newer. + +#### JPMS dependencies (Java 9+) +These are the optional Java Platform Module System (JPMS) JDK modules which Gson depends on. +This only applies when running Java 9 or newer. + +- `java.sql` (optional since Gson 2.8.9) +When this module is present, Gson provides default adapters for some SQL date and time classes. + +- `jdk.unsupported`, respectively class `sun.misc.Unsafe` (optional) +When this module is present, Gson can use the `Unsafe` class to create instances of classes without no-args constructor. +However, care should be taken when relying on this. `Unsafe` is not available in all environments and its usage has some pitfalls, +see [`GsonBuilder.disableJdkUnsafe()`](https://javadoc.io/doc/com.google.code.gson/gson/latest/com.google.gson/com/google/gson/GsonBuilder.html#disableJdkUnsafe()). + ### Documentation * [API Javadoc](https://www.javadoc.io/doc/com.google.code.gson/gson): Documentation for the current release * [User guide](https://github.com/google/gson/blob/master/UserGuide.md): This guide contains examples on how to use Gson in your code. diff --git a/codegen/README.md b/codegen/README.md index adee425a23..c9a9caf8d9 100644 --- a/codegen/README.md +++ b/codegen/README.md @@ -1,4 +1,4 @@ -# gson-codegen +# codegen This Maven module contains the source code for automatically generating Gson type adapters. From 1fb719d0914b427419604875b3772ce45d2f4748 Mon Sep 17 00:00:00 2001 From: Marcono1234 Date: Thu, 30 Dec 2021 23:57:56 +0100 Subject: [PATCH 3/3] Add package-info.java for `stream` package --- gson/src/main/java/com/google/gson/stream/package-info.java | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 gson/src/main/java/com/google/gson/stream/package-info.java diff --git a/gson/src/main/java/com/google/gson/stream/package-info.java b/gson/src/main/java/com/google/gson/stream/package-info.java new file mode 100644 index 0000000000..bed6c62927 --- /dev/null +++ b/gson/src/main/java/com/google/gson/stream/package-info.java @@ -0,0 +1,4 @@ +/** + * This package provides classes for processing JSON in an efficient streaming way. + */ +package com.google.gson.stream;