Skip to content

Commit 30daa83

Browse files
[Simplify] Xmi Serializer and DeSerializer
1 parent 1799651 commit 30daa83

File tree

5 files changed

+34
-78
lines changed

5 files changed

+34
-78
lines changed

SysML2.NET.Serializer.Xmi.Tests/DeSerializerTestFixture.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,11 @@ namespace SysML2.NET.Serializer.Xmi.Tests
2929
using Microsoft.Extensions.Logging;
3030

3131
using SysML2.NET.Serializer.Xmi.Extensions;
32-
using SysML2.NET.Serializer.Xmi.Readers;
3332

3433
[TestFixture]
3534
public class DeSerializerTestFixture
3635
{
3736
private DeSerializer deSerializer;
38-
private XmiDataCache xmiDataCache;
3937

4038
[SetUp]
4139
public void Setup()
@@ -44,9 +42,7 @@ public void Setup()
4442
.AddLogging(x => x.AddConsole())
4543
.BuildServiceProvider();
4644

47-
this.xmiDataCache = new XmiDataCache(new PocoReferenceResolveExtensionsFacade(),serviceProvider.GetRequiredService<ILogger<XmiDataCache>>());
48-
49-
this.deSerializer = new DeSerializer(new ExternalReferenceService(serviceProvider.GetRequiredService<ILogger<ExternalReferenceService>>()), new XmiDataReaderFacade(), this.xmiDataCache, serviceProvider.GetRequiredService<ILoggerFactory>());
45+
this.deSerializer = new DeSerializer(serviceProvider.GetRequiredService<ILoggerFactory>());
5046
}
5147

5248
[Test]

SysML2.NET.Serializer.Xmi.Tests/RoundTripTestFixture.cs

Lines changed: 7 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,13 @@ namespace SysML2.NET.Serializer.Xmi.Tests
3131
using Org.XmlUnit.Builder;
3232
using Org.XmlUnit.Diff;
3333

34-
using SysML2.NET.Serializer.Xmi.Extensions;
35-
using SysML2.NET.Serializer.Xmi.Readers;
3634
using SysML2.NET.Serializer.Xmi.Writers;
3735

3836
[TestFixture]
3937
public class RoundTripTestFixture
4038
{
4139
private ILoggerFactory loggerFactory;
40+
4241
private XmiWriterOptions writerOptions = new();
4342

4443
[SetUp]
@@ -54,13 +53,7 @@ public void Setup()
5453
[Test]
5554
public void Verify_that_deserialization_with_origin_map_tracks_elements()
5655
{
57-
var xmiDataCache = new XmiDataCache(new PocoReferenceResolveExtensionsFacade(), this.loggerFactory.CreateLogger<XmiDataCache>());
58-
59-
var deSerializer = new DeSerializer(
60-
new ExternalReferenceService(this.loggerFactory.CreateLogger<ExternalReferenceService>()),
61-
new XmiDataReaderFacade(),
62-
xmiDataCache,
63-
this.loggerFactory);
56+
var deSerializer = new DeSerializer(this.loggerFactory);
6457

6558
var originMap = new XmiElementOriginMap();
6659

@@ -89,21 +82,15 @@ public void Verify_that_deserialization_with_origin_map_tracks_elements()
8982
public void Verify_that_serialized_output_is_well_formed_xml_with_correct_root()
9083
{
9184
// Step 1: Deserialize original
92-
var xmiDataCache1 = new XmiDataCache(new PocoReferenceResolveExtensionsFacade(), this.loggerFactory.CreateLogger<XmiDataCache>());
93-
94-
var deSerializer1 = new DeSerializer(
95-
new ExternalReferenceService(this.loggerFactory.CreateLogger<ExternalReferenceService>()),
96-
new XmiDataReaderFacade(),
97-
xmiDataCache1,
98-
this.loggerFactory);
85+
var deSerializer1 = new DeSerializer(this.loggerFactory);
9986

10087
var filePath = Path.Combine(TestContext.CurrentContext.TestDirectory, "Resources", "Domain Libraries", "Quantities and Units", "Quantities.sysmlx");
10188
var originalNamespace = deSerializer1.DeSerialize(new Uri(filePath));
10289

10390
Assert.That(originalNamespace, Is.Not.Null);
10491

10592
// Step 2: Serialize to stream
106-
var serializer = new Serializer(new XmiDataWriterFacade(this.loggerFactory), this.loggerFactory);
93+
var serializer = new Serializer(this.loggerFactory);
10794
var memoryStream = new MemoryStream();
10895

10996
serializer.Serialize(originalNamespace, this.writerOptions, memoryStream);
@@ -129,13 +116,7 @@ public void Verify_that_serialized_output_is_well_formed_xml_with_correct_root()
129116
[Test]
130117
public void Verify_that_origin_map_captures_multi_file_references()
131118
{
132-
var xmiDataCache = new XmiDataCache(new PocoReferenceResolveExtensionsFacade(), this.loggerFactory.CreateLogger<XmiDataCache>());
133-
134-
var deSerializer = new DeSerializer(
135-
new ExternalReferenceService(this.loggerFactory.CreateLogger<ExternalReferenceService>()),
136-
new XmiDataReaderFacade(),
137-
xmiDataCache,
138-
this.loggerFactory);
119+
var deSerializer = new DeSerializer(this.loggerFactory);
139120

140121
var originMap = new XmiElementOriginMap();
141122

@@ -161,13 +142,7 @@ public void Verify_that_origin_map_captures_multi_file_references()
161142
[Test]
162143
public void VerifySerializedXmlCorrespondToOriginalFile()
163144
{
164-
var xmiDataCache = new XmiDataCache(new PocoReferenceResolveExtensionsFacade(), this.loggerFactory.CreateLogger<XmiDataCache>());
165-
166-
var deSerializer = new DeSerializer(
167-
new ExternalReferenceService(this.loggerFactory.CreateLogger<ExternalReferenceService>()),
168-
new XmiDataReaderFacade(),
169-
xmiDataCache,
170-
this.loggerFactory);
145+
var deSerializer = new DeSerializer(this.loggerFactory);
171146

172147
var originMap = new XmiElementOriginMap();
173148

@@ -177,7 +152,7 @@ public void VerifySerializedXmlCorrespondToOriginalFile()
177152

178153
var quantityNamespace = deSerializer.DeSerialize(fileUri, originMap);
179154

180-
var serializer = new Serializer(new XmiDataWriterFacade(this.loggerFactory), this.loggerFactory);
155+
var serializer = new Serializer(this.loggerFactory);
181156
var outputFile = Path.Combine(TestContext.CurrentContext.TestDirectory, "SerializedQuantities.sysmlx");
182157

183158
var fileStream = new FileStream(outputFile, FileMode.Create);

SysML2.NET.Serializer.Xmi.Tests/SerializerTestFixture.cs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,19 @@ namespace SysML2.NET.Serializer.Xmi.Tests
2626
using System.Threading;
2727
using System.Threading.Tasks;
2828

29-
using Core.POCO.Root.Elements;
3029
using Core.POCO.Root.Namespaces;
3130

3231
using Microsoft.Extensions.DependencyInjection;
3332
using Microsoft.Extensions.Logging;
3433

35-
using SysML2.NET.Serializer.Xmi.Extensions;
36-
using SysML2.NET.Serializer.Xmi.Readers;
3734
using SysML2.NET.Serializer.Xmi.Writers;
3835

3936
[TestFixture]
4037
public class SerializerTestFixture
4138
{
4239
private Serializer serializer;
4340
private DeSerializer deSerializer;
44-
private XmiDataCache xmiDataCache;
45-
41+
4642
private INamespace anonymouseNameSpace;
4743
private XmiWriterOptions writerOptions = new();
4844

@@ -53,13 +49,11 @@ public void Setup()
5349
.AddLogging(x => x.AddConsole())
5450
.BuildServiceProvider();
5551

56-
this.xmiDataCache = new XmiDataCache(new PocoReferenceResolveExtensionsFacade(), serviceProvider.GetRequiredService<ILogger<XmiDataCache>>());
57-
58-
this.deSerializer = new DeSerializer(new ExternalReferenceService(serviceProvider.GetRequiredService<ILogger<ExternalReferenceService>>()), new XmiDataReaderFacade(), this.xmiDataCache, serviceProvider.GetRequiredService<ILoggerFactory>());
52+
this.deSerializer = new DeSerializer(serviceProvider.GetRequiredService<ILoggerFactory>());
5953

6054
this.ReadAndAssemblePopulationFromXmiFile();
6155

62-
this.serializer = new Serializer(new XmiDataWriterFacade(serviceProvider.GetRequiredService<ILoggerFactory>()), serviceProvider.GetRequiredService<ILoggerFactory>());
56+
this.serializer = new Serializer(serviceProvider.GetRequiredService<ILoggerFactory>());
6357
}
6458

6559
[Test]

SysML2.NET.Serializer.Xmi/DeSerializer.cs

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,54 +33,51 @@ namespace SysML2.NET.Serializer.Xmi
3333

3434
using SysML2.NET.Common;
3535
using SysML2.NET.Core.POCO.Root.Namespaces;
36+
using SysML2.NET.Serializer.Xmi.Extensions;
3637
using SysML2.NET.Serializer.Xmi.Readers;
37-
38+
3839
/// <summary>
3940
/// The purpose of the <see cref="DeSerializer" /> is to deserialize a XMI <see cref="Stream" /> to
4041
/// an <see cref="IData" /> and <see cref="IEnumerable{IData}" />
4142
/// </summary>
4243
public class DeSerializer : IDeSerializer
4344
{
4445
/// <summary>
45-
/// The injected <see cref="IXmiDataCache" /> storing read <see cref="IData" />
46+
/// The injected <see cref="ILogger{TCategoryName}" /> to produce logs statement
4647
/// </summary>
47-
private readonly IXmiDataCache cache;
48+
private readonly ILogger<DeSerializer> logger;
4849

4950
/// <summary>
50-
/// The injected <see cref="IExternalReferenceService" /> providing external reference file resolve
51+
/// The injected <see cref="ILoggerFactory " /> used to set up logging
5152
/// </summary>
52-
private readonly IExternalReferenceService externalReferenceService;
53-
53+
private readonly ILoggerFactory loggerFactory;
54+
5455
/// <summary>
55-
/// The injected <see cref="ILogger{TCategoryName}" /> to produce logs statement
56+
/// The injected <see cref="IXmiDataCache" /> storing read <see cref="IData" />
5657
/// </summary>
57-
private readonly ILogger<DeSerializer> logger;
58+
private readonly XmiDataCache cache;
5859

5960
/// <summary>
60-
/// The injected <see cref="ILoggerFactory " /> used to set up logging
61+
/// The injected <see cref="IExternalReferenceService" /> providing external reference file resolve
6162
/// </summary>
62-
private readonly ILoggerFactory loggerFactory;
63+
private readonly ExternalReferenceService externalReferenceService;
6364

6465
/// <summary>
6566
/// The injected <see cref="IXmiDataReaderFacade" /> providing <see cref="XmiDataReader{TData}" /> resolve feature based on XMI row type
6667
/// </summary>
67-
private readonly IXmiDataReaderFacade xmiDataReaderFacade;
68+
private readonly XmiDataReaderFacade xmiDataReaderFacade;
6869

6970
/// <summary>Initializes a new instance of the <see cref="DeSerializer"></see> class.</summary>
70-
/// <param name="externalReferenceService">The injected <see cref="IExternalReferenceService" /> providing external reference file resolve</param>
71-
/// <param name="xmiDataReaderFacade">
72-
/// The injected <see cref="IXmiDataReaderFacade" /> providing
73-
/// <see cref="XmiDataReader{TData}" /> resolve feature based on XMI row type
74-
/// </param>
75-
/// <param name="cache">The injected <see cref="IXmiDataCache" /> storing read <see cref="IData" /></param>
7671
/// <param name="loggerFactory">The injected <see cref="ILoggerFactory " /> used to set up logging</param>
77-
public DeSerializer(IExternalReferenceService externalReferenceService, IXmiDataReaderFacade xmiDataReaderFacade, IXmiDataCache cache, ILoggerFactory loggerFactory)
72+
public DeSerializer(ILoggerFactory loggerFactory)
7873
{
7974
this.loggerFactory = loggerFactory ?? NullLoggerFactory.Instance;
8075
this.logger = this.loggerFactory.CreateLogger<DeSerializer>();
81-
this.cache = cache;
82-
this.externalReferenceService = externalReferenceService;
83-
this.xmiDataReaderFacade = xmiDataReaderFacade;
76+
77+
this.externalReferenceService = new ExternalReferenceService(this.loggerFactory.CreateLogger<ExternalReferenceService>());
78+
this.cache = new XmiDataCache(new PocoReferenceResolveExtensionsFacade(), this.loggerFactory.CreateLogger<XmiDataCache>());
79+
80+
this.xmiDataReaderFacade = new XmiDataReaderFacade();
8481
}
8582

8683
/// <summary>

SysML2.NET.Serializer.Xmi/Serializer.cs

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -61,24 +61,18 @@ public class Serializer : ISerializer
6161
/// </summary>
6262
private readonly ILogger<Serializer> logger;
6363

64-
/// <summary>
65-
/// Gets the <see cref="ILoggerFactory"/> instance used to set up logging
66-
/// </summary>
67-
private readonly ILoggerFactory loggerFactory;
68-
6964
/// <summary>
7065
/// Gets the <see cref="IXmiDataWriterFacade"/> to dispatch <see cref="IElement"/> writing
7166
/// </summary>
72-
private readonly IXmiDataWriterFacade xmiWriterFacade;
67+
private readonly XmiDataWriterFacade xmiWriterFacade;
7368

7469
/// <summary>Initializes a new instance of the <see cref="Serializer"></see> class.</summary>
75-
/// <param name="xmiWriterFacade">The injected <see cref="IXmiDataWriterFacade"/> to dispatch element writing</param>
7670
/// <param name="loggerFactory">The injected <see cref="ILoggerFactory " /> used to set up logging</param>
77-
public Serializer(IXmiDataWriterFacade xmiWriterFacade, ILoggerFactory loggerFactory)
71+
public Serializer(ILoggerFactory loggerFactory)
7872
{
79-
this.loggerFactory = loggerFactory ?? NullLoggerFactory.Instance;
80-
this.logger = this.loggerFactory.CreateLogger<Serializer>();
81-
this.xmiWriterFacade = xmiWriterFacade ?? throw new ArgumentNullException(nameof(xmiWriterFacade));
73+
this.logger = loggerFactory.CreateLogger<Serializer>();
74+
75+
this.xmiWriterFacade = new XmiDataWriterFacade(loggerFactory);
8276
}
8377

8478
/// <summary>

0 commit comments

Comments
 (0)