From 668f2fa65be0fc1eb3a4e1ee53728c6558c8a460 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Sat, 9 Nov 2019 17:49:10 +0100 Subject: [PATCH] Nullable fix for JSON.NET --- .../Squidex.Extensions.csproj | 2 +- .../Apps/Json/LanguagesConfigConverter.cs | 2 +- .../Apps/Json/RolesConverter.cs | 2 +- .../Json/ContentFieldDataConverter.cs | 4 +- .../Contents/Json/StatusConverter.cs | 13 +++---- .../Json/WorkflowTransitionConverter.cs | 2 +- .../Rules/Json/RuleConverter.cs | 2 +- .../Schemas/Json/SchemaConverter.cs | 2 +- ...quidex.Domain.Apps.Entities.MongoDb.csproj | 2 +- .../Rules/Commands/RuleEditCommand.cs | 2 +- .../Squidex.Domain.Users.MongoDb.csproj | 2 +- .../src/Squidex.Domain.Users/UserValues.cs | 6 +-- .../EventSourcing/CosmosDbSubscription.cs | 2 +- .../Squidex.Infrastructure.Azure.csproj | 4 +- .../MongoDb/BsonJsonWriter.cs | 37 +++++++++++++++---- .../Squidex.Infrastructure.MongoDb.csproj | 4 +- .../Newtonsoft/EnvelopeHeadersConverter.cs | 2 +- .../Json/Newtonsoft/InstantConverter.cs | 9 ++++- .../Json/Newtonsoft/JsonClassConverter.cs | 4 +- .../Json/Newtonsoft/JsonValueConverter.cs | 16 ++++---- .../Json/Newtonsoft/LanguageConverter.cs | 2 +- .../Json/Newtonsoft/NamedGuidIdConverter.cs | 2 +- .../Json/Newtonsoft/NamedLongIdConverter.cs | 2 +- .../Json/Newtonsoft/NamedStringIdConverter.cs | 2 +- .../Newtonsoft/NewtonsoftJsonSerializer.cs | 6 +-- .../Json/Newtonsoft/RefTokenConverter.cs | 2 +- .../Newtonsoft/TypeNameSerializationBinder.cs | 4 +- .../Queries/Json/FilterConverter.cs | 10 ++--- .../Queries/Json/PropertyPathConverter.cs | 2 +- .../Squidex.Infrastructure.csproj | 4 +- .../Squidex/Config/Orleans/OrleansServices.cs | 8 ++-- backend/src/Squidex/Squidex.csproj | 10 ++--- .../Squidex.Domain.Apps.Core.Tests.csproj | 2 +- .../Squidex.Domain.Apps.Entities.Tests.csproj | 4 +- .../Squidex.Domain.Users.Tests.csproj | 2 +- .../ConverterContractResolverTests.cs | 6 +-- .../Squidex.Infrastructure.Tests.csproj | 2 +- .../Squidex.Web.Tests.csproj | 2 +- backend/tools/Migrate_00/Migrate_00.csproj | 2 +- 39 files changed, 107 insertions(+), 86 deletions(-) diff --git a/backend/extensions/Squidex.Extensions/Squidex.Extensions.csproj b/backend/extensions/Squidex.Extensions/Squidex.Extensions.csproj index cca01d821..0a4db5cbb 100644 --- a/backend/extensions/Squidex.Extensions/Squidex.Extensions.csproj +++ b/backend/extensions/Squidex.Extensions/Squidex.Extensions.csproj @@ -14,7 +14,7 @@ - + diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Apps/Json/LanguagesConfigConverter.cs b/backend/src/Squidex.Domain.Apps.Core.Model/Apps/Json/LanguagesConfigConverter.cs index a229d5593..d23c98887 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Model/Apps/Json/LanguagesConfigConverter.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Model/Apps/Json/LanguagesConfigConverter.cs @@ -22,7 +22,7 @@ namespace Squidex.Domain.Apps.Core.Apps.Json protected override LanguagesConfig ReadValue(JsonReader reader, Type objectType, JsonSerializer serializer) { - var json = serializer.Deserialize(reader); + var json = serializer.Deserialize(reader)!; return json.ToConfig(); } diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Apps/Json/RolesConverter.cs b/backend/src/Squidex.Domain.Apps.Core.Model/Apps/Json/RolesConverter.cs index 2f960353d..521469240 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Model/Apps/Json/RolesConverter.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Model/Apps/Json/RolesConverter.cs @@ -30,7 +30,7 @@ namespace Squidex.Domain.Apps.Core.Apps.Json protected override Roles ReadValue(JsonReader reader, Type objectType, JsonSerializer serializer) { - var json = serializer.Deserialize>(reader); + var json = serializer.Deserialize>(reader)!; if (json.Count == 0) { diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Contents/Json/ContentFieldDataConverter.cs b/backend/src/Squidex.Domain.Apps.Core.Model/Contents/Json/ContentFieldDataConverter.cs index 2d31c07e6..84eae2fdc 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Model/Contents/Json/ContentFieldDataConverter.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Model/Contents/Json/ContentFieldDataConverter.cs @@ -38,14 +38,14 @@ namespace Squidex.Domain.Apps.Core.Contents.Json switch (reader.TokenType) { case JsonToken.PropertyName: - var propertyName = reader.Value.ToString()!; + var propertyName = reader.Value!.ToString()!; if (!reader.Read()) { throw new JsonSerializationException("Unexpected end when reading Object."); } - var value = serializer.Deserialize(reader); + var value = serializer.Deserialize(reader)!; if (Language.IsValidLanguage(propertyName) || propertyName == InvariantPartitioning.Key) { diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Contents/Json/StatusConverter.cs b/backend/src/Squidex.Domain.Apps.Core.Model/Contents/Json/StatusConverter.cs index 286b83d12..3524709a3 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Model/Contents/Json/StatusConverter.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Model/Contents/Json/StatusConverter.cs @@ -19,19 +19,16 @@ namespace Squidex.Domain.Apps.Core.Contents.Json get { yield return typeof(Status); } } - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) { - writer.WriteValue(value.ToString()); + writer.WriteValue(value!.ToString()); } - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + public override object ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer) { - if (reader.TokenType != JsonToken.String) - { - throw new JsonException($"Expected String, but got {reader.TokenType}."); - } + var value = serializer.Deserialize(reader)!; - return new Status(reader.Value.ToString()); + return new Status(value); } public override bool CanConvert(Type objectType) diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Contents/Json/WorkflowTransitionConverter.cs b/backend/src/Squidex.Domain.Apps.Core.Model/Contents/Json/WorkflowTransitionConverter.cs index b32e11d92..a0c3e2e4b 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Model/Contents/Json/WorkflowTransitionConverter.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Model/Contents/Json/WorkflowTransitionConverter.cs @@ -22,7 +22,7 @@ namespace Squidex.Domain.Apps.Core.Contents.Json protected override WorkflowTransition ReadValue(JsonReader reader, Type objectType, JsonSerializer serializer) { - var json = serializer.Deserialize(reader); + var json = serializer.Deserialize(reader)!; return json.ToTransition(); } diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Rules/Json/RuleConverter.cs b/backend/src/Squidex.Domain.Apps.Core.Model/Rules/Json/RuleConverter.cs index 7ffd04107..18eb78294 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Model/Rules/Json/RuleConverter.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Model/Rules/Json/RuleConverter.cs @@ -20,7 +20,7 @@ namespace Squidex.Domain.Apps.Core.Rules.Json protected override Rule ReadValue(JsonReader reader, Type objectType, JsonSerializer serializer) { - return serializer.Deserialize(reader).ToRule(); + return serializer.Deserialize(reader)!.ToRule(); } } } diff --git a/backend/src/Squidex.Domain.Apps.Core.Model/Schemas/Json/SchemaConverter.cs b/backend/src/Squidex.Domain.Apps.Core.Model/Schemas/Json/SchemaConverter.cs index 8cd129428..71a3470df 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Model/Schemas/Json/SchemaConverter.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Model/Schemas/Json/SchemaConverter.cs @@ -20,7 +20,7 @@ namespace Squidex.Domain.Apps.Core.Schemas.Json protected override Schema ReadValue(JsonReader reader, Type objectType, JsonSerializer serializer) { - return serializer.Deserialize(reader).ToSchema(); + return serializer.Deserialize(reader)!.ToSchema(); } } } \ No newline at end of file diff --git a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Squidex.Domain.Apps.Entities.MongoDb.csproj b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Squidex.Domain.Apps.Entities.MongoDb.csproj index 35af53605..25ceaa9a7 100644 --- a/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Squidex.Domain.Apps.Entities.MongoDb.csproj +++ b/backend/src/Squidex.Domain.Apps.Entities.MongoDb/Squidex.Domain.Apps.Entities.MongoDb.csproj @@ -18,7 +18,7 @@ - + diff --git a/backend/src/Squidex.Domain.Apps.Entities/Rules/Commands/RuleEditCommand.cs b/backend/src/Squidex.Domain.Apps.Entities/Rules/Commands/RuleEditCommand.cs index 2a2f8d13f..38e778627 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Rules/Commands/RuleEditCommand.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Rules/Commands/RuleEditCommand.cs @@ -15,6 +15,6 @@ namespace Squidex.Domain.Apps.Entities.Rules.Commands public RuleAction Action { get; set; } - public string Name { get; set; } + public string? Name { get; set; } } } diff --git a/backend/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj b/backend/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj index dcc1a80bd..5fc21d637 100644 --- a/backend/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj +++ b/backend/src/Squidex.Domain.Users.MongoDb/Squidex.Domain.Users.MongoDb.csproj @@ -20,7 +20,7 @@ - + diff --git a/backend/src/Squidex.Domain.Users/UserValues.cs b/backend/src/Squidex.Domain.Users/UserValues.cs index ff6dddfa5..7ab4bf989 100644 --- a/backend/src/Squidex.Domain.Users/UserValues.cs +++ b/backend/src/Squidex.Domain.Users/UserValues.cs @@ -15,11 +15,11 @@ namespace Squidex.Domain.Users { public sealed class UserValues { - public string DisplayName { get; set; } + public string? DisplayName { get; set; } - public string PictureUrl { get; set; } + public string? PictureUrl { get; set; } - public string Password { get; set; } + public string? Password { get; set; } public string Email { get; set; } diff --git a/backend/src/Squidex.Infrastructure.Azure/EventSourcing/CosmosDbSubscription.cs b/backend/src/Squidex.Infrastructure.Azure/EventSourcing/CosmosDbSubscription.cs index 65b0d0965..d4403489c 100644 --- a/backend/src/Squidex.Infrastructure.Azure/EventSourcing/CosmosDbSubscription.cs +++ b/backend/src/Squidex.Infrastructure.Azure/EventSourcing/CosmosDbSubscription.cs @@ -119,7 +119,7 @@ namespace Squidex.Infrastructure.EventSourcing if (regex == null || regex.IsMatch(streamName)) { - var commit = JsonConvert.DeserializeObject(document.ToString(), store.SerializerSettings); + var commit = JsonConvert.DeserializeObject(document.ToString(), store.SerializerSettings)!; var eventStreamOffset = (int)commit.EventStreamOffset; diff --git a/backend/src/Squidex.Infrastructure.Azure/Squidex.Infrastructure.Azure.csproj b/backend/src/Squidex.Infrastructure.Azure/Squidex.Infrastructure.Azure.csproj index 00953e0bb..96e83328c 100644 --- a/backend/src/Squidex.Infrastructure.Azure/Squidex.Infrastructure.Azure.csproj +++ b/backend/src/Squidex.Infrastructure.Azure/Squidex.Infrastructure.Azure.csproj @@ -6,8 +6,8 @@ enable - - + + diff --git a/backend/src/Squidex.Infrastructure.MongoDb/MongoDb/BsonJsonWriter.cs b/backend/src/Squidex.Infrastructure.MongoDb/MongoDb/BsonJsonWriter.cs index 22f52e559..88d017ba7 100644 --- a/backend/src/Squidex.Infrastructure.MongoDb/MongoDb/BsonJsonWriter.cs +++ b/backend/src/Squidex.Infrastructure.MongoDb/MongoDb/BsonJsonWriter.cs @@ -63,9 +63,16 @@ namespace Squidex.Infrastructure.MongoDb bsonWriter.WriteUndefined(); } - public override void WriteValue(string value) + public override void WriteValue(string? value) { - bsonWriter.WriteString(value); + if (value == null) + { + bsonWriter.WriteNull(); + } + else + { + bsonWriter.WriteString(value); + } } public override void WriteValue(int value) @@ -150,22 +157,36 @@ namespace Squidex.Infrastructure.MongoDb } } - public override void WriteValue(byte[] value) + public override void WriteValue(byte[]? value) { - bsonWriter.WriteBytes(value); + if (value == null) + { + bsonWriter.WriteNull(); + } + else + { + bsonWriter.WriteBytes(value); + } } - public override void WriteValue(TimeSpan value) + public override void WriteValue(Uri? value) { - bsonWriter.WriteString(value.ToString()); + if (value == null) + { + bsonWriter.WriteNull(); + } + else + { + bsonWriter.WriteString(value.ToString()); + } } - public override void WriteValue(Guid value) + public override void WriteValue(TimeSpan value) { bsonWriter.WriteString(value.ToString()); } - public override void WriteValue(Uri value) + public override void WriteValue(Guid value) { bsonWriter.WriteString(value.ToString()); } diff --git a/backend/src/Squidex.Infrastructure.MongoDb/Squidex.Infrastructure.MongoDb.csproj b/backend/src/Squidex.Infrastructure.MongoDb/Squidex.Infrastructure.MongoDb.csproj index 9a73cc684..8bb96d6c5 100644 --- a/backend/src/Squidex.Infrastructure.MongoDb/Squidex.Infrastructure.MongoDb.csproj +++ b/backend/src/Squidex.Infrastructure.MongoDb/Squidex.Infrastructure.MongoDb.csproj @@ -13,8 +13,8 @@ - - + + diff --git a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/EnvelopeHeadersConverter.cs b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/EnvelopeHeadersConverter.cs index d4a529395..a056b4f82 100644 --- a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/EnvelopeHeadersConverter.cs +++ b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/EnvelopeHeadersConverter.cs @@ -20,7 +20,7 @@ namespace Squidex.Infrastructure.Json.Newtonsoft get { yield return typeof(EnvelopeHeaders); } } - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + public override object ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer) { var result = base.ReadJson(reader, objectType, existingValue, serializer); diff --git a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/InstantConverter.cs b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/InstantConverter.cs index 8b405f652..263a426ce 100644 --- a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/InstantConverter.cs +++ b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/InstantConverter.cs @@ -24,7 +24,7 @@ namespace Squidex.Infrastructure.Json.Newtonsoft } } - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) { if (value != null) { @@ -36,8 +36,13 @@ namespace Squidex.Infrastructure.Json.Newtonsoft } } - public override object? ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer) { + if (reader.Value == null) + { + return null; + } + if (reader.TokenType == JsonToken.String) { return InstantPattern.General.Parse(reader.Value.ToString()).Value; diff --git a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/JsonClassConverter.cs b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/JsonClassConverter.cs index 1709db763..1f492e2bc 100644 --- a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/JsonClassConverter.cs +++ b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/JsonClassConverter.cs @@ -18,7 +18,7 @@ namespace Squidex.Infrastructure.Json.Newtonsoft get { yield return typeof(T); } } - public sealed override object? ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + public sealed override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) { @@ -30,7 +30,7 @@ namespace Squidex.Infrastructure.Json.Newtonsoft protected abstract T ReadValue(JsonReader reader, Type objectType, JsonSerializer serializer); - public sealed override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + public sealed override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) { if (value == null) { diff --git a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/JsonValueConverter.cs b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/JsonValueConverter.cs index 88231ce51..7630fc3d0 100644 --- a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/JsonValueConverter.cs +++ b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/JsonValueConverter.cs @@ -33,7 +33,7 @@ namespace Squidex.Infrastructure.Json.Newtonsoft get { return supportedTypes; } } - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + public override object ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer) { return ReadJson(reader); } @@ -54,7 +54,7 @@ namespace Squidex.Infrastructure.Json.Newtonsoft switch (reader.TokenType) { case JsonToken.PropertyName: - var propertyName = reader.Value.ToString()!; + var propertyName = reader.Value!.ToString()!; if (!reader.Read()) { @@ -97,15 +97,15 @@ namespace Squidex.Infrastructure.Json.Newtonsoft } case JsonToken.Integer: - return JsonValue.Create((long)reader.Value); + return JsonValue.Create((long)reader.Value!); case JsonToken.Float: - return JsonValue.Create((double)reader.Value); + return JsonValue.Create((double)reader.Value!); case JsonToken.Boolean: - return JsonValue.Create((bool)reader.Value); + return JsonValue.Create((bool)reader.Value!); case JsonToken.Date: - return JsonValue.Create(((DateTime)reader.Value).ToString("yyyy-MM-ddTHH:mm:ssK", CultureInfo.InvariantCulture)); + return JsonValue.Create(((DateTime)reader.Value!).ToString("yyyy-MM-ddTHH:mm:ssK", CultureInfo.InvariantCulture)); case JsonToken.String: - return JsonValue.Create(reader.Value.ToString()); + return JsonValue.Create(reader.Value!.ToString()); case JsonToken.Null: case JsonToken.Undefined: return JsonValue.Null; @@ -114,7 +114,7 @@ namespace Squidex.Infrastructure.Json.Newtonsoft throw new NotSupportedException(); } - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) { if (value == null) { diff --git a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/LanguageConverter.cs b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/LanguageConverter.cs index dacf54841..d5496573a 100644 --- a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/LanguageConverter.cs +++ b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/LanguageConverter.cs @@ -19,7 +19,7 @@ namespace Squidex.Infrastructure.Json.Newtonsoft protected override Language ReadValue(JsonReader reader, Type objectType, JsonSerializer serializer) { - var value = serializer.Deserialize(reader); + var value = serializer.Deserialize(reader)!; return Language.GetLanguage(value); } diff --git a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/NamedGuidIdConverter.cs b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/NamedGuidIdConverter.cs index f5f753d79..8e4e29771 100644 --- a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/NamedGuidIdConverter.cs +++ b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/NamedGuidIdConverter.cs @@ -19,7 +19,7 @@ namespace Squidex.Infrastructure.Json.Newtonsoft protected override NamedId ReadValue(JsonReader reader, Type objectType, JsonSerializer serializer) { - var value = serializer.Deserialize(reader); + var value = serializer.Deserialize(reader)!; if (!NamedId.TryParse(value, Guid.TryParse, out var result)) { diff --git a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/NamedLongIdConverter.cs b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/NamedLongIdConverter.cs index 494bce251..99253e9f8 100644 --- a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/NamedLongIdConverter.cs +++ b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/NamedLongIdConverter.cs @@ -19,7 +19,7 @@ namespace Squidex.Infrastructure.Json.Newtonsoft protected override NamedId ReadValue(JsonReader reader, Type objectType, JsonSerializer serializer) { - var value = serializer.Deserialize(reader); + var value = serializer.Deserialize(reader)!; if (!NamedId.TryParse(value, long.TryParse, out var result)) { diff --git a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/NamedStringIdConverter.cs b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/NamedStringIdConverter.cs index 8eba29cfd..e5014a77d 100644 --- a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/NamedStringIdConverter.cs +++ b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/NamedStringIdConverter.cs @@ -19,7 +19,7 @@ namespace Squidex.Infrastructure.Json.Newtonsoft protected override NamedId ReadValue(JsonReader reader, Type objectType, JsonSerializer serializer) { - var value = serializer.Deserialize(reader); + var value = serializer.Deserialize(reader)!; if (!NamedId.TryParse(value, ParseString, out var result)) { diff --git a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/NewtonsoftJsonSerializer.cs b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/NewtonsoftJsonSerializer.cs index 7a02a55a3..5f59b584e 100644 --- a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/NewtonsoftJsonSerializer.cs +++ b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/NewtonsoftJsonSerializer.cs @@ -20,7 +20,7 @@ namespace Squidex.Infrastructure.Json.Newtonsoft { private readonly Func stringConverter; - public override object Value + public override object? Value { get { @@ -74,7 +74,7 @@ namespace Squidex.Infrastructure.Json.Newtonsoft using (var reader = GetReader(stringConverter, textReader)) { - return (T)serializer.Deserialize(reader, actualType); + return (T)serializer.Deserialize(reader, actualType)!; } } } @@ -87,7 +87,7 @@ namespace Squidex.Infrastructure.Json.Newtonsoft using (var reader = GetReader(stringConverter, textReader)) { - return (T)serializer.Deserialize(reader, actualType); + return (T)serializer.Deserialize(reader, actualType)!; } } } diff --git a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/RefTokenConverter.cs b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/RefTokenConverter.cs index 3017fce97..ddfbd99bf 100644 --- a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/RefTokenConverter.cs +++ b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/RefTokenConverter.cs @@ -19,7 +19,7 @@ namespace Squidex.Infrastructure.Json.Newtonsoft protected override RefToken ReadValue(JsonReader reader, Type objectType, JsonSerializer serializer) { - var value = serializer.Deserialize(reader); + var value = serializer.Deserialize(reader)!; if (!RefToken.TryParse(value, out var result)) { diff --git a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/TypeNameSerializationBinder.cs b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/TypeNameSerializationBinder.cs index d3dce95b6..0b4fccea3 100644 --- a/backend/src/Squidex.Infrastructure/Json/Newtonsoft/TypeNameSerializationBinder.cs +++ b/backend/src/Squidex.Infrastructure/Json/Newtonsoft/TypeNameSerializationBinder.cs @@ -22,14 +22,14 @@ namespace Squidex.Infrastructure.Json.Newtonsoft this.typeNameRegistry = typeNameRegistry; } - public override Type BindToType(string assemblyName, string typeName) + public override Type BindToType(string? assemblyName, string typeName) { var type = typeNameRegistry.GetTypeOrNull(typeName); return type ?? base.BindToType(assemblyName, typeName); } - public override void BindToName(Type serializedType, out string? assemblyName, out string typeName) + public override void BindToName(Type serializedType, out string? assemblyName, out string? typeName) { assemblyName = null; diff --git a/backend/src/Squidex.Infrastructure/Queries/Json/FilterConverter.cs b/backend/src/Squidex.Infrastructure/Queries/Json/FilterConverter.cs index 6b7337f0e..70a7f35b9 100644 --- a/backend/src/Squidex.Infrastructure/Queries/Json/FilterConverter.cs +++ b/backend/src/Squidex.Infrastructure/Queries/Json/FilterConverter.cs @@ -53,7 +53,7 @@ namespace Squidex.Infrastructure.Queries.Json switch (reader.TokenType) { case JsonToken.PropertyName: - var propertyName = reader.Value.ToString()!; + var propertyName = reader.Value!.ToString()!; if (!reader.Read()) { @@ -68,17 +68,17 @@ namespace Squidex.Infrastructure.Queries.Json switch (propertyName.ToLowerInvariant()) { case "not": - var filter = serializer.Deserialize>(reader); + var filter = serializer.Deserialize>(reader)!; result = new NegateFilter(filter); break; case "and": - var andFilters = serializer.Deserialize>>(reader); + var andFilters = serializer.Deserialize>>(reader)!; result = new LogicalFilter(LogicalFilterType.And, andFilters); break; case "or": - var orFilters = serializer.Deserialize>>(reader); + var orFilters = serializer.Deserialize>>(reader)!; result = new LogicalFilter(LogicalFilterType.Or, orFilters); break; @@ -126,7 +126,7 @@ namespace Squidex.Infrastructure.Queries.Json private static CompareOperator ReadOperator(JsonReader reader, JsonSerializer serializer) { - var value = serializer.Deserialize(reader); + var value = serializer.Deserialize(reader)!; switch (value.ToLowerInvariant()) { diff --git a/backend/src/Squidex.Infrastructure/Queries/Json/PropertyPathConverter.cs b/backend/src/Squidex.Infrastructure/Queries/Json/PropertyPathConverter.cs index 5d7979379..dba3b87ed 100644 --- a/backend/src/Squidex.Infrastructure/Queries/Json/PropertyPathConverter.cs +++ b/backend/src/Squidex.Infrastructure/Queries/Json/PropertyPathConverter.cs @@ -16,7 +16,7 @@ namespace Squidex.Infrastructure.Queries.Json { protected override PropertyPath ReadValue(JsonReader reader, Type objectType, JsonSerializer serializer) { - var value = serializer.Deserialize(reader); + var value = serializer.Deserialize(reader)!; return value; } diff --git a/backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj b/backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj index 259d1ff70..c655f3a62 100644 --- a/backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj +++ b/backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj @@ -9,7 +9,7 @@ True - + @@ -21,7 +21,7 @@ - + diff --git a/backend/src/Squidex/Config/Orleans/OrleansServices.cs b/backend/src/Squidex/Config/Orleans/OrleansServices.cs index dc6a0b135..3d4ea0d51 100644 --- a/backend/src/Squidex/Config/Orleans/OrleansServices.cs +++ b/backend/src/Squidex/Config/Orleans/OrleansServices.cs @@ -84,6 +84,8 @@ namespace Squidex.Config.Orleans builder.UseMongoDBClustering(options => { + options.Strategy = MongoDBMembershipStrategy.SingleDocument; + options.Configure(config); }); }, @@ -107,13 +109,9 @@ namespace Squidex.Config.Orleans private static void Configure(this MongoDBOptions options, IConfiguration config) { - var mongoConfiguration = config.GetRequiredValue("store:mongoDb:configuration"); - var mongoDatabaseName = config.GetRequiredValue("store:mongoDb:database"); - - options.ConnectionString = mongoConfiguration; options.CollectionPrefix = "Orleans_"; - options.DatabaseName = mongoDatabaseName; + options.DatabaseName = config.GetRequiredValue("store:mongoDb:database"); } private static void Configure(this ClusterOptions options) diff --git a/backend/src/Squidex/Squidex.csproj b/backend/src/Squidex/Squidex.csproj index d6b3a5bef..241dc5da1 100644 --- a/backend/src/Squidex/Squidex.csproj +++ b/backend/src/Squidex/Squidex.csproj @@ -47,16 +47,16 @@ - + - - + + - - + + diff --git a/backend/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj b/backend/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj index a0012f39f..098b73d00 100644 --- a/backend/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj +++ b/backend/tests/Squidex.Domain.Apps.Core.Tests/Squidex.Domain.Apps.Core.Tests.csproj @@ -14,7 +14,7 @@ - + diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj index 81e4d6ec5..ed9e8d447 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Squidex.Domain.Apps.Entities.Tests.csproj @@ -20,8 +20,8 @@ - - + + diff --git a/backend/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj b/backend/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj index c7ad65860..6eb69bb9d 100644 --- a/backend/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj +++ b/backend/tests/Squidex.Domain.Users.Tests/Squidex.Domain.Users.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/backend/tests/Squidex.Infrastructure.Tests/Json/Newtonsoft/ConverterContractResolverTests.cs b/backend/tests/Squidex.Infrastructure.Tests/Json/Newtonsoft/ConverterContractResolverTests.cs index a3416165d..305077a71 100644 --- a/backend/tests/Squidex.Infrastructure.Tests/Json/Newtonsoft/ConverterContractResolverTests.cs +++ b/backend/tests/Squidex.Infrastructure.Tests/Json/Newtonsoft/ConverterContractResolverTests.cs @@ -24,12 +24,12 @@ namespace Squidex.Infrastructure.Json.Newtonsoft public sealed class TodayConverter : JsonConverter { - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) { writer.WriteValue("TODAY"); } - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + public override object ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer) { throw new NotSupportedException(); } @@ -68,7 +68,7 @@ namespace Squidex.Infrastructure.Json.Newtonsoft serializerSettings.Converters.Add(new TodayConverter()); var result = JsonConvert.SerializeObject(Tuple.Create(value), serializerSettings); - var output = JsonConvert.DeserializeObject>(result, serializerSettings); + var output = JsonConvert.DeserializeObject>(result, serializerSettings)!; Assert.Equal(value, output.Item1); } diff --git a/backend/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj b/backend/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj index 9d268d3f0..0aa3172b0 100644 --- a/backend/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj +++ b/backend/tests/Squidex.Infrastructure.Tests/Squidex.Infrastructure.Tests.csproj @@ -23,7 +23,7 @@ - + diff --git a/backend/tests/Squidex.Web.Tests/Squidex.Web.Tests.csproj b/backend/tests/Squidex.Web.Tests/Squidex.Web.Tests.csproj index eb724ae8c..0b6cb40d5 100644 --- a/backend/tests/Squidex.Web.Tests/Squidex.Web.Tests.csproj +++ b/backend/tests/Squidex.Web.Tests/Squidex.Web.Tests.csproj @@ -14,7 +14,7 @@ - + diff --git a/backend/tools/Migrate_00/Migrate_00.csproj b/backend/tools/Migrate_00/Migrate_00.csproj index bd4b2fa92..6d7abac5d 100644 --- a/backend/tools/Migrate_00/Migrate_00.csproj +++ b/backend/tools/Migrate_00/Migrate_00.csproj @@ -6,7 +6,7 @@ enable - +