Commit Graph

1698 Commits

Author SHA1 Message Date
Marcono1234
18b9ba407d
Improve GsonTest.testGetAdapter_Concurrency (#2177)
Makes the test implementation more reliable to prevent flaws in the test
setup causing spurious test success.
2022-08-19 10:25:20 -07:00
Marcono1234
5e1005ea27
Disallow JsonObject Entry.setValue(null) (#2167)
* Disallow JsonObject Entry.setValue(null)

* Adjust comments in JsonObjectTest
2022-08-18 13:10:43 -07:00
Lorenz Nickel
53234aa351
Add test for JsonArray.isEmpty() (#2173) 2022-08-08 08:38:56 -07:00
Marcono1234
6fc1c8f7f1
Fix TypeAdapter.toJson throwing AssertionError for custom IOException (#2172)
* Fix TypeAdapter.toJson throwing AssertionError for custom IOException

* Add throws javadoc tag for TypeAdapter methods
2022-08-08 08:19:44 -07:00
Marcono1234
d53b3ea84a
Clarify doc about non-finite numbers for non-lenient JsonReader (#1723) 2022-08-08 06:40:07 -07:00
Marcono1234
a4bc6c17d7
Fix JsonTreeReader throwing wrong exception type for non-finite doubles (#1782)
Follow-up for #1767
2022-08-08 06:39:29 -07:00
Marcono1234
f7cefcb426
Fix JsonWriter documentation regarding top-level value (#1766)
* Fix JsonReader / JsonWriter documentation regarding top-level value

RFC 7159 allows any top-level value (not only arrays or objects) [0],
however when #773 added this functionality it appears the author forgot
to update the documentation of these classes.

[0] https://tools.ietf.org/html/rfc7159#appendix-A
> Changed the definition of "JSON text" so that it can be any JSON
> value, removing the constraint that it be an object or array.

* Fix missing space
2022-08-07 16:24:37 -07:00
Marcono1234
9eb04414c0
Improve InternationalizationTest (#1705)
* Improve InternationalizationTest

- Remove "raw" tests since after compiling they are the same as the one with
  escape sequences
- Add tests for supplementary code points (> \uFFFF)

* Improve variable names, fix incorrect escape sequences
2022-08-07 16:00:35 -07:00
Marcono1234
76c78f5925
Remove not needed .gitattributes file (#1862)
The .gitattributes file was added to prevent GitHub detecting Gson as HTML
repository due to the included generated javadoc files. However, since
#1654 has removed the javadoc files, the .gitattributes file is no longer
needed.
2022-08-07 15:59:39 -07:00
James
9868957862
Fix typo (#1246) 2022-08-07 15:43:37 -07:00
Marcono1234
390385e382
Clarify that GsonBuilder.setExclusionStrategies does not replace existing ones (#2168)
* Clarify that `GsonBuilder.setExclusionStrategies` does not replace existing ones

* Fix punctuation
2022-08-06 10:01:37 -07:00
Marcono1234
246270e02c
Convert null to JsonNull for JsonArray.set (#2170)
* Convert null to JsonNull for `JsonArray.set`

All other methods perform the same implicit conversion.

* Mention null handling in JsonObject documentation
2022-08-06 09:57:00 -07:00
bufistov
46b97bf156
Fixed nullSafe usage. (#1555)
The JsonSerializer/Deserializer adapters used to ignore this attribute
which result in inconsistent behaviour for annotated adapters.

Fixes #1553

Signed-off-by: Dmitry Bufistov <dmitry@midokura.com>

Co-authored-by: Dmitry Bufistov <dmitry@midokura.com>
2022-08-05 07:33:05 -07:00
Marcono1234
98f2bbf4c1
Validate TypeToken.getParameterized arguments (#2166) 2022-08-05 06:59:38 -07:00
Marcono1234
0b6a7bf7d9
Deprecate JsonElement constructor (#1761)
* Deprecate JsonElement constructor

Creating custom JsonElement subclasses is discouraged.

* Improve test and documentation

* Improve JsonTreeReaderTest, adjust deprecation comments
2022-08-04 10:32:30 -07:00
Marcono1234
a1d2ebc8b5
Fix #1702: Gson.toJson creates CharSequence which does not implement toString (#1703)
* Gson.toJson creates CharSequence which does not implement toString

* Improve Streams.AppendableWriter.CurrentWrite test

* Make setChars package-private
2022-08-03 14:25:12 -07:00
Marcono1234
4552db2630
Prefer existing adapter for concurrent Gson.getAdapter calls (#2153)
Additionally fail fast for null as type (previous null support was broken
and would have thrown NullPointerException further below anyways).
2022-08-01 10:59:04 -07:00
Marcono1234
a45c55739f
Improve ArrayTypeAdapter for Object[] (#1716)
* Improve ArrayTypeAdapter for Object[]

* Fix typo in test method names
2022-07-31 14:49:02 -07:00
Marcono1234
5f2513a407
Improve AppendableWriter performance (#1706)
* Improve AppendableWriter performance

Override methods which by default create char arrays or convert
CharSequences to Strings.
This is not necessary for AppendableWriter because it can directly
append these values to the Appendable delegate.

* Add test for Streams.writerForAppendable
2022-07-31 14:46:43 -07:00
Éamonn McManus
a4290c52e0 Update CHANGELOG.md with 2.9.1 changes.
Update version numbers in documentation (2.9.0 -> 2.9.1).
2022-07-31 14:43:17 -07:00
Éamonn McManus
ca22b68008 [maven-release-plugin] prepare for next development iteration 2022-07-31 14:25:34 -07:00
Éamonn McManus
bb9a1f255a [maven-release-plugin] prepare release gson-parent-2.9.1 2022-07-31 14:25:32 -07:00
Marcono1234
893a7e1c5c
Fix malformed JsonElement.getAsBigDecimal() javadoc (#1772) 2022-07-31 14:08:24 -07:00
Marcono1234
6d2557d5d1
Remove unused package-private FieldAttributes methods (#2162) 2022-07-29 10:10:54 -07:00
Éamonn McManus
2deb2099d3
Make RuntimeTypeAdapterFactory recognize subclasses only conditionally. (#2160)
PR #2139 changed this factory so that if given a certain baseType, it will also
recognize any subtype of that type. That is often the right thing to do, but it
is a change in behaviour, and does in fact break at least one current client of
this code. So instead we introduce a new `recognizeSubclasses()` method that
triggers this behaviour. When the method is not called, we revert to the old
behaviour of only recognizing instances of the exact class `baseType`.
2022-07-27 12:18:20 -07:00
dependabot[bot]
924c496b95
Bump maven-resources-plugin from 3.2.0 to 3.3.0 (#2157)
Bumps [maven-resources-plugin](https://github.com/apache/maven-resources-plugin) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/apache/maven-resources-plugin/releases)
- [Commits](https://github.com/apache/maven-resources-plugin/compare/maven-resources-plugin-3.2.0...maven-resources-plugin-3.3.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-resources-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-25 20:37:16 -07:00
Marcono1234
503c20bb39
Rename ReflectiveTypeAdapterFactory field inclusion check method (#2121) 2022-07-21 11:53:52 -07:00
dependabot[bot]
010624730b
Bump maven-deploy-plugin from 3.0.0-M2 to 3.0.0 (#2148)
Bumps [maven-deploy-plugin](https://github.com/apache/maven-deploy-plugin) from 3.0.0-M2 to 3.0.0.
- [Release notes](https://github.com/apache/maven-deploy-plugin/releases)
- [Commits](https://github.com/apache/maven-deploy-plugin/compare/maven-deploy-plugin-3.0.0-M2...maven-deploy-plugin-3.0.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-deploy-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-21 10:45:59 -07:00
Aurimas
eeba71c59e
Upgrade to oss-parent 9 (#2149)
org.sonatype.oss:oss-parent:7 is unsigned (missing .asc files), which forces users of gson library
that enforce signature verification to explicitly allowlist oss-parent. Luckily oss-parent 9 is signed,
thus fixing this issue.

See:
https://repo1.maven.org/maven2/org/sonatype/oss/oss-parent/7/
vs
https://repo1.maven.org/maven2/org/sonatype/oss/oss-parent/9/
2022-07-21 10:29:15 -07:00
Thomas Oster
2eb37589b5
Fix RuntimeTypeAdapterFactory (#2139)
* Change the RuntimeTypeAdapterFactoryTest, so it fails because of #712

* Fix RuntimeTypeAdapterFactory

Trying to use this class as is results in the type-property not being serialized into the JSON, thus it is not present on deserialization.
The fix from https://github.com/google/gson/issues/712#issuecomment-148955110 works. No idea why this is not merged yet.
2022-07-21 10:28:48 -07:00
Marcono1234
cbc0af867b
Improve lenient mode documentation (#2122) 2022-06-28 09:48:05 -07:00
Marcono1234
3f1d4fb65f
Document Map serialization in user guide (#2138)
* Document Map serialization in user guide

* Improve user guide formatting and update links

* Address review feedback
2022-06-27 14:59:43 -07:00
Marcono1234
2d01d6a20f
Make Object and JsonElement deserialization iterative (#1912)
* Make Object and JsonElement deserialization iterative

Often when Object and JsonElement are deserialized the format of the JSON
data is unknown and it might come from an untrusted source. To avoid a
StackOverflowError from maliciously crafted JSON, deserialize Object and
JsonElement iteratively instead of recursively.

Concept based on 51fd2faab7
But implementation is not based on it.

* Improve imports grouping

* Address review feedback
2022-06-22 17:42:19 -07:00
Nathan Herring
d2aee6502b
Add explicit support for floats in JsonTreeWriter. (#2132)
Follow-up to comments on #2130, which introduced a new override which was not overridden by `JsonTreeWriter`. Also tweaks the doccomments for `float`, `double` and `Number` variants of `JsonWriter.value`.

Supplement to the fix for #1127.
2022-06-21 09:50:07 -07:00
dependabot[bot]
08d4572fc4
Bump proguard-maven-plugin from 2.5.3 to 2.6.0 (#2136)
Bumps [proguard-maven-plugin](https://github.com/wvengen/proguard-maven-plugin) from 2.5.3 to 2.6.0.
- [Release notes](https://github.com/wvengen/proguard-maven-plugin/releases)
- [Changelog](https://github.com/wvengen/proguard-maven-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/wvengen/proguard-maven-plugin/commits)

---
updated-dependencies:
- dependency-name: com.github.wvengen:proguard-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-20 17:01:20 -07:00
Marcono1234
57225c6741
Fail when parsing invalid local date (#2134)
* Fail when parsing invalid local date

* Improve invalid date tests
2022-06-16 13:47:57 -07:00
Nathan Herring
96ab171eb4
Add explicit support for floats in JsonWriter. (#2130)
This avoids floats being treated as doubles and having an unwarranted level of precision.

Fixes #1127.
2022-06-08 15:04:42 -07:00
dependabot[bot]
15b9fa9c31
Bump maven-surefire-plugin from 3.0.0-M6 to 3.0.0-M7 (#2128)
Bumps [maven-surefire-plugin](https://github.com/apache/maven-surefire) from 3.0.0-M6 to 3.0.0-M7.
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.0.0-M6...surefire-3.0.0-M7)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-surefire-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-08 07:21:23 -07:00
dependabot[bot]
d1fce29b27
Bump bnd-maven-plugin from 6.2.0 to 6.3.1 (#2129)
Bumps [bnd-maven-plugin](https://github.com/bndtools/bnd) from 6.2.0 to 6.3.1.
- [Release notes](https://github.com/bndtools/bnd/releases)
- [Changelog](https://github.com/bndtools/bnd/blob/master/docs/ADDING_RELEASE_DOCS.md)
- [Commits](https://github.com/bndtools/bnd/compare/6.2.0...6.3.1)

---
updated-dependencies:
- dependency-name: biz.aQute.bnd:bnd-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-08 07:21:02 -07:00
dependabot[bot]
827e117f6d
Bump maven-scm-api from 1.12.2 to 1.13.0 (#2125)
Bumps [maven-scm-api](https://github.com/apache/maven-scm) from 1.12.2 to 1.13.0.
- [Release notes](https://github.com/apache/maven-scm/releases)
- [Commits](https://github.com/apache/maven-scm/compare/maven-scm-1.12.2...maven-scm-1.13.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.scm:maven-scm-api
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-30 11:27:35 -07:00
dependabot[bot]
513b53a084
Bump maven-scm-provider-gitexe from 1.12.2 to 1.13.0 (#2126)
Bumps maven-scm-provider-gitexe from 1.12.2 to 1.13.0.

---
updated-dependencies:
- dependency-name: org.apache.maven.scm:maven-scm-provider-gitexe
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-30 11:27:19 -07:00
Marcono1234
66c3f48d81
Update CodeQL action in GitHub workflow (#2116) 2022-05-16 12:20:13 -07:00
dependabot[bot]
f4b5462c3b
Bump maven-javadoc-plugin from 3.3.2 to 3.4.0 (#2108)
Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.3.2 to 3.4.0.
- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)
- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.3.2...maven-javadoc-plugin-3.4.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-javadoc-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-16 11:43:34 -07:00
dependabot[bot]
5a9febe905
Bump jackson-databind from 2.13.2.2 to 2.13.3 (#2115)
Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.13.2.2 to 2.13.3.
- [Release notes](https://github.com/FasterXML/jackson/releases)
- [Commits](https://github.com/FasterXML/jackson/commits)

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-16 09:15:10 -07:00
Marcono1234
b1c399fd62
Improve TypeToken creation validation (#2072)
* Add comments regarding multiple bounds of wildcard

* Remove WildcardType check in getCollectionElementType

The returned Type is never a wildcard due to the changes made to getSupertype
by commit b1fb9ca9a1.

* Remove redundant getRawType call from MapTypeAdapterFactory

getRawType(TypeToken.getType()) is the same as calling TypeToken.getRawType().

* Make TypeToken members private

* Remove incorrect statement about TypeToken wildcards

It is possible to use wildcards as part of the type argument, e.g.:
`new TypeToken<List<? extends CharSequence>>() {}`

* Only allow direct subclasses of TypeToken

Previously subclasses of subclasses (...) of TypeToken were allowed which
can behave incorrectly when retrieving the type argument, e.g.:

  class SubTypeToken<T> extends TypeToken<Integer> {}
  new SubTypeToken<String>() {}.getType()

This returned `String` despite the class extending TypeToken<Integer>.

* Throw exception when TypeToken captures type variable

Due to type erasure the runtime type argument for a type variable is not
available. Therefore there is no point in capturing a type variable and it
might even give a false sense of type-safety.

* Make $Gson$Types members private

* Rename $Gson$Types.getGenericSupertype parameter

Rename the method parameter to match the documentation of the method and
to be similar to getSupertype(...).

* Improve tests and handle raw TypeToken supertype better

* Make some $Gson$Types members package-private again to prevent synthetic accessors

* Remove TypeToken check for type variable

As mentioned in review comments, there are cases during serialization where
usage of the type variable is not so problematic (but still not ideal).
2022-04-19 08:20:58 -07:00
Marcono1234
feaf8ddc05
Reduce Maven console output for CodeQL analysis; cache Maven repo (#2105) 2022-04-18 06:52:53 -07:00
Marcono1234
4dda4ec5ba
Use diamond operator when creating generic instances (#2104) 2022-04-17 15:27:21 -07:00
Marcono1234
e82637c485
Add support for reflection access filter (#1905)
* Add support for reflection access filter

* Improve documentation

* Fix compilation errors

* Relax handling for BLOCK_ALL when invoking default constructor

* Improve handling for inherited fields

* Fix accessible test failing for static fields

* Simplify ReflectiveTypeAdapterFactory field writing

* Fix GsonBuilder changes affecting created Gson instances

* Improve documentation

* Improve handling for IllegalAccessException

For Java < 9, AccessibleObject.canAccess is not available and therefore checks
might pass even if object is not accessible, causing IllegalAccessException
later.

* Fix incorrect GsonBuilder.addReflectionAccessFilter documentation
2022-04-17 09:05:18 -07:00
dependabot[bot]
f79ea208b1
Bump maven-surefire-plugin from 3.0.0-M5 to 3.0.0-M6 (#2101)
Bumps [maven-surefire-plugin](https://github.com/apache/maven-surefire) from 3.0.0-M5 to 3.0.0-M6.
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.0.0-M5...surefire-3.0.0-M6)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-surefire-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-03 20:08:33 -07:00
dependabot[bot]
463bb7d096
Bump jackson-databind from 2.13.2 to 2.13.2.2 (#2096)
Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.13.2 to 2.13.2.2.
- [Release notes](https://github.com/FasterXML/jackson/releases)
- [Commits](https://github.com/FasterXML/jackson/commits)

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-03 20:05:33 -07:00