Skip to content

Commit 2e2eaea

Browse files
[Fix] ZipArchiveEntry Disposed error for large ReqifZ files using ReqIFSerializer.SerializeAsync
1 parent ca6eb13 commit 2e2eaea

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

ReqIFSharp.Tests/ReqIFSerializerTestFixture.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ internal class ReqIFSerializerTestFixture
3838
private ReqIF reqIF;
3939

4040
private string resultFileUri;
41-
private string resultFileUriÀrchive;
41+
private string resultFileUriArchive;
4242
private string asyncResultFileUri;
4343
private string asyncResultFileUriArchive;
4444

@@ -62,7 +62,7 @@ internal class ReqIFSerializerTestFixture
6262
public void SetUp()
6363
{
6464
this.resultFileUri = Path.Combine(TestContext.CurrentContext.TestDirectory, "result.reqif");
65-
this.resultFileUriÀrchive = Path.Combine(TestContext.CurrentContext.TestDirectory, "result.reqifz");
65+
this.resultFileUriArchive = Path.Combine(TestContext.CurrentContext.TestDirectory, "result.reqifz");
6666
this.asyncResultFileUri = Path.Combine(TestContext.CurrentContext.TestDirectory, "async-result.reqif");
6767
this.asyncResultFileUriArchive = Path.Combine(TestContext.CurrentContext.TestDirectory, "async-result.reqifz");
6868

@@ -120,7 +120,7 @@ public void TearDown()
120120
private void CleanUpFiles()
121121
{
122122
File.Delete(this.resultFileUri);
123-
File.Delete(this.resultFileUriÀrchive);
123+
File.Delete(this.resultFileUriArchive);
124124
File.Delete(this.asyncResultFileUri);
125125
File.Delete(this.asyncResultFileUriArchive);
126126
}
@@ -759,7 +759,7 @@ public void Verify_That_ArgumentException_Is_Raised_OnSerialize_to_file()
759759
Throws.Exception.TypeOf<ArgumentException>()
760760
.With.Message.Contains("One and only one ReqIF object can be serialized to a reqif file. If multiple ReqIF objects need to be serialized, please make use of the reqifz format."));
761761

762-
filePath = this.resultFileUriÀrchive;
762+
filePath = this.resultFileUriArchive;
763763

764764
Assert.That(() => serializer.Serialize(reqifs, filePath),
765765
Throws.Exception.TypeOf<ArgumentException>()
@@ -924,9 +924,9 @@ public void Verify_that_multiple_ReqIF_objects_can_be_serialized_to_archive_file
924924

925925
var serializer = new ReqIFSerializer();
926926

927-
serializer.Serialize(reqifs, this.resultFileUriÀrchive);
927+
serializer.Serialize(reqifs, this.resultFileUriArchive);
928928

929-
Assert.IsTrue(File.Exists(this.resultFileUriÀrchive));
929+
Assert.IsTrue(File.Exists(this.resultFileUriArchive));
930930
}
931931

932932
[Test]
@@ -941,6 +941,13 @@ public async Task Verify_that_multiple_ReqIF_objects_can_be_serialized_to_archiv
941941
await serializer.SerializeAsync(reqifs, this.asyncResultFileUriArchive, cancellationTokenSource.Token);
942942

943943
Assert.IsTrue(File.Exists(this.asyncResultFileUriArchive));
944+
945+
var deserializer = new ReqIFDeserializer();
946+
947+
var deserializedReqifs = await deserializer.DeserializeAsync(this.asyncResultFileUriArchive, cancellationTokenSource.Token);
948+
949+
Assert.That(deserializedReqifs.Count(), Is.EqualTo(2));
950+
944951
}
945952
}
946953
}

ReqIFSharp/ReqIFSerializer.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,6 @@ public async Task SerializeAsync(IEnumerable<ReqIF> reqIfs, Stream stream, Suppo
159159
using (var archive = new ZipArchive(stream, ZipArchiveMode.Create, true))
160160
{
161161
var i = 0;
162-
var tasks = new List<Task>();
163162

164163
foreach (var reqIf in reqIfs)
165164
{
@@ -169,11 +168,10 @@ public async Task SerializeAsync(IEnumerable<ReqIF> reqIfs, Stream stream, Suppo
169168

170169
using (var reqifEntryStream = reqifEntry.Open())
171170
{
172-
tasks.Add( this.WriteXmlToStreamAsync(reqIf, reqifEntryStream, token));
171+
await this.WriteXmlToStreamAsync(reqIf, reqifEntryStream, token);
173172
}
174173
}
175174

176-
await Task.WhenAll(tasks);
177175
break;
178176
}
179177
default:

0 commit comments

Comments
 (0)