From 05836dc8b00a9601fdb843f979336ebcc9075cf6 Mon Sep 17 00:00:00 2001 From: Alexander van Delft Date: Fri, 25 Oct 2024 17:00:53 +0200 Subject: [PATCH] Story so far --- CDP4Orm/CDP4Orm.csproj | 2 +- CDP4Orm/Dao/BaseDao.cs | 7 +------ CDP4Orm/Dao/Cache/CacheDao.cs | 11 ++++++++++- CDP4Orm/Dao/Revision/RevisionDao.cs | 11 +++-------- CometServer/CometServer.csproj | 6 +++--- CometServer/Modules/10-25/EngineeringModelApi.cs | 1 + CometServer/Modules/10-25/SiteDirectoryApi.cs | 1 + CometServer/Modules/Tasks/CometTasksModule.cs | 2 +- CometServer/Startup.cs | 3 ++- 9 files changed, 23 insertions(+), 21 deletions(-) diff --git a/CDP4Orm/CDP4Orm.csproj b/CDP4Orm/CDP4Orm.csproj index 701929dc..28cccc8d 100644 --- a/CDP4Orm/CDP4Orm.csproj +++ b/CDP4Orm/CDP4Orm.csproj @@ -75,7 +75,7 @@ - + diff --git a/CDP4Orm/Dao/BaseDao.cs b/CDP4Orm/Dao/BaseDao.cs index ea6ede1a..8d9547dc 100644 --- a/CDP4Orm/Dao/BaseDao.cs +++ b/CDP4Orm/Dao/BaseDao.cs @@ -54,11 +54,6 @@ public abstract class BaseDao /// private NpgsqlTransaction currentTransactionDataTimeTransaction; - /// - /// Gets or sets the injected - /// - public ICdp4JsonSerializer JsonSerializer { get; set; } - /// /// Execute additional logic before each update function call. /// @@ -324,7 +319,7 @@ private DateTime GetTransactionDateTime(NpgsqlTransaction transaction) /// A protected Thing MapJsonbToDto(NpgsqlDataReader reader) { - var jsonObject = System.Text.Json.JsonSerializer.Deserialize(reader.GetValue(0).ToString()); + var jsonObject = JsonSerializer.Deserialize(reader.GetValue(0).ToString()); Thing thing; try diff --git a/CDP4Orm/Dao/Cache/CacheDao.cs b/CDP4Orm/Dao/Cache/CacheDao.cs index 1494589d..27229fa8 100644 --- a/CDP4Orm/Dao/Cache/CacheDao.cs +++ b/CDP4Orm/Dao/Cache/CacheDao.cs @@ -132,7 +132,16 @@ public void BulkWrite(NpgsqlTransaction transaction, string partition, IReadOnly { var iidParam = new NpgsqlParameter($"iid_{index}", NpgsqlDbType.Uuid) { Value = thing.Iid }; var revisionParam = new NpgsqlParameter($"revision_{index}", NpgsqlDbType.Integer) { Value = thing.RevisionNumber }; - var jsonbParam = new NpgsqlParameter($"jsonb_{index}", NpgsqlDbType.Jsonb) { Value = this.JsonSerializer.SerializeToString(thing) }; + var jsonbParam = new NpgsqlParameter($"jsonb_{index}", NpgsqlDbType.Jsonb); + + var serializedJson = this.JsonSerializer.SerializeToString(thing); + + if (string.IsNullOrWhiteSpace(serializedJson)) + { + serializedJson = "{}"; + } + + jsonbParam.Value = serializedJson; parameters.Add(iidParam); parameters.Add(revisionParam); diff --git a/CDP4Orm/Dao/Revision/RevisionDao.cs b/CDP4Orm/Dao/Revision/RevisionDao.cs index a0564c4a..7e46a986 100644 --- a/CDP4Orm/Dao/Revision/RevisionDao.cs +++ b/CDP4Orm/Dao/Revision/RevisionDao.cs @@ -111,11 +111,6 @@ public class RevisionDao : IRevisionDao /// public IResolveDao ResolveDao { get; set; } - /// - /// Gets or sets the injected - /// - public ICdp4JsonSerializer JsonSerializer { get; set; } - /// /// Retrieves data from the RevisionRegistry table in the specific partition. /// @@ -195,7 +190,7 @@ public void WriteRevision(NpgsqlTransaction transaction, string partition, Thing command.Parameters.Add("iid", NpgsqlDbType.Uuid).Value = thing.Iid; command.Parameters.Add("revisionnumber", NpgsqlDbType.Integer).Value = thing.RevisionNumber; command.Parameters.Add("actor", NpgsqlDbType.Uuid).Value = actor; - command.Parameters.Add("jsonb", NpgsqlDbType.Jsonb).Value = this.JsonSerializer.SerializeToString(thing); + command.Parameters.Add("jsonb", NpgsqlDbType.Jsonb).Value = JsonSerializer.Serialize(thing); command.ExecuteNonQuery(); } @@ -229,7 +224,7 @@ public void BulkWriteRevision(NpgsqlTransaction transaction, string partition, I var iidParam = new NpgsqlParameter($"iid_{index}", NpgsqlDbType.Uuid) { Value = thing.Iid }; var revisionParam = new NpgsqlParameter($"revisionnumber_{index}", NpgsqlDbType.Integer) { Value = thing.RevisionNumber }; var actorParam = new NpgsqlParameter($"actor_{index}", NpgsqlDbType.Uuid) { Value = actor }; - var jsonbParam = new NpgsqlParameter($"jsonb_{index}", NpgsqlDbType.Jsonb) { Value = this.JsonSerializer.SerializeToString(thing) }; + var jsonbParam = new NpgsqlParameter($"jsonb_{index}", NpgsqlDbType.Jsonb) { Value = JsonSerializer.Serialize(thing) }; parameters.Add(iidParam); parameters.Add(revisionParam); @@ -666,7 +661,7 @@ private static string GetThingRevisionTableName(ClassKind classKind) /// A private Thing MapToDto(NpgsqlDataReader reader) { - var jsonObject = this.JsonSerializer.Deserialize(reader.GetValue(0).ToString()); + var jsonObject = JsonSerializer.Deserialize(reader.GetValue(0).ToString()); Thing thing; diff --git a/CometServer/CometServer.csproj b/CometServer/CometServer.csproj index 5ae619df..c322a642 100644 --- a/CometServer/CometServer.csproj +++ b/CometServer/CometServer.csproj @@ -19,9 +19,9 @@ - - - + + + diff --git a/CometServer/Modules/10-25/EngineeringModelApi.cs b/CometServer/Modules/10-25/EngineeringModelApi.cs index 08f32924..b0fd3d3e 100644 --- a/CometServer/Modules/10-25/EngineeringModelApi.cs +++ b/CometServer/Modules/10-25/EngineeringModelApi.cs @@ -242,6 +242,7 @@ public override void AddRoutes(IEndpointRouteBuilder app) res.StatusCode = (int)HttpStatusCode.InternalServerError; await res.AsJson($"exception:{ex.Message}"); + return; } if (postRequestData.IsMultiPart && requestUtils.QueryParameters.WaitTime > 0) diff --git a/CometServer/Modules/10-25/SiteDirectoryApi.cs b/CometServer/Modules/10-25/SiteDirectoryApi.cs index 4cca12e6..7babaec9 100644 --- a/CometServer/Modules/10-25/SiteDirectoryApi.cs +++ b/CometServer/Modules/10-25/SiteDirectoryApi.cs @@ -262,6 +262,7 @@ public override void AddRoutes(IEndpointRouteBuilder app) res.StatusCode = (int)HttpStatusCode.InternalServerError; await res.AsJson($"exception:{ex.Message}"); + return; } if (postRequestData.IsMultiPart ) diff --git a/CometServer/Modules/Tasks/CometTasksModule.cs b/CometServer/Modules/Tasks/CometTasksModule.cs index e972df27..7c0ac8bc 100644 --- a/CometServer/Modules/Tasks/CometTasksModule.cs +++ b/CometServer/Modules/Tasks/CometTasksModule.cs @@ -32,7 +32,7 @@ namespace CometServer.Modules.Tasks using Carter; using Carter.Response; - using CDP4DalCommon.Tasks; + using CDP4DalCommon.Protocol.Tasks; using CometServer.Authorization; using CometServer.Configuration; diff --git a/CometServer/Startup.cs b/CometServer/Startup.cs index eb2f73ac..f478934f 100644 --- a/CometServer/Startup.cs +++ b/CometServer/Startup.cs @@ -164,7 +164,8 @@ public void ConfigureContainer(ContainerBuilder builder) builder.RegisterType().As().SingleInstance(); builder.RegisterAssemblyTypes(typeof(IMetaInfo).Assembly).Where(x => typeof(IMetaInfo).IsAssignableFrom(x)).AsImplementedInterfaces().PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies).InstancePerLifetimeScope(); builder.RegisterType().As().As().PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies).InstancePerLifetimeScope(); - builder.Register(_ => new Cdp4DalJsonSerializer(false)).As().InstancePerLifetimeScope(); + builder.Register(_ => + new Cdp4DalJsonSerializer(false)).As().InstancePerLifetimeScope(); builder.RegisterType().As().InstancePerLifetimeScope(); // authentication services