Skip to content

Commit 8d978ef

Browse files
Reuse the Deploy JsonSerializerOptions for any custom serialize/deserialize needs
1 parent 31d9f4c commit 8d978ef

File tree

3 files changed

+26
-31
lines changed

3 files changed

+26
-31
lines changed

src/Umbraco.Commerce.Deploy/Connectors/ServiceConnectors/UmbracoCommerceShippingMethodServiceConnector.cs

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,29 @@
44
using System.Text.Json;
55
using System.Threading;
66
using System.Threading.Tasks;
7+
using Microsoft.AspNetCore.Http.Json;
8+
using Microsoft.Extensions.Options;
79
using Umbraco.Commerce.Core.Api;
810
using Umbraco.Commerce.Core.Models;
911
using Umbraco.Commerce.Deploy.Artifacts;
1012
using Umbraco.Commerce.Deploy.Configuration;
1113
using Umbraco.Cms.Core;
1214
using Umbraco.Cms.Core.Deploy;
13-
15+
using Umbraco.Deploy.Core;
1416
using StringExtensions = Umbraco.Commerce.Extensions.StringExtensions;
1517

1618
namespace Umbraco.Commerce.Deploy.Connectors.ServiceConnectors
1719
{
1820
[UdiDefinition(UmbracoCommerceConstants.UdiEntityType.ShippingMethod, UdiType.GuidUdi)]
19-
public class UmbracoCommerceShippingMethodServiceConnector : UmbracoCommerceStoreEntityServiceConnectorBase<ShippingMethodArtifact, ShippingMethodReadOnly, ShippingMethod, ShippingMethodState>
21+
public class UmbracoCommerceShippingMethodServiceConnector(
22+
IUmbracoCommerceApi umbracoCommerceApi,
23+
UmbracoCommerceDeploySettingsAccessor settingsAccessor,
24+
IOptionsMonitor<JsonOptions> jsonOptions)
25+
: UmbracoCommerceStoreEntityServiceConnectorBase<ShippingMethodArtifact, ShippingMethodReadOnly, ShippingMethod,
26+
ShippingMethodState>(umbracoCommerceApi, settingsAccessor)
2027
{
28+
private readonly JsonSerializerOptions _jsonSerializerOptions = jsonOptions.Get(DeployConstants.JsonOptionsNames.Deploy).SerializerOptions;
29+
2130
protected override int[] ProcessPasses => new[]
2231
{
2332
2,4
@@ -34,10 +43,6 @@ public class UmbracoCommerceShippingMethodServiceConnector : UmbracoCommerceStor
3443

3544
public override string UdiEntityType => UmbracoCommerceConstants.UdiEntityType.ShippingMethod;
3645

37-
public UmbracoCommerceShippingMethodServiceConnector(IUmbracoCommerceApi umbracoCommerceApi, UmbracoCommerceDeploySettingsAccessor settingsAccessor)
38-
: base(umbracoCommerceApi, settingsAccessor)
39-
{ }
40-
4146
public override string GetEntityName(ShippingMethodReadOnly entity)
4247
=> entity.Name;
4348

@@ -137,12 +142,12 @@ public override IAsyncEnumerable<ShippingMethodReadOnly> GetEntitiesAsync(Guid s
137142
artifact.CalculationConfig = JsonSerializer.SerializeToElement(new FixedRateShippingCalculationConfigArtifact
138143
{
139144
Prices = servicesPrices
140-
}, Constants.DefaultJsonSerializerOptions);
145+
}, _jsonSerializerOptions);
141146
}
142147
else
143148
{
144149
// No additional processing required
145-
artifact.CalculationConfig = JsonSerializer.SerializeToElement(entity.CalculationConfig, Constants.DefaultJsonSerializerOptions);
150+
artifact.CalculationConfig = JsonSerializer.SerializeToElement(entity.CalculationConfig, _jsonSerializerOptions);
146151
}
147152
}
148153

@@ -265,7 +270,7 @@ private Task Pass4Async(ArtifactDeployState<ShippingMethodArtifact, ShippingMeth
265270
{
266271
if (artifact.CalculationMode == (int)ShippingCalculationMode.Fixed)
267272
{
268-
FixedRateShippingCalculationConfigArtifact? cfgArtifact = artifact.CalculationConfig?.Deserialize<FixedRateShippingCalculationConfigArtifact>(Constants.DefaultJsonSerializerOptions);
273+
FixedRateShippingCalculationConfigArtifact? cfgArtifact = artifact.CalculationConfig?.Deserialize<FixedRateShippingCalculationConfigArtifact>(_jsonSerializerOptions);
269274

270275
var prices = new List<ServicePrice>();
271276

@@ -290,11 +295,11 @@ private Task Pass4Async(ArtifactDeployState<ShippingMethodArtifact, ShippingMeth
290295
}
291296
else if (artifact.CalculationMode == (int)ShippingCalculationMode.Dynamic)
292297
{
293-
entity.SetCalculationConfig(artifact.CalculationConfig?.Deserialize<DynamicRateShippingCalculationConfig>(Constants.DefaultJsonSerializerOptions));
298+
entity.SetCalculationConfig(artifact.CalculationConfig?.Deserialize<DynamicRateShippingCalculationConfig>(_jsonSerializerOptions));
294299
}
295300
else if (artifact.CalculationMode == (int)ShippingCalculationMode.Realtime)
296301
{
297-
entity.SetCalculationConfig(artifact.CalculationConfig?.Deserialize<RealtimeRateShippingCalculationConfig>(Constants.DefaultJsonSerializerOptions));
302+
entity.SetCalculationConfig(artifact.CalculationConfig?.Deserialize<RealtimeRateShippingCalculationConfig>(_jsonSerializerOptions));
298303
}
299304
else
300305
{

src/Umbraco.Commerce.Deploy/Connectors/ValueConnectors/UmbracoCommercePriceValueConnector.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,26 @@
33
using System.Text.Json;
44
using System.Threading;
55
using System.Threading.Tasks;
6+
using Microsoft.AspNetCore.Http.Json;
7+
using Microsoft.Extensions.Options;
68
using Umbraco.Commerce.Core.Api;
79
using Umbraco.Commerce.Deploy.Configuration;
810
using Umbraco.Cms.Core;
911
using Umbraco.Cms.Core.Deploy;
1012
using Umbraco.Cms.Core.Models;
1113
using Umbraco.Commerce.Core.Models;
14+
using Umbraco.Deploy.Core;
1215
using Umbraco.Deploy.Core.Connectors.ValueConnectors;
1316

1417
namespace Umbraco.Commerce.Deploy.Connectors.ValueConnectors
1518
{
1619
public class UmbracoCommercePriceValueConnector(
1720
IUmbracoCommerceApi umbracoCommerceApi,
18-
UmbracoCommerceDeploySettingsAccessor settingsAccessor)
21+
IOptionsMonitor<JsonOptions> jsonOptions)
1922
: ValueConnectorBase
2023
{
24+
private readonly JsonSerializerOptions _jsonSerializerOptions = jsonOptions.Get(DeployConstants.JsonOptionsNames.Deploy).SerializerOptions;
25+
2126
public override IEnumerable<string> PropertyEditorAliases => new[] { "Umbraco.Commerce.Price" };
2227

2328
public override async Task<string?> ToArtifactAsync(
@@ -34,7 +39,7 @@ public class UmbracoCommercePriceValueConnector(
3439
return null;
3540
}
3641

37-
Dictionary<Guid, decimal?>? srcDict = JsonSerializer.Deserialize<Dictionary<Guid, decimal?>>(svalue, Constants.DefaultJsonSerializerOptions);
42+
Dictionary<Guid, decimal?>? srcDict = JsonSerializer.Deserialize<Dictionary<Guid, decimal?>>(svalue, _jsonSerializerOptions);
3843

3944
var dstDict = new Dictionary<GuidUdi, decimal?>();
4045

@@ -54,7 +59,7 @@ public class UmbracoCommercePriceValueConnector(
5459
dstDict.Add(udi, kvp.Value);
5560
}
5661

57-
return JsonSerializer.Serialize(dstDict, Constants.DefaultJsonSerializerOptions);
62+
return JsonSerializer.Serialize(dstDict, _jsonSerializerOptions);
5863
}
5964

6065

@@ -73,7 +78,7 @@ public class UmbracoCommercePriceValueConnector(
7378
return null;
7479
}
7580

76-
Dictionary<string, decimal?>? srcDict = JsonSerializer.Deserialize<Dictionary<string, decimal?>>(svalue, Constants.DefaultJsonSerializerOptions);
81+
Dictionary<string, decimal?>? srcDict = JsonSerializer.Deserialize<Dictionary<string, decimal?>>(svalue, _jsonSerializerOptions);
7782

7883
var dstDict = new Dictionary<Guid, decimal?>();
7984

@@ -89,7 +94,7 @@ public class UmbracoCommercePriceValueConnector(
8994
}
9095
}
9196

92-
return JsonSerializer.Serialize(dstDict, Constants.DefaultJsonSerializerOptions);
97+
return JsonSerializer.Serialize(dstDict, _jsonSerializerOptions);
9398
}
9499
}
95100
}

src/Umbraco.Commerce.Deploy/Constants.cs

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)