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

JSON contract customization #70435

Merged
merged 10 commits into from
Jun 22, 2022
Merged

JSON contract customization #70435

merged 10 commits into from
Jun 22, 2022

Commits on Jun 20, 2022

  1. Initial implementation for contract customization

    fix build errors
    
    Move converter rooting to DefaultJsonTypeInfoResolver so that it can be used standalone
    
    Fix ConfigurationList.IsReadOnly
    
    Minor refactorings (#1)
    
    * Makes the following changes:
    
    * Move singleton initialization for DefaultTypeInfoResolver behind a static property.
    * Consolidate JsonSerializerContext & IJsonTypeInfoResolver values to a single field.
    * Move reflection fallback logic away from JsonSerializerContext and into JsonSerializerOptions
    
    * Update src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializerOptions.cs
    
    * remove testing of removed field
    
    Simplify the JsonTypeInfo.CreateObject implemenetation (#2)
    
    * Simplify the JsonTypeInfo.CreateObject implemenetation
    
    * Update src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfoOfT.cs
    
    * Update src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfoOfT.cs
    
    Co-authored-by: Krzysztof Wicher <mordotymoja@gmail.com>
    
    Co-authored-by: Krzysztof Wicher <mordotymoja@gmail.com>
    
    Tests and fixes for JsonTypeInfoKind.None
    
    TypeInfo type mismatch tests
    
    Allow setting NumberHandling on JsonTypeInfoKind.None
    
    test resolver returning wrong type of options
    
    JsonTypeInfo/JsonPropertyInfo mutability tests
    
    rename test file
    
    Move default converter rooting responsibility behind DefaultJsonTypeInfoResolver (#3)
    
    * Move default converter rooting responsibility behind DefaultJsonTypeInfoResolver
    
    * address feedback
    
    Add simple test for using JsonTypeInfo<T> with APIs directly taking it
    
    fix and tests for untyped/typed CreateObject
    
    uncomment test cases, remove todo
    
    More tests and tiny fixes
    
    Add a JsonTypeInfoResolver.Combine test for JsonSerializerContext (#4)
    
    * Fix JsonTypeInfoResolver.Combine for JsonSerializerContext
    
    * Break up failing test
    
    Fix simple scenarios for combining contexts (#6)
    
    * Fix simple scenarios for combining contexts
    
    * feedback
    
    JsonSerializerContext combine test with different camel casing
    
    Remove unneeded virtual calls & branching when accessing Get & Set delegates (#7)
    
    JsonPropertyInfo tests everything minus ShouldSerialize & NumberHandling
    
    Update src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonConverterOfT.cs
    
    Update src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonConverterOfT.cs
    
    throw InvalidOperationException rather than ArgumentNullException for source gen when PropertyInfo.Name is assigned through JsonPropertyInfoValues
    
    tests for duplicated property names and JsonPropertyInfo.NumberHandling
    
    Add tests for NumberHandling and failing tests for ShouldSerialize
    
    disable the failing test and add extra checks
    
    disable remainder of the failing ShouldSerialize tests, fix working one
    
    Fix ShouldSerialize and IgnoreCondition interop
    
    Add failing tests for CreateObject + parametrized constructors
    
    Fix CreateObject support for JsonConstructor types (#10)
    
    * Fix CreateObject support for JsonConstructor types
    
    * address feedback
    
    Make contexts more combinator friendly (#9)
    
    * Make contexts more combinator friendly
    
    * remove converter cache
    krwq committed Jun 20, 2022
    Configuration menu
    Copy the full SHA
    d0a5efd View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    edf6e15 View commit details
    Browse the repository at this point in the history
  3. Combine unit tests

    krwq committed Jun 20, 2022
    Configuration menu
    Copy the full SHA
    1d8b157 View commit details
    Browse the repository at this point in the history
  4. address feedback

    krwq committed Jun 20, 2022
    Configuration menu
    Copy the full SHA
    6a2b467 View commit details
    Browse the repository at this point in the history

Commits on Jun 21, 2022

  1. Configuration menu
    Copy the full SHA
    8cce77c View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    d03d124 View commit details
    Browse the repository at this point in the history
  3. tests, PR feedback (#14)

    * PR feedback and extra tests
    
    * Shorten class name, remove incorrect check (not true for polimorphic cases)
    krwq committed Jun 21, 2022
    Configuration menu
    Copy the full SHA
    01119a8 View commit details
    Browse the repository at this point in the history

Commits on Jun 22, 2022

  1. Configuration menu
    Copy the full SHA
    91bdc9e View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    bb32820 View commit details
    Browse the repository at this point in the history
  3. Fix test failures and proper fix this time (#18)

    * Fix test failures and proper fix this time
    
    * reinstate ActiveIssueAttribute
    
    * PR feedback and adjust couple of tests which don't set TypeInfoResolver
    
    * fix IAsyncEnumerable tests
    
    * Lock JsonSerializerOptions in JsonTypeInfo.EnsureConfigured()
    
    Co-authored-by: Eirik Tsarpalis <eirik.tsarpalis@gmail.com>
    krwq and eiriktsarpalis committed Jun 22, 2022
    Configuration menu
    Copy the full SHA
    07aede0 View commit details
    Browse the repository at this point in the history