Skip to content

Commit a873d3f

Browse files
authored
allow AddEmbeddedPackagePart to use correct extensions for content types (#1388)
* allow AddEmbeddedPackagePart to use the correct extension for contenttype
1 parent 04ce485 commit a873d3f

27 files changed

+1872
-4
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
2020
- Fixed incorrect file extensions for vbaProject files (#1292)
2121
- Fixed incorrect file extensions for ImagePart (#1305)
2222
- Fixed incorrect casing for customXml (#1351)
23+
- Fixed AddEmbeddedPackagePart to allow correct extensions for various content types (#1388)
2324

2425
## [2.19.0] - 2022-12-14
2526

gen/DocumentFormat.OpenXml.Generator.Models/Generators/Parts/PartWriter.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -502,10 +502,8 @@ IEnumerable<Item> CreatePartMethods(PartChild p)
502502
yield return new Item(ItemType.Method, $"Add{p.Name}", writer => GenerateAddPartMethod(writer, type, p, AddPartParameter.MediaDataPart, false));
503503
yield return new Item(ItemType.Method, $"Add{p.Name}", writer => GenerateAddPartMethod(writer, type, p, AddPartParameter.MediaDataPart, true));
504504
}
505-
else if (p.IsSpecialEmbeddedPart)
506-
{
507-
yield return new Item(ItemType.Method, $"Add{p.Name}", writer => GenerateAddPartMethod(writer, type, p, AddPartParameter.ContentType, false));
508-
}
505+
506+
// These are the same now but may need p.IsSpecialEmbeddedPart case later upon redesign of this.
509507
else
510508
{
511509
yield return new Item(ItemType.Method, $"Add{p.Name}", writer => GenerateAddPartMethod(writer, type, p, AddPartParameter.ContentType, false));

generated/DocumentFormat.OpenXml/DocumentFormat.OpenXml.Generator/DocumentFormat.OpenXml.Generator.PartGenerator/ChartPart.cs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,46 @@ public EmbeddedPackagePart AddEmbeddedPackagePart(string contentType)
117117
return childPart;
118118
}
119119

120+
/// <summary>
121+
/// Adds a EmbeddedPackagePart to the ChartPart
122+
/// </summary>
123+
/// <param name="contentType">The content type of the EmbeddedPackagePart</param>
124+
/// <param name="id">The relationship id</param>
125+
/// <return>The newly added part</return>
126+
public EmbeddedPackagePart AddEmbeddedPackagePart(string contentType, string id)
127+
{
128+
var childPart = new EmbeddedPackagePart();
129+
InitPart(childPart, contentType, id);
130+
return childPart;
131+
}
132+
133+
/// <summary>
134+
/// Adds a EmbeddedPackagePart to the ChartPart
135+
/// </summary>
136+
/// <param name="partType">The part type of the EmbeddedPackagePart</param>
137+
/// <param name="id">The relationship id</param>
138+
/// <return>The newly added part</return>
139+
public EmbeddedPackagePart AddEmbeddedPackagePart(EmbeddedPackagePartType partType, string id)
140+
{
141+
var contentType = EmbeddedPackagePartTypeInfo.GetContentType(partType);
142+
var partExtension = EmbeddedPackagePartTypeInfo.GetTargetExtension(partType);
143+
OpenXmlPackage.PartExtensionProvider.MakeSurePartExtensionExist(contentType, partExtension);
144+
return AddEmbeddedPackagePart(contentType, id);
145+
}
146+
147+
/// <summary>
148+
/// Adds a EmbeddedPackagePart to the ChartPart
149+
/// </summary>
150+
/// <param name="partType">The part type of the EmbeddedPackagePart</param>
151+
/// <return>The newly added part</return>
152+
public EmbeddedPackagePart AddEmbeddedPackagePart(EmbeddedPackagePartType partType)
153+
{
154+
var contentType = EmbeddedPackagePartTypeInfo.GetContentType(partType);
155+
var partExtension = EmbeddedPackagePartTypeInfo.GetTargetExtension(partType);
156+
OpenXmlPackage.PartExtensionProvider.MakeSurePartExtensionExist(contentType, partExtension);
157+
return AddEmbeddedPackagePart(contentType);
158+
}
159+
120160
/// <summary>
121161
/// Adds a ImagePart to the ChartPart
122162
/// </summary>

generated/DocumentFormat.OpenXml/DocumentFormat.OpenXml.Generator/DocumentFormat.OpenXml.Generator.PartGenerator/DialogsheetPart.cs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,46 @@ public EmbeddedObjectPart AddEmbeddedObjectPart(string contentType)
106106
InitPart(childPart, contentType);
107107
return childPart;
108108
}
109+
110+
/// <summary>
111+
/// Adds a EmbeddedObjectPart to the DialogsheetPart
112+
/// </summary>
113+
/// <param name="contentType">The content type of the EmbeddedObjectPart</param>
114+
/// <param name="id">The relationship id</param>
115+
/// <return>The newly added part</return>
116+
public EmbeddedObjectPart AddEmbeddedObjectPart(string contentType, string id)
117+
{
118+
var childPart = new EmbeddedObjectPart();
119+
InitPart(childPart, contentType, id);
120+
return childPart;
121+
}
122+
123+
/// <summary>
124+
/// Adds a EmbeddedObjectPart to the DialogsheetPart
125+
/// </summary>
126+
/// <param name="partType">The part type of the EmbeddedObjectPart</param>
127+
/// <param name="id">The relationship id</param>
128+
/// <return>The newly added part</return>
129+
public EmbeddedObjectPart AddEmbeddedObjectPart(EmbeddedObjectPartType partType, string id)
130+
{
131+
var contentType = EmbeddedObjectPartTypeInfo.GetContentType(partType);
132+
var partExtension = EmbeddedObjectPartTypeInfo.GetTargetExtension(partType);
133+
OpenXmlPackage.PartExtensionProvider.MakeSurePartExtensionExist(contentType, partExtension);
134+
return AddEmbeddedObjectPart(contentType, id);
135+
}
136+
137+
/// <summary>
138+
/// Adds a EmbeddedObjectPart to the DialogsheetPart
139+
/// </summary>
140+
/// <param name="partType">The part type of the EmbeddedObjectPart</param>
141+
/// <return>The newly added part</return>
142+
public EmbeddedObjectPart AddEmbeddedObjectPart(EmbeddedObjectPartType partType)
143+
{
144+
var contentType = EmbeddedObjectPartTypeInfo.GetContentType(partType);
145+
var partExtension = EmbeddedObjectPartTypeInfo.GetTargetExtension(partType);
146+
OpenXmlPackage.PartExtensionProvider.MakeSurePartExtensionExist(contentType, partExtension);
147+
return AddEmbeddedObjectPart(contentType);
148+
}
109149

110150
/// <inheritdoc/>
111151
public override IFeatureCollection Features => _features ??= new GeneratedFeatures(this);

generated/DocumentFormat.OpenXml/DocumentFormat.OpenXml.Generator/DocumentFormat.OpenXml.Generator.PartGenerator/EndnotesPart.cs

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,46 @@ public EmbeddedObjectPart AddEmbeddedObjectPart(string contentType)
256256
return childPart;
257257
}
258258

259+
/// <summary>
260+
/// Adds a EmbeddedObjectPart to the EndnotesPart
261+
/// </summary>
262+
/// <param name="contentType">The content type of the EmbeddedObjectPart</param>
263+
/// <param name="id">The relationship id</param>
264+
/// <return>The newly added part</return>
265+
public EmbeddedObjectPart AddEmbeddedObjectPart(string contentType, string id)
266+
{
267+
var childPart = new EmbeddedObjectPart();
268+
InitPart(childPart, contentType, id);
269+
return childPart;
270+
}
271+
272+
/// <summary>
273+
/// Adds a EmbeddedObjectPart to the EndnotesPart
274+
/// </summary>
275+
/// <param name="partType">The part type of the EmbeddedObjectPart</param>
276+
/// <param name="id">The relationship id</param>
277+
/// <return>The newly added part</return>
278+
public EmbeddedObjectPart AddEmbeddedObjectPart(EmbeddedObjectPartType partType, string id)
279+
{
280+
var contentType = EmbeddedObjectPartTypeInfo.GetContentType(partType);
281+
var partExtension = EmbeddedObjectPartTypeInfo.GetTargetExtension(partType);
282+
OpenXmlPackage.PartExtensionProvider.MakeSurePartExtensionExist(contentType, partExtension);
283+
return AddEmbeddedObjectPart(contentType, id);
284+
}
285+
286+
/// <summary>
287+
/// Adds a EmbeddedObjectPart to the EndnotesPart
288+
/// </summary>
289+
/// <param name="partType">The part type of the EmbeddedObjectPart</param>
290+
/// <return>The newly added part</return>
291+
public EmbeddedObjectPart AddEmbeddedObjectPart(EmbeddedObjectPartType partType)
292+
{
293+
var contentType = EmbeddedObjectPartTypeInfo.GetContentType(partType);
294+
var partExtension = EmbeddedObjectPartTypeInfo.GetTargetExtension(partType);
295+
OpenXmlPackage.PartExtensionProvider.MakeSurePartExtensionExist(contentType, partExtension);
296+
return AddEmbeddedObjectPart(contentType);
297+
}
298+
259299
/// <summary>
260300
/// Adds a EmbeddedPackagePart to the EndnotesPart
261301
/// </summary>
@@ -268,6 +308,46 @@ public EmbeddedPackagePart AddEmbeddedPackagePart(string contentType)
268308
return childPart;
269309
}
270310

311+
/// <summary>
312+
/// Adds a EmbeddedPackagePart to the EndnotesPart
313+
/// </summary>
314+
/// <param name="contentType">The content type of the EmbeddedPackagePart</param>
315+
/// <param name="id">The relationship id</param>
316+
/// <return>The newly added part</return>
317+
public EmbeddedPackagePart AddEmbeddedPackagePart(string contentType, string id)
318+
{
319+
var childPart = new EmbeddedPackagePart();
320+
InitPart(childPart, contentType, id);
321+
return childPart;
322+
}
323+
324+
/// <summary>
325+
/// Adds a EmbeddedPackagePart to the EndnotesPart
326+
/// </summary>
327+
/// <param name="partType">The part type of the EmbeddedPackagePart</param>
328+
/// <param name="id">The relationship id</param>
329+
/// <return>The newly added part</return>
330+
public EmbeddedPackagePart AddEmbeddedPackagePart(EmbeddedPackagePartType partType, string id)
331+
{
332+
var contentType = EmbeddedPackagePartTypeInfo.GetContentType(partType);
333+
var partExtension = EmbeddedPackagePartTypeInfo.GetTargetExtension(partType);
334+
OpenXmlPackage.PartExtensionProvider.MakeSurePartExtensionExist(contentType, partExtension);
335+
return AddEmbeddedPackagePart(contentType, id);
336+
}
337+
338+
/// <summary>
339+
/// Adds a EmbeddedPackagePart to the EndnotesPart
340+
/// </summary>
341+
/// <param name="partType">The part type of the EmbeddedPackagePart</param>
342+
/// <return>The newly added part</return>
343+
public EmbeddedPackagePart AddEmbeddedPackagePart(EmbeddedPackagePartType partType)
344+
{
345+
var contentType = EmbeddedPackagePartTypeInfo.GetContentType(partType);
346+
var partExtension = EmbeddedPackagePartTypeInfo.GetTargetExtension(partType);
347+
OpenXmlPackage.PartExtensionProvider.MakeSurePartExtensionExist(contentType, partExtension);
348+
return AddEmbeddedPackagePart(contentType);
349+
}
350+
271351
/// <summary>
272352
/// Adds a ImagePart to the EndnotesPart
273353
/// </summary>

generated/DocumentFormat.OpenXml/DocumentFormat.OpenXml.Generator/DocumentFormat.OpenXml.Generator.PartGenerator/ExtendedChartPart.cs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,46 @@ public EmbeddedPackagePart AddEmbeddedPackagePart(string contentType)
117117
return childPart;
118118
}
119119

120+
/// <summary>
121+
/// Adds a EmbeddedPackagePart to the ExtendedChartPart
122+
/// </summary>
123+
/// <param name="contentType">The content type of the EmbeddedPackagePart</param>
124+
/// <param name="id">The relationship id</param>
125+
/// <return>The newly added part</return>
126+
public EmbeddedPackagePart AddEmbeddedPackagePart(string contentType, string id)
127+
{
128+
var childPart = new EmbeddedPackagePart();
129+
InitPart(childPart, contentType, id);
130+
return childPart;
131+
}
132+
133+
/// <summary>
134+
/// Adds a EmbeddedPackagePart to the ExtendedChartPart
135+
/// </summary>
136+
/// <param name="partType">The part type of the EmbeddedPackagePart</param>
137+
/// <param name="id">The relationship id</param>
138+
/// <return>The newly added part</return>
139+
public EmbeddedPackagePart AddEmbeddedPackagePart(EmbeddedPackagePartType partType, string id)
140+
{
141+
var contentType = EmbeddedPackagePartTypeInfo.GetContentType(partType);
142+
var partExtension = EmbeddedPackagePartTypeInfo.GetTargetExtension(partType);
143+
OpenXmlPackage.PartExtensionProvider.MakeSurePartExtensionExist(contentType, partExtension);
144+
return AddEmbeddedPackagePart(contentType, id);
145+
}
146+
147+
/// <summary>
148+
/// Adds a EmbeddedPackagePart to the ExtendedChartPart
149+
/// </summary>
150+
/// <param name="partType">The part type of the EmbeddedPackagePart</param>
151+
/// <return>The newly added part</return>
152+
public EmbeddedPackagePart AddEmbeddedPackagePart(EmbeddedPackagePartType partType)
153+
{
154+
var contentType = EmbeddedPackagePartTypeInfo.GetContentType(partType);
155+
var partExtension = EmbeddedPackagePartTypeInfo.GetTargetExtension(partType);
156+
OpenXmlPackage.PartExtensionProvider.MakeSurePartExtensionExist(contentType, partExtension);
157+
return AddEmbeddedPackagePart(contentType);
158+
}
159+
120160
/// <summary>
121161
/// Adds a ImagePart to the ExtendedChartPart
122162
/// </summary>

generated/DocumentFormat.OpenXml/DocumentFormat.OpenXml.Generator/DocumentFormat.OpenXml.Generator.PartGenerator/FooterPart.cs

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,46 @@ public EmbeddedObjectPart AddEmbeddedObjectPart(string contentType)
256256
return childPart;
257257
}
258258

259+
/// <summary>
260+
/// Adds a EmbeddedObjectPart to the FooterPart
261+
/// </summary>
262+
/// <param name="contentType">The content type of the EmbeddedObjectPart</param>
263+
/// <param name="id">The relationship id</param>
264+
/// <return>The newly added part</return>
265+
public EmbeddedObjectPart AddEmbeddedObjectPart(string contentType, string id)
266+
{
267+
var childPart = new EmbeddedObjectPart();
268+
InitPart(childPart, contentType, id);
269+
return childPart;
270+
}
271+
272+
/// <summary>
273+
/// Adds a EmbeddedObjectPart to the FooterPart
274+
/// </summary>
275+
/// <param name="partType">The part type of the EmbeddedObjectPart</param>
276+
/// <param name="id">The relationship id</param>
277+
/// <return>The newly added part</return>
278+
public EmbeddedObjectPart AddEmbeddedObjectPart(EmbeddedObjectPartType partType, string id)
279+
{
280+
var contentType = EmbeddedObjectPartTypeInfo.GetContentType(partType);
281+
var partExtension = EmbeddedObjectPartTypeInfo.GetTargetExtension(partType);
282+
OpenXmlPackage.PartExtensionProvider.MakeSurePartExtensionExist(contentType, partExtension);
283+
return AddEmbeddedObjectPart(contentType, id);
284+
}
285+
286+
/// <summary>
287+
/// Adds a EmbeddedObjectPart to the FooterPart
288+
/// </summary>
289+
/// <param name="partType">The part type of the EmbeddedObjectPart</param>
290+
/// <return>The newly added part</return>
291+
public EmbeddedObjectPart AddEmbeddedObjectPart(EmbeddedObjectPartType partType)
292+
{
293+
var contentType = EmbeddedObjectPartTypeInfo.GetContentType(partType);
294+
var partExtension = EmbeddedObjectPartTypeInfo.GetTargetExtension(partType);
295+
OpenXmlPackage.PartExtensionProvider.MakeSurePartExtensionExist(contentType, partExtension);
296+
return AddEmbeddedObjectPart(contentType);
297+
}
298+
259299
/// <summary>
260300
/// Adds a EmbeddedPackagePart to the FooterPart
261301
/// </summary>
@@ -268,6 +308,46 @@ public EmbeddedPackagePart AddEmbeddedPackagePart(string contentType)
268308
return childPart;
269309
}
270310

311+
/// <summary>
312+
/// Adds a EmbeddedPackagePart to the FooterPart
313+
/// </summary>
314+
/// <param name="contentType">The content type of the EmbeddedPackagePart</param>
315+
/// <param name="id">The relationship id</param>
316+
/// <return>The newly added part</return>
317+
public EmbeddedPackagePart AddEmbeddedPackagePart(string contentType, string id)
318+
{
319+
var childPart = new EmbeddedPackagePart();
320+
InitPart(childPart, contentType, id);
321+
return childPart;
322+
}
323+
324+
/// <summary>
325+
/// Adds a EmbeddedPackagePart to the FooterPart
326+
/// </summary>
327+
/// <param name="partType">The part type of the EmbeddedPackagePart</param>
328+
/// <param name="id">The relationship id</param>
329+
/// <return>The newly added part</return>
330+
public EmbeddedPackagePart AddEmbeddedPackagePart(EmbeddedPackagePartType partType, string id)
331+
{
332+
var contentType = EmbeddedPackagePartTypeInfo.GetContentType(partType);
333+
var partExtension = EmbeddedPackagePartTypeInfo.GetTargetExtension(partType);
334+
OpenXmlPackage.PartExtensionProvider.MakeSurePartExtensionExist(contentType, partExtension);
335+
return AddEmbeddedPackagePart(contentType, id);
336+
}
337+
338+
/// <summary>
339+
/// Adds a EmbeddedPackagePart to the FooterPart
340+
/// </summary>
341+
/// <param name="partType">The part type of the EmbeddedPackagePart</param>
342+
/// <return>The newly added part</return>
343+
public EmbeddedPackagePart AddEmbeddedPackagePart(EmbeddedPackagePartType partType)
344+
{
345+
var contentType = EmbeddedPackagePartTypeInfo.GetContentType(partType);
346+
var partExtension = EmbeddedPackagePartTypeInfo.GetTargetExtension(partType);
347+
OpenXmlPackage.PartExtensionProvider.MakeSurePartExtensionExist(contentType, partExtension);
348+
return AddEmbeddedPackagePart(contentType);
349+
}
350+
271351
/// <summary>
272352
/// Adds a ImagePart to the FooterPart
273353
/// </summary>

0 commit comments

Comments
 (0)