Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parsing Map<Enum,Obj> - 501 #1950

merged 4 commits into from Feb 21, 2022


Copy link

@TheDoctorOne TheDoctorOne commented Sep 4, 2021

Related to issue #501.

Parsing "Map<Enum,Obj>" where enum's toString method is overridden and not returning the original name of the constant.
Test code and backtrace of the issue: #501 (comment)

With the added implementation, it first checks for name, as it was doing before. And if the result does not match with any constant that Enum has, it also checks for the output of the "toString()" method and returns the result of it.

@google-cla google-cla bot added the cla: yes label Sep 4, 2021
Copy link

Relates to #1920, which is (partially) about toString() being used for map keys during serialization.

Copy link


Copy link
Contributor Author

Resolved the conflict caused by the variable name change from "field" to "constantField"

Copy link

@eamonnmcmanus eamonnmcmanus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems reasonable. Just a small quibble about style.

Copy link

Might be good to add a test for this, for example similar to what you have shown in #501 (comment).
Possibly also verifying that constant names have higher precedence, e.g.:

enum SwitchedToString {

  private final String toString;

  SwitchedToString(String toString) {
    this.toString = toString;

  public String toString() {
    return toString;

Note that I am not a member of this project so feel free to consider this only as suggestion.

Copy link
Contributor Author

@TheDoctorOne TheDoctorOne left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Didn't know that, thx for the heads up

Copy link

Thanks! I've run this change against the tests for all of Google's internal code and I didn't find any problems.

@eamonnmcmanus eamonnmcmanus merged commit 7ee3e27 into google:master Feb 21, 2022
sgammon added a commit to elide-dev/elide that referenced this pull request Jan 15, 2023

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
| []( |
`2.9.0` -> `2.10.1` |
| []( |
`2.9.0` -> `2.10.1` |


### ⚠ Dependency Lookup Warnings ⚠

Warnings were logged while processing this repo. Please check the
Dependency Dashboard for more information.


### Release Notes



- Support for serializing and deserializing Java records, on Java ≥ 16.
- Add `JsonArray.asList` and `JsonObject.asMap` view methods
- Fix `TypeAdapterRuntimeTypeWrapper` not detecting reflective
`TreeTypeAdapter` and `FutureTypeAdapter`
- Improve `JsonReader.skipValue()`
- Perform numeric conversion for primitive numeric type adapters
- Add `Gson.fromJson(..., TypeToken)` overloads
- Fix changes to `GsonBuilder` affecting existing `Gson` instances
- Make `JsonElement` conversion methods more consistent and fix javadoc
- Throw `UnsupportedOperationException` when `JsonWriter.jsonValue` is
not supported
- Disallow `JsonObject` `Entry.setValue(null)`
- Fix `TypeAdapter.toJson` throwing AssertionError for custom
- Convert null to JsonNull for `JsonArray.set`
- Fixed nullSafe usage.
- Validate `TypeToken.getParameterized` arguments
- Fix [#&#8203;1702](
Gson.toJson creates CharSequence which does not implement toString
- Prefer existing adapter for concurrent `Gson.getAdapter` calls
- Improve `ArrayTypeAdapter` for `Object[]`
- Improve `AppendableWriter` performance


- Make `Object` and `JsonElement` deserialization iterative rather than

- Added parsing support for enum that has overridden toString() method
- Removed support for building Gson with Gradle
- Removed obsolete `codegen` hierarchy
- Add support for reflection access filter
- Improve `TypeToken` creation validation
- Add explicit support for `float` in `JsonWriter`
- Fail when parsing invalid local date

Also many small improvements to javadoc.



### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.


- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box


This PR has been generated by [Mend
Renovate]( View
repository job log

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet

Successfully merging this pull request may close these issues.

None yet

4 participants