Skip to content

Commit

Permalink
Update NJsonSchema to v11
Browse files Browse the repository at this point in the history
  • Loading branch information
NoahStolk committed Jul 16, 2024
1 parent 380d861 commit 68efcf9
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 30 deletions.
4 changes: 2 additions & 2 deletions examples/JsonWithReferences/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using NJsonSchema.Generation;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using NJsonSchema.NewtonsoftJson.Generation;


/// <summary>
Expand Down Expand Up @@ -150,7 +150,7 @@ static async Task Main(string[] args)
// from default one to camelCase.
// It's also possible to add JsonProperty attributes to customize
// serialization mapping and all available NJson attributes.
var jsonSchemaGeneratorSettings = new JsonSchemaGeneratorSettings
var jsonSchemaGeneratorSettings = new NewtonsoftJsonSchemaGeneratorSettings
{
SerializerSettings = new JsonSerializerSettings
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="NJsonSchema" Version="10.9.0" />
<PackageReference Include="NJsonSchema.NewtonsoftJson" Version="11.0.1" />
</ItemGroup>

<ItemGroup>
Expand Down
16 changes: 8 additions & 8 deletions src/Confluent.SchemaRegistry.Serdes.Json/JsonDeserializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NJsonSchema;
using NJsonSchema.Generation;
using NJsonSchema.NewtonsoftJson.Generation;
using NJsonSchema.Validation;


Expand Down Expand Up @@ -53,7 +53,7 @@ namespace Confluent.SchemaRegistry.Serdes
/// </remarks>
public class JsonDeserializer<T> : AsyncDeserializer<T, JsonSchema> where T : class
{
private readonly JsonSchemaGeneratorSettings jsonSchemaGeneratorSettings;
private readonly NewtonsoftJsonSchemaGeneratorSettings jsonSchemaGeneratorSettings;

private JsonSchemaValidator validator = new JsonSchemaValidator();

Expand All @@ -69,18 +69,18 @@ public class JsonDeserializer<T> : AsyncDeserializer<T, JsonSchema> where T : cl
/// <param name="jsonSchemaGeneratorSettings">
/// JSON schema generator settings.
/// </param>
public JsonDeserializer(IEnumerable<KeyValuePair<string, string>> config = null, JsonSchemaGeneratorSettings jsonSchemaGeneratorSettings = null) :
public JsonDeserializer(IEnumerable<KeyValuePair<string, string>> config = null, NewtonsoftJsonSchemaGeneratorSettings jsonSchemaGeneratorSettings = null) :
this(null, config, jsonSchemaGeneratorSettings)
{
}

public JsonDeserializer(ISchemaRegistryClient schemaRegistryClient, IEnumerable<KeyValuePair<string, string>> config = null, JsonSchemaGeneratorSettings jsonSchemaGeneratorSettings = null)
public JsonDeserializer(ISchemaRegistryClient schemaRegistryClient, IEnumerable<KeyValuePair<string, string>> config = null, NewtonsoftJsonSchemaGeneratorSettings jsonSchemaGeneratorSettings = null)
: this(schemaRegistryClient, config != null ? new JsonDeserializerConfig(config) : null, jsonSchemaGeneratorSettings)
{
}

public JsonDeserializer(ISchemaRegistryClient schemaRegistryClient, JsonDeserializerConfig config,
JsonSchemaGeneratorSettings jsonSchemaGeneratorSettings = null, IList<IRuleExecutor> ruleExecutors = null)
NewtonsoftJsonSchemaGeneratorSettings jsonSchemaGeneratorSettings = null, IList<IRuleExecutor> ruleExecutors = null)
: base(schemaRegistryClient, config, ruleExecutors)
{
this.jsonSchemaGeneratorSettings = jsonSchemaGeneratorSettings;
Expand Down Expand Up @@ -121,7 +121,7 @@ public JsonDeserializer(ISchemaRegistryClient schemaRegistryClient, JsonDeserial
/// JSON schema generator settings.
/// </param>
public JsonDeserializer(ISchemaRegistryClient schemaRegistryClient, Schema schema, IEnumerable<KeyValuePair<string, string>> config = null,
JsonSchemaGeneratorSettings jsonSchemaGeneratorSettings = null) : this(schemaRegistryClient, config, jsonSchemaGeneratorSettings)
NewtonsoftJsonSchemaGeneratorSettings jsonSchemaGeneratorSettings = null) : this(schemaRegistryClient, config, jsonSchemaGeneratorSettings)
{
JsonSchemaResolver utils = new JsonSchemaResolver(
schemaRegistryClient, schema, this.jsonSchemaGeneratorSettings);
Expand Down Expand Up @@ -206,7 +206,7 @@ public override async Task<T> DeserializeAsync(ReadOnlyMemory<byte> data, bool i
using (var jsonStream = new MemoryStream(array, headerSize, array.Length - headerSize))
using (var jsonReader = new StreamReader(jsonStream, Encoding.UTF8))
{
JToken json = Newtonsoft.Json.JsonConvert.DeserializeObject<JToken>(jsonReader.ReadToEnd(), this.jsonSchemaGeneratorSettings?.ActualSerializerSettings);
JToken json = Newtonsoft.Json.JsonConvert.DeserializeObject<JToken>(jsonReader.ReadToEnd(), this.jsonSchemaGeneratorSettings?.SerializerSettings);
json = await ExecuteMigrations(migrations, isKey, subject, topic, context.Headers, json)
.ContinueWith(t => (JToken)t.Result)
.ConfigureAwait(continueOnCapturedContext: false);
Expand Down Expand Up @@ -243,7 +243,7 @@ public override async Task<T> DeserializeAsync(ReadOnlyMemory<byte> data, bool i
}
}

value = Newtonsoft.Json.JsonConvert.DeserializeObject<T>(serializedString, this.jsonSchemaGeneratorSettings?.ActualSerializerSettings);
value = Newtonsoft.Json.JsonConvert.DeserializeObject<T>(serializedString, this.jsonSchemaGeneratorSettings?.SerializerSettings);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
using NJsonSchema;
using NJsonSchema.Generation;
using Newtonsoft.Json.Linq;
using NJsonSchema.NewtonsoftJson.Generation;


namespace Confluent.SchemaRegistry.Serdes
Expand Down Expand Up @@ -112,7 +113,7 @@ private async Task<JsonSchema> GetSchemaUtil(Schema root)
{
NJsonSchema.Generation.JsonSchemaResolver schemaResolver =
new NJsonSchema.Generation.JsonSchemaResolver(rootObject, this.jsonSchemaGeneratorSettings ??
new JsonSchemaGeneratorSettings());
new NewtonsoftJsonSchemaGeneratorSettings());
JsonReferenceResolver referenceResolver =
new JsonReferenceResolver(schemaResolver);
Expand Down
12 changes: 6 additions & 6 deletions src/Confluent.SchemaRegistry.Serdes.Json/JsonSerializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@
using System.Net;
using System.Threading.Tasks;
using NJsonSchema;
using NJsonSchema.Generation;
using NJsonSchema.Validation;
using Confluent.Kafka;
using NJsonSchema.NewtonsoftJson.Generation;


namespace Confluent.SchemaRegistry.Serdes
Expand Down Expand Up @@ -54,7 +54,7 @@ namespace Confluent.SchemaRegistry.Serdes
/// </remarks>
public class JsonSerializer<T> : AsyncSerializer<T, JsonSchema> where T : class
{
private readonly JsonSchemaGeneratorSettings jsonSchemaGeneratorSettings;
private readonly NewtonsoftJsonSchemaGeneratorSettings jsonSchemaGeneratorSettings;
private readonly List<SchemaReference> ReferenceList = new List<SchemaReference>();

private JsonSchemaValidator validator = new JsonSchemaValidator();
Expand Down Expand Up @@ -82,7 +82,7 @@ public class JsonSerializer<T> : AsyncSerializer<T, JsonSchema> where T : class
/// JSON schema generator settings.
/// </param>
public JsonSerializer(ISchemaRegistryClient schemaRegistryClient, JsonSerializerConfig config = null,
JsonSchemaGeneratorSettings jsonSchemaGeneratorSettings = null, IList<IRuleExecutor> ruleExecutors = null)
NewtonsoftJsonSchemaGeneratorSettings jsonSchemaGeneratorSettings = null, IList<IRuleExecutor> ruleExecutors = null)
: base(schemaRegistryClient, config, ruleExecutors)
{
this.jsonSchemaGeneratorSettings = jsonSchemaGeneratorSettings;
Expand Down Expand Up @@ -136,7 +136,7 @@ public JsonSerializer(ISchemaRegistryClient schemaRegistryClient, JsonSerializer
/// JSON schema generator settings.
/// </param>
public JsonSerializer(ISchemaRegistryClient schemaRegistryClient, Schema schema, JsonSerializerConfig config = null,
JsonSchemaGeneratorSettings jsonSchemaGeneratorSettings = null, IList<IRuleExecutor> ruleExecutors = null)
NewtonsoftJsonSchemaGeneratorSettings jsonSchemaGeneratorSettings = null, IList<IRuleExecutor> ruleExecutors = null)
: this(schemaRegistryClient, config, jsonSchemaGeneratorSettings, ruleExecutors)
{
foreach (var reference in schema.References)
Expand All @@ -154,7 +154,7 @@ public JsonSerializer(ISchemaRegistryClient schemaRegistryClient, Schema schema,

/// <summary>
/// Serialize an instance of type <typeparamref name="T"/> to a UTF8 encoded JSON
/// represenation. The serialized data is preceeded by:
/// representation. The serialized data is preceded by:
/// 1. A "magic byte" (1 byte) that identifies this as a message with
/// Confluent Platform framing.
/// 2. The id of the schema as registered in Confluent's Schema Registry
Expand Down Expand Up @@ -233,7 +233,7 @@ public override async Task<byte[]> SerializeAsync(T value, SerializationContext
.ConfigureAwait(continueOnCapturedContext: false);
}

var serializedString = Newtonsoft.Json.JsonConvert.SerializeObject(value, this.jsonSchemaGeneratorSettings?.ActualSerializerSettings);
var serializedString = Newtonsoft.Json.JsonConvert.SerializeObject(value, this.jsonSchemaGeneratorSettings?.SerializerSettings);
var validationResult = validator.Validate(serializedString, this.schema);
if (validationResult.Count > 0)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using Newtonsoft.Json.Linq;
using NJsonSchema.Generation;
using NJsonSchema.NewtonsoftJson.Generation;


namespace Confluent.SchemaRegistry.Serdes.IntegrationTests
Expand Down Expand Up @@ -139,7 +139,7 @@ public static void UseReferences(string bootstrapServers, string schemaRegistryS
var schemaRegistryConfig = new SchemaRegistryConfig { Url = schemaRegistryServers };
var sr = new CachedSchemaRegistryClient(schemaRegistryConfig);

var jsonSchemaGeneratorSettings = new JsonSchemaGeneratorSettings
var jsonSchemaGeneratorSettings = new NewtonsoftJsonSchemaGeneratorSettings
{
SerializerSettings = new JsonSerializerSettings
{
Expand Down Expand Up @@ -209,7 +209,7 @@ public static void UseReferences(string bootstrapServers, string schemaRegistryS

// Test producing and consuming directly a JObject
var serializedString = Newtonsoft.Json.JsonConvert.SerializeObject(order,
jsonSchemaGeneratorSettings.ActualSerializerSettings);
jsonSchemaGeneratorSettings.SerializerSettings);
var jsonObject = JObject.Parse(serializedString);

using (var producer =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@
using Confluent.Kafka;
using Confluent.SchemaRegistry.Encryption;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
using NJsonSchema.Generation;
using NJsonSchema.NewtonsoftJson.Generation;
using System;
using System.Collections.Generic;
using System.IO;
Expand Down Expand Up @@ -176,7 +177,7 @@ public async Task WithJsonSerializerSettingsSerDe()
{
const int value = 1234;
var expectedJson = $"{{\"Value\":{value * 2}}}";
var jsonSchemaGeneratorSettings = new JsonSchemaGeneratorSettings
var jsonSchemaGeneratorSettings = new NewtonsoftJsonSchemaGeneratorSettings
{
SerializerSettings = new JsonSerializerSettings
{
Expand Down Expand Up @@ -227,7 +228,7 @@ public async Task WithJsonSchemaExternalReferencesAsync()
SubjectNameStrategy = SubjectNameStrategy.TopicRecord
};

var jsonSchemaGeneratorSettings = new JsonSchemaGeneratorSettings
var jsonSchemaGeneratorSettings = new NewtonsoftJsonSchemaGeneratorSettings
{
SerializerSettings = new JsonSerializerSettings
{
Expand Down Expand Up @@ -257,15 +258,23 @@ public async Task WithJsonSchemaExternalReferencesAsync()
}

[Theory]
[InlineData(EnumHandling.CamelCaseString, EnumType.EnumValue, "{\"Value\":\"enumValue\"}")]
[InlineData(EnumHandling.String, EnumType.None, "{\"Value\":\"None\"}")]
[InlineData(EnumHandling.Integer, EnumType.OtherValue, "{\"Value\":5678}")]
public async Task WithJsonSchemaGeneratorSettingsSerDe(EnumHandling enumHandling, EnumType value,
[InlineData("CamelCaseString", EnumType.EnumValue, "{\"Value\":\"enumValue\"}")]
[InlineData("String", EnumType.None, "{\"Value\":\"None\"}")]
[InlineData("Integer", EnumType.OtherValue, "{\"Value\":5678}")]
public async Task WithJsonSchemaGeneratorSettingsSerDe(string enumHandling, EnumType value,
string expectedJson)
{
var jsonSchemaGeneratorSettings = new JsonSchemaGeneratorSettings
var serializerSettings = enumHandling switch
{
DefaultEnumHandling = enumHandling
"CamelCaseString" => new JsonSerializerSettings { Converters = { new StringEnumConverter(new CamelCaseNamingStrategy()) } },
"String" => new JsonSerializerSettings { Converters = { new StringEnumConverter() } },
"Integer" => new JsonSerializerSettings(),
_ => throw new ArgumentException("Invalid enumHandling value", nameof(enumHandling)),
};

var jsonSchemaGeneratorSettings = new NewtonsoftJsonSchemaGeneratorSettings
{
SerializerSettings = serializerSettings,
};

var jsonSerializer = new JsonSerializer<EnumObject>(schemaRegistryClient,
Expand Down

0 comments on commit 68efcf9

Please sign in to comment.