Skip to content

Commit a698c1b

Browse files
feat: add xml serialization support (#9657)
This PR adds the initial xml serialization methods for models. fixes: #5662 contributes to: #5645
1 parent 942d808 commit a698c1b

File tree

337 files changed

+5116
-1618
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

337 files changed

+5116
-1618
lines changed

docs/samples/client/csharp/SampleService/SampleClient/src/Generated/AnimalOperations.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,27 @@ internal AnimalOperations(ClientPipeline pipeline, Uri endpoint)
2929
Pipeline = pipeline;
3030
}
3131

32+
/// <summary> Initializes a new instance of AnimalOperations. </summary>
33+
/// <param name="endpoint"> Service endpoint. </param>
34+
/// <exception cref="ArgumentNullException"> <paramref name="endpoint"/> is null. </exception>
35+
public AnimalOperations(Uri endpoint) : this(endpoint, new SampleTypeSpecClientOptions())
36+
{
37+
}
38+
39+
/// <summary> Initializes a new instance of AnimalOperations. </summary>
40+
/// <param name="endpoint"> Service endpoint. </param>
41+
/// <param name="options"> The options for configuring the client. </param>
42+
/// <exception cref="ArgumentNullException"> <paramref name="endpoint"/> is null. </exception>
43+
public AnimalOperations(Uri endpoint, SampleTypeSpecClientOptions options)
44+
{
45+
Argument.AssertNotNull(endpoint, nameof(endpoint));
46+
47+
options ??= new SampleTypeSpecClientOptions();
48+
49+
_endpoint = endpoint;
50+
Pipeline = ClientPipeline.Create(options, Array.Empty<PipelinePolicy>(), new PipelinePolicy[] { new UserAgentPolicy(typeof(AnimalOperations).Assembly) }, Array.Empty<PipelinePolicy>());
51+
}
52+
3253
/// <summary> The HTTP pipeline for sending and receiving REST requests and responses. </summary>
3354
public ClientPipeline Pipeline { get; }
3455

docs/samples/client/csharp/SampleService/SampleClient/src/Generated/DogOperations.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,27 @@ internal DogOperations(ClientPipeline pipeline, Uri endpoint)
2929
Pipeline = pipeline;
3030
}
3131

32+
/// <summary> Initializes a new instance of DogOperations. </summary>
33+
/// <param name="endpoint"> Service endpoint. </param>
34+
/// <exception cref="ArgumentNullException"> <paramref name="endpoint"/> is null. </exception>
35+
public DogOperations(Uri endpoint) : this(endpoint, new SampleTypeSpecClientOptions())
36+
{
37+
}
38+
39+
/// <summary> Initializes a new instance of DogOperations. </summary>
40+
/// <param name="endpoint"> Service endpoint. </param>
41+
/// <param name="options"> The options for configuring the client. </param>
42+
/// <exception cref="ArgumentNullException"> <paramref name="endpoint"/> is null. </exception>
43+
public DogOperations(Uri endpoint, SampleTypeSpecClientOptions options)
44+
{
45+
Argument.AssertNotNull(endpoint, nameof(endpoint));
46+
47+
options ??= new SampleTypeSpecClientOptions();
48+
49+
_endpoint = endpoint;
50+
Pipeline = ClientPipeline.Create(options, Array.Empty<PipelinePolicy>(), new PipelinePolicy[] { new UserAgentPolicy(typeof(DogOperations).Assembly) }, Array.Empty<PipelinePolicy>());
51+
}
52+
3253
/// <summary> The HTTP pipeline for sending and receiving REST requests and responses. </summary>
3354
public ClientPipeline Pipeline { get; }
3455

docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/XmlAdvancedModel.Serialization.cs

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@ internal static XmlAdvancedModel DeserializeXmlAdvancedModel(XElement element, M
9999
XmlNestedModel anotherModel = default;
100100
IList<XmlModelWithNamespace> modelsWithNamespaces = default;
101101
IList<XmlModelWithNamespace> unwrappedModelsWithNamespaces = default;
102+
IList<IList<XmlItem>> listOfListFoo = default;
103+
IDictionary<string, XmlItem> dictionaryFoo = default;
104+
IDictionary<string, IDictionary<string, XmlItem>> dictionaryOfDictionaryFoo = default;
105+
IDictionary<string, IList<XmlItem>> dictionaryListFoo = default;
106+
IList<IDictionary<string, XmlItem>> listOfDictionaryFoo = default;
102107
IDictionary<string, BinaryData> additionalBinaryDataProperties = new ChangeTrackingDictionary<string, BinaryData>();
103108

104109
foreach (var attr in element.Attributes())
@@ -329,6 +334,76 @@ internal static XmlAdvancedModel DeserializeXmlAdvancedModel(XElement element, M
329334
unwrappedModelsWithNamespaces.Add(XmlModelWithNamespace.DeserializeXmlModelWithNamespace(child, options));
330335
continue;
331336
}
337+
if (localName == "listOfListFoo")
338+
{
339+
List<IList<XmlItem>> array = new List<IList<XmlItem>>();
340+
foreach (var e in child.Elements("Array"))
341+
{
342+
List<XmlItem> list = new List<XmlItem>();
343+
foreach (var item in e.Elements())
344+
{
345+
list.Add(XmlItem.DeserializeXmlItem(item, options));
346+
}
347+
array.Add(list);
348+
}
349+
listOfListFoo = array;
350+
continue;
351+
}
352+
if (localName == "dictionaryFoo")
353+
{
354+
Dictionary<string, XmlItem> dictionary = new Dictionary<string, XmlItem>();
355+
foreach (var e in child.Elements())
356+
{
357+
dictionary.Add(e.Name.LocalName, XmlItem.DeserializeXmlItem(e, options));
358+
}
359+
dictionaryFoo = dictionary;
360+
continue;
361+
}
362+
if (localName == "dictionaryOfDictionaryFoo")
363+
{
364+
Dictionary<string, IDictionary<string, XmlItem>> dictionary = new Dictionary<string, IDictionary<string, XmlItem>>();
365+
foreach (var e in child.Elements())
366+
{
367+
Dictionary<string, XmlItem> dict = new Dictionary<string, XmlItem>();
368+
foreach (var item in e.Elements())
369+
{
370+
dict.Add(item.Name.LocalName, XmlItem.DeserializeXmlItem(item, options));
371+
}
372+
dictionary.Add(e.Name.LocalName, dict);
373+
}
374+
dictionaryOfDictionaryFoo = dictionary;
375+
continue;
376+
}
377+
if (localName == "dictionaryListFoo")
378+
{
379+
Dictionary<string, IList<XmlItem>> dictionary = new Dictionary<string, IList<XmlItem>>();
380+
foreach (var e in child.Elements())
381+
{
382+
List<XmlItem> list = new List<XmlItem>();
383+
foreach (var item in e.Elements())
384+
{
385+
list.Add(XmlItem.DeserializeXmlItem(item, options));
386+
}
387+
dictionary.Add(e.Name.LocalName, list);
388+
}
389+
dictionaryListFoo = dictionary;
390+
continue;
391+
}
392+
if (localName == "listOfDictionaryFoo")
393+
{
394+
List<IDictionary<string, XmlItem>> array = new List<IDictionary<string, XmlItem>>();
395+
foreach (var e in child.Elements("Record"))
396+
{
397+
Dictionary<string, XmlItem> dict = new Dictionary<string, XmlItem>();
398+
foreach (var item in e.Elements())
399+
{
400+
dict.Add(item.Name.LocalName, XmlItem.DeserializeXmlItem(item, options));
401+
}
402+
array.Add(dict);
403+
}
404+
listOfDictionaryFoo = array;
405+
continue;
406+
}
332407
}
333408
content = element.Value;
334409

@@ -368,6 +443,11 @@ internal static XmlAdvancedModel DeserializeXmlAdvancedModel(XElement element, M
368443
anotherModel,
369444
modelsWithNamespaces,
370445
unwrappedModelsWithNamespaces,
446+
listOfListFoo,
447+
dictionaryFoo,
448+
dictionaryOfDictionaryFoo,
449+
dictionaryListFoo,
450+
listOfDictionaryFoo,
371451
additionalBinaryDataProperties);
372452
}
373453
}

docs/samples/client/csharp/SampleService/SampleClient/src/Generated/Models/XmlAdvancedModel.cs

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,12 @@ public partial class XmlAdvancedModel
4545
/// <param name="anotherModel"></param>
4646
/// <param name="modelsWithNamespaces"></param>
4747
/// <param name="unwrappedModelsWithNamespaces"></param>
48-
internal XmlAdvancedModel(string name, int age, bool enabled, float score, string nullableString, string id, int version, bool isActive, string originalName, string xmlIdentifier, string content, IEnumerable<string> unwrappedStrings, IEnumerable<int> unwrappedCounts, IEnumerable<XmlItem> unwrappedItems, IEnumerable<string> wrappedColors, IEnumerable<XmlItem> items, XmlNestedModel nestedModel, IDictionary<string, string> metadata, DateTimeOffset createdAt, TimeSpan duration, BinaryData data, StringFixedEnum fixedEnum, StringExtensibleEnum extensibleEnum, string label, int daysUsed, IEnumerable<string> fooItems, XmlNestedModel anotherModel, IEnumerable<XmlModelWithNamespace> modelsWithNamespaces, IEnumerable<XmlModelWithNamespace> unwrappedModelsWithNamespaces)
48+
/// <param name="listOfListFoo"></param>
49+
/// <param name="dictionaryFoo"></param>
50+
/// <param name="dictionaryOfDictionaryFoo"></param>
51+
/// <param name="dictionaryListFoo"></param>
52+
/// <param name="listOfDictionaryFoo"></param>
53+
internal XmlAdvancedModel(string name, int age, bool enabled, float score, string nullableString, string id, int version, bool isActive, string originalName, string xmlIdentifier, string content, IEnumerable<string> unwrappedStrings, IEnumerable<int> unwrappedCounts, IEnumerable<XmlItem> unwrappedItems, IEnumerable<string> wrappedColors, IEnumerable<XmlItem> items, XmlNestedModel nestedModel, IDictionary<string, string> metadata, DateTimeOffset createdAt, TimeSpan duration, BinaryData data, StringFixedEnum fixedEnum, StringExtensibleEnum extensibleEnum, string label, int daysUsed, IEnumerable<string> fooItems, XmlNestedModel anotherModel, IEnumerable<XmlModelWithNamespace> modelsWithNamespaces, IEnumerable<XmlModelWithNamespace> unwrappedModelsWithNamespaces, IEnumerable<IList<XmlItem>> listOfListFoo, IDictionary<string, XmlItem> dictionaryFoo, IDictionary<string, IDictionary<string, XmlItem>> dictionaryOfDictionaryFoo, IDictionary<string, IList<XmlItem>> dictionaryListFoo, IEnumerable<IDictionary<string, XmlItem>> listOfDictionaryFoo)
4954
{
5055
Name = name;
5156
Age = age;
@@ -77,6 +82,11 @@ internal XmlAdvancedModel(string name, int age, bool enabled, float score, strin
7782
AnotherModel = anotherModel;
7883
ModelsWithNamespaces = modelsWithNamespaces.ToList();
7984
UnwrappedModelsWithNamespaces = unwrappedModelsWithNamespaces.ToList();
85+
ListOfListFoo = listOfListFoo.ToList();
86+
DictionaryFoo = dictionaryFoo;
87+
DictionaryOfDictionaryFoo = dictionaryOfDictionaryFoo;
88+
DictionaryListFoo = dictionaryListFoo;
89+
ListOfDictionaryFoo = listOfDictionaryFoo.ToList();
8090
}
8191

8292
/// <summary> Initializes a new instance of <see cref="XmlAdvancedModel"/>. </summary>
@@ -115,8 +125,13 @@ internal XmlAdvancedModel(string name, int age, bool enabled, float score, strin
115125
/// <param name="anotherModel"></param>
116126
/// <param name="modelsWithNamespaces"></param>
117127
/// <param name="unwrappedModelsWithNamespaces"></param>
128+
/// <param name="listOfListFoo"></param>
129+
/// <param name="dictionaryFoo"></param>
130+
/// <param name="dictionaryOfDictionaryFoo"></param>
131+
/// <param name="dictionaryListFoo"></param>
132+
/// <param name="listOfDictionaryFoo"></param>
118133
/// <param name="additionalBinaryDataProperties"> Keeps track of any properties unknown to the library. </param>
119-
internal XmlAdvancedModel(string name, int age, bool enabled, float score, string optionalString, int? optionalInt, string nullableString, string id, int version, bool isActive, string originalName, string xmlIdentifier, string content, IList<string> unwrappedStrings, IList<int> unwrappedCounts, IList<XmlItem> unwrappedItems, IList<string> wrappedColors, IList<XmlItem> items, XmlNestedModel nestedModel, XmlNestedModel optionalNestedModel, IDictionary<string, string> metadata, DateTimeOffset createdAt, TimeSpan duration, BinaryData data, IDictionary<string, BinaryData> optionalRecordUnknown, StringFixedEnum fixedEnum, StringExtensibleEnum extensibleEnum, IntFixedEnum? optionalFixedEnum, IntExtensibleEnum? optionalExtensibleEnum, string label, int daysUsed, IList<string> fooItems, XmlNestedModel anotherModel, IList<XmlModelWithNamespace> modelsWithNamespaces, IList<XmlModelWithNamespace> unwrappedModelsWithNamespaces, IDictionary<string, BinaryData> additionalBinaryDataProperties)
134+
internal XmlAdvancedModel(string name, int age, bool enabled, float score, string optionalString, int? optionalInt, string nullableString, string id, int version, bool isActive, string originalName, string xmlIdentifier, string content, IList<string> unwrappedStrings, IList<int> unwrappedCounts, IList<XmlItem> unwrappedItems, IList<string> wrappedColors, IList<XmlItem> items, XmlNestedModel nestedModel, XmlNestedModel optionalNestedModel, IDictionary<string, string> metadata, DateTimeOffset createdAt, TimeSpan duration, BinaryData data, IDictionary<string, BinaryData> optionalRecordUnknown, StringFixedEnum fixedEnum, StringExtensibleEnum extensibleEnum, IntFixedEnum? optionalFixedEnum, IntExtensibleEnum? optionalExtensibleEnum, string label, int daysUsed, IList<string> fooItems, XmlNestedModel anotherModel, IList<XmlModelWithNamespace> modelsWithNamespaces, IList<XmlModelWithNamespace> unwrappedModelsWithNamespaces, IList<IList<XmlItem>> listOfListFoo, IDictionary<string, XmlItem> dictionaryFoo, IDictionary<string, IDictionary<string, XmlItem>> dictionaryOfDictionaryFoo, IDictionary<string, IList<XmlItem>> dictionaryListFoo, IList<IDictionary<string, XmlItem>> listOfDictionaryFoo, IDictionary<string, BinaryData> additionalBinaryDataProperties)
120135
{
121136
Name = name;
122137
Age = age;
@@ -153,6 +168,11 @@ internal XmlAdvancedModel(string name, int age, bool enabled, float score, strin
153168
AnotherModel = anotherModel;
154169
ModelsWithNamespaces = modelsWithNamespaces;
155170
UnwrappedModelsWithNamespaces = unwrappedModelsWithNamespaces;
171+
ListOfListFoo = listOfListFoo;
172+
DictionaryFoo = dictionaryFoo;
173+
DictionaryOfDictionaryFoo = dictionaryOfDictionaryFoo;
174+
DictionaryListFoo = dictionaryListFoo;
175+
ListOfDictionaryFoo = listOfDictionaryFoo;
156176
_additionalBinaryDataProperties = additionalBinaryDataProperties;
157177
}
158178

@@ -300,5 +320,20 @@ internal XmlAdvancedModel(string name, int age, bool enabled, float score, strin
300320

301321
/// <summary> Gets the UnwrappedModelsWithNamespaces. </summary>
302322
public IList<XmlModelWithNamespace> UnwrappedModelsWithNamespaces { get; }
323+
324+
/// <summary> Gets the ListOfListFoo. </summary>
325+
public IList<IList<XmlItem>> ListOfListFoo { get; }
326+
327+
/// <summary> Gets the DictionaryFoo. </summary>
328+
public IDictionary<string, XmlItem> DictionaryFoo { get; }
329+
330+
/// <summary> Gets the DictionaryOfDictionaryFoo. </summary>
331+
public IDictionary<string, IDictionary<string, XmlItem>> DictionaryOfDictionaryFoo { get; }
332+
333+
/// <summary> Gets the DictionaryListFoo. </summary>
334+
public IDictionary<string, IList<XmlItem>> DictionaryListFoo { get; }
335+
336+
/// <summary> Gets the ListOfDictionaryFoo. </summary>
337+
public IList<IDictionary<string, XmlItem>> ListOfDictionaryFoo { get; }
303338
}
304339
}

docs/samples/client/csharp/SampleService/SampleClient/src/Generated/PetOperations.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,27 @@ internal PetOperations(ClientPipeline pipeline, Uri endpoint)
2929
Pipeline = pipeline;
3030
}
3131

32+
/// <summary> Initializes a new instance of PetOperations. </summary>
33+
/// <param name="endpoint"> Service endpoint. </param>
34+
/// <exception cref="ArgumentNullException"> <paramref name="endpoint"/> is null. </exception>
35+
public PetOperations(Uri endpoint) : this(endpoint, new SampleTypeSpecClientOptions())
36+
{
37+
}
38+
39+
/// <summary> Initializes a new instance of PetOperations. </summary>
40+
/// <param name="endpoint"> Service endpoint. </param>
41+
/// <param name="options"> The options for configuring the client. </param>
42+
/// <exception cref="ArgumentNullException"> <paramref name="endpoint"/> is null. </exception>
43+
public PetOperations(Uri endpoint, SampleTypeSpecClientOptions options)
44+
{
45+
Argument.AssertNotNull(endpoint, nameof(endpoint));
46+
47+
options ??= new SampleTypeSpecClientOptions();
48+
49+
_endpoint = endpoint;
50+
Pipeline = ClientPipeline.Create(options, Array.Empty<PipelinePolicy>(), new PipelinePolicy[] { new UserAgentPolicy(typeof(PetOperations).Assembly) }, Array.Empty<PipelinePolicy>());
51+
}
52+
3253
/// <summary> The HTTP pipeline for sending and receiving REST requests and responses. </summary>
3354
public ClientPipeline Pipeline { get; }
3455

docs/samples/client/csharp/SampleService/SampleClient/src/Generated/PlantOperations.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,27 @@ internal PlantOperations(ClientPipeline pipeline, Uri endpoint)
2929
Pipeline = pipeline;
3030
}
3131

32+
/// <summary> Initializes a new instance of PlantOperations. </summary>
33+
/// <param name="endpoint"> Service endpoint. </param>
34+
/// <exception cref="ArgumentNullException"> <paramref name="endpoint"/> is null. </exception>
35+
public PlantOperations(Uri endpoint) : this(endpoint, new SampleTypeSpecClientOptions())
36+
{
37+
}
38+
39+
/// <summary> Initializes a new instance of PlantOperations. </summary>
40+
/// <param name="endpoint"> Service endpoint. </param>
41+
/// <param name="options"> The options for configuring the client. </param>
42+
/// <exception cref="ArgumentNullException"> <paramref name="endpoint"/> is null. </exception>
43+
public PlantOperations(Uri endpoint, SampleTypeSpecClientOptions options)
44+
{
45+
Argument.AssertNotNull(endpoint, nameof(endpoint));
46+
47+
options ??= new SampleTypeSpecClientOptions();
48+
49+
_endpoint = endpoint;
50+
Pipeline = ClientPipeline.Create(options, Array.Empty<PipelinePolicy>(), new PipelinePolicy[] { new UserAgentPolicy(typeof(PlantOperations).Assembly) }, Array.Empty<PipelinePolicy>());
51+
}
52+
3253
/// <summary> The HTTP pipeline for sending and receiving REST requests and responses. </summary>
3354
public ClientPipeline Pipeline { get; }
3455

docs/samples/client/csharp/SampleService/SampleClient/src/Generated/SampleTypeSpecClient.RestClient.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,10 @@ internal PipelineMessage CreateWithApiVersionRequest(string p1, RequestOptions o
270270
ClientUriBuilder uri = new ClientUriBuilder();
271271
uri.Reset(_endpoint);
272272
uri.AppendPath("/WithApiVersion", false);
273-
uri.AppendQuery("apiVersion", _apiVersion, true);
273+
if (_apiVersion != null)
274+
{
275+
uri.AppendQuery("apiVersion", _apiVersion, true);
276+
}
274277
PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "GET", PipelineMessageClassifier204);
275278
PipelineRequest request = message.Request;
276279
request.Headers.Set("p1", p1);

0 commit comments

Comments
 (0)