Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions sdk/core/Azure.Core/api/Azure.Core.net461.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1133,7 +1133,8 @@ public enum JsonPropertyNames
}
public partial class ModelJsonConverter : System.Text.Json.Serialization.JsonConverter<Azure.Core.Serialization.IModelSerializable>
{
public ModelJsonConverter(string format = "D") { }
public ModelJsonConverter() { }
public ModelJsonConverter(Azure.Core.Serialization.ModelSerializerFormat format) { }
public Azure.Core.Serialization.ModelSerializerFormat Format { get { throw null; } }
public override bool CanConvert(System.Type typeToConvert) { throw null; }
public override Azure.Core.Serialization.IModelSerializable Read(ref System.Text.Json.Utf8JsonReader reader, System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) { throw null; }
Expand All @@ -1149,7 +1150,7 @@ public static partial class ModelSerializer
{
private readonly object _dummy;
private readonly int _dummyPrimitive;
public static readonly Azure.Core.Serialization.ModelSerializerFormat Data;
public static readonly Azure.Core.Serialization.ModelSerializerFormat Json;
public static readonly Azure.Core.Serialization.ModelSerializerFormat Wire;
public ModelSerializerFormat(string value) { throw null; }
public bool Equals(Azure.Core.Serialization.ModelSerializerFormat other) { throw null; }
Expand All @@ -1165,8 +1166,9 @@ public static partial class ModelSerializer
}
public partial class ModelSerializerOptions
{
public Azure.Core.Serialization.ModelSerializerFormat Format;
public ModelSerializerOptions(string format = "D") { }
public ModelSerializerOptions() { }
public ModelSerializerOptions(Azure.Core.Serialization.ModelSerializerFormat format) { }
public Azure.Core.Serialization.ModelSerializerFormat Format { get { throw null; } }
public System.Collections.Generic.Dictionary<System.Type, Azure.Core.Serialization.ObjectSerializer> Serializers { get { throw null; } }
}
public abstract partial class ObjectSerializer
Expand Down
10 changes: 6 additions & 4 deletions sdk/core/Azure.Core/api/Azure.Core.net5.0.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1133,7 +1133,8 @@ public enum JsonPropertyNames
}
public partial class ModelJsonConverter : System.Text.Json.Serialization.JsonConverter<Azure.Core.Serialization.IModelSerializable>
{
public ModelJsonConverter(string format = "D") { }
public ModelJsonConverter() { }
public ModelJsonConverter(Azure.Core.Serialization.ModelSerializerFormat format) { }
public Azure.Core.Serialization.ModelSerializerFormat Format { get { throw null; } }
public override bool CanConvert(System.Type typeToConvert) { throw null; }
public override Azure.Core.Serialization.IModelSerializable Read(ref System.Text.Json.Utf8JsonReader reader, System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) { throw null; }
Expand All @@ -1149,7 +1150,7 @@ public static partial class ModelSerializer
{
private readonly object _dummy;
private readonly int _dummyPrimitive;
public static readonly Azure.Core.Serialization.ModelSerializerFormat Data;
public static readonly Azure.Core.Serialization.ModelSerializerFormat Json;
public static readonly Azure.Core.Serialization.ModelSerializerFormat Wire;
public ModelSerializerFormat(string value) { throw null; }
public bool Equals(Azure.Core.Serialization.ModelSerializerFormat other) { throw null; }
Expand All @@ -1165,8 +1166,9 @@ public static partial class ModelSerializer
}
public partial class ModelSerializerOptions
{
public Azure.Core.Serialization.ModelSerializerFormat Format;
public ModelSerializerOptions(string format = "D") { }
public ModelSerializerOptions() { }
public ModelSerializerOptions(Azure.Core.Serialization.ModelSerializerFormat format) { }
public Azure.Core.Serialization.ModelSerializerFormat Format { get { throw null; } }
public System.Collections.Generic.Dictionary<System.Type, Azure.Core.Serialization.ObjectSerializer> Serializers { get { throw null; } }
}
public abstract partial class ObjectSerializer
Expand Down
10 changes: 6 additions & 4 deletions sdk/core/Azure.Core/api/Azure.Core.net6.0.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1133,7 +1133,8 @@ public enum JsonPropertyNames
}
public partial class ModelJsonConverter : System.Text.Json.Serialization.JsonConverter<Azure.Core.Serialization.IModelSerializable>
{
public ModelJsonConverter(string format = "D") { }
public ModelJsonConverter() { }
public ModelJsonConverter(Azure.Core.Serialization.ModelSerializerFormat format) { }
public Azure.Core.Serialization.ModelSerializerFormat Format { get { throw null; } }
public override bool CanConvert(System.Type typeToConvert) { throw null; }
public override Azure.Core.Serialization.IModelSerializable Read(ref System.Text.Json.Utf8JsonReader reader, System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) { throw null; }
Expand All @@ -1149,7 +1150,7 @@ public static partial class ModelSerializer
{
private readonly object _dummy;
private readonly int _dummyPrimitive;
public static readonly Azure.Core.Serialization.ModelSerializerFormat Data;
public static readonly Azure.Core.Serialization.ModelSerializerFormat Json;
public static readonly Azure.Core.Serialization.ModelSerializerFormat Wire;
public ModelSerializerFormat(string value) { throw null; }
public bool Equals(Azure.Core.Serialization.ModelSerializerFormat other) { throw null; }
Expand All @@ -1165,8 +1166,9 @@ public static partial class ModelSerializer
}
public partial class ModelSerializerOptions
{
public Azure.Core.Serialization.ModelSerializerFormat Format;
public ModelSerializerOptions(string format = "D") { }
public ModelSerializerOptions() { }
public ModelSerializerOptions(Azure.Core.Serialization.ModelSerializerFormat format) { }
public Azure.Core.Serialization.ModelSerializerFormat Format { get { throw null; } }
public System.Collections.Generic.Dictionary<System.Type, Azure.Core.Serialization.ObjectSerializer> Serializers { get { throw null; } }
}
public abstract partial class ObjectSerializer
Expand Down
10 changes: 6 additions & 4 deletions sdk/core/Azure.Core/api/Azure.Core.netcoreapp2.1.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1133,7 +1133,8 @@ public enum JsonPropertyNames
}
public partial class ModelJsonConverter : System.Text.Json.Serialization.JsonConverter<Azure.Core.Serialization.IModelSerializable>
{
public ModelJsonConverter(string format = "D") { }
public ModelJsonConverter() { }
public ModelJsonConverter(Azure.Core.Serialization.ModelSerializerFormat format) { }
public Azure.Core.Serialization.ModelSerializerFormat Format { get { throw null; } }
public override bool CanConvert(System.Type typeToConvert) { throw null; }
public override Azure.Core.Serialization.IModelSerializable Read(ref System.Text.Json.Utf8JsonReader reader, System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) { throw null; }
Expand All @@ -1149,7 +1150,7 @@ public static partial class ModelSerializer
{
private readonly object _dummy;
private readonly int _dummyPrimitive;
public static readonly Azure.Core.Serialization.ModelSerializerFormat Data;
public static readonly Azure.Core.Serialization.ModelSerializerFormat Json;
public static readonly Azure.Core.Serialization.ModelSerializerFormat Wire;
public ModelSerializerFormat(string value) { throw null; }
public bool Equals(Azure.Core.Serialization.ModelSerializerFormat other) { throw null; }
Expand All @@ -1165,8 +1166,9 @@ public static partial class ModelSerializer
}
public partial class ModelSerializerOptions
{
public Azure.Core.Serialization.ModelSerializerFormat Format;
public ModelSerializerOptions(string format = "D") { }
public ModelSerializerOptions() { }
public ModelSerializerOptions(Azure.Core.Serialization.ModelSerializerFormat format) { }
public Azure.Core.Serialization.ModelSerializerFormat Format { get { throw null; } }
public System.Collections.Generic.Dictionary<System.Type, Azure.Core.Serialization.ObjectSerializer> Serializers { get { throw null; } }
}
public abstract partial class ObjectSerializer
Expand Down
10 changes: 6 additions & 4 deletions sdk/core/Azure.Core/api/Azure.Core.netstandard2.0.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1133,7 +1133,8 @@ public enum JsonPropertyNames
}
public partial class ModelJsonConverter : System.Text.Json.Serialization.JsonConverter<Azure.Core.Serialization.IModelSerializable>
{
public ModelJsonConverter(string format = "D") { }
public ModelJsonConverter() { }
public ModelJsonConverter(Azure.Core.Serialization.ModelSerializerFormat format) { }
public Azure.Core.Serialization.ModelSerializerFormat Format { get { throw null; } }
public override bool CanConvert(System.Type typeToConvert) { throw null; }
public override Azure.Core.Serialization.IModelSerializable Read(ref System.Text.Json.Utf8JsonReader reader, System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) { throw null; }
Expand All @@ -1149,7 +1150,7 @@ public static partial class ModelSerializer
{
private readonly object _dummy;
private readonly int _dummyPrimitive;
public static readonly Azure.Core.Serialization.ModelSerializerFormat Data;
public static readonly Azure.Core.Serialization.ModelSerializerFormat Json;
public static readonly Azure.Core.Serialization.ModelSerializerFormat Wire;
public ModelSerializerFormat(string value) { throw null; }
public bool Equals(Azure.Core.Serialization.ModelSerializerFormat other) { throw null; }
Expand All @@ -1165,8 +1166,9 @@ public static partial class ModelSerializer
}
public partial class ModelSerializerOptions
{
public Azure.Core.Serialization.ModelSerializerFormat Format;
public ModelSerializerOptions(string format = "D") { }
public ModelSerializerOptions() { }
public ModelSerializerOptions(Azure.Core.Serialization.ModelSerializerFormat format) { }
public Azure.Core.Serialization.ModelSerializerFormat Format { get { throw null; } }
public System.Collections.Generic.Dictionary<System.Type, Azure.Core.Serialization.ObjectSerializer> Serializers { get { throw null; } }
}
public abstract partial class ObjectSerializer
Expand Down
11 changes: 9 additions & 2 deletions sdk/core/Azure.Core/src/Serialization/ModelJsonConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,16 @@ public class ModelJsonConverter : JsonConverter<IModelSerializable>
public ModelSerializerFormat Format { get; }

/// <summary>
/// String that determines Format of serialized model. "D" = data format which means both properties are false, "W" = wire format which means both properties are true Default is "D".
/// Initializes a new instance of <see cref="ModelJsonConverter"/> with a default format of <see cref="ModelSerializerFormat.Json"/>.
/// </summary>
public ModelJsonConverter(string format = "D")
public ModelJsonConverter()
: this(ModelSerializerFormat.Json) { }

/// <summary>
/// Initializes a new instance of <see cref="ModelJsonConverter"/>.
/// </summary>
/// <param name="format"> The format to serialize to and deserialize from. </param>
public ModelJsonConverter(ModelSerializerFormat format)
{
Format = format;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ namespace Azure.Core.Serialization
/// </summary>
public readonly partial struct ModelSerializerFormat : IEquatable<ModelSerializerFormat>
{
internal const string DataValue = "D";
internal const string JsonValue = "J";
internal const string WireValue = "W";

/// <summary>
/// Specifies the data format where IgnoreReadOnly and IgnoreAdditionalProperties are false.
/// </summary>
public static readonly ModelSerializerFormat Data = new ModelSerializerFormat(DataValue);
public static readonly ModelSerializerFormat Json = new ModelSerializerFormat(JsonValue);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will the doc string here make sense to most users of this API? Reading it without additional context, I'm not exactly sure what it means.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are address doc comments in a different PR, but yes these are not final


/// <summary>
/// Specifies the wire format IgnoreReadOnly and IgnoreAdditionalProperties are true.
Expand Down
28 changes: 12 additions & 16 deletions sdk/core/Azure.Core/src/Serialization/ModelSerializerOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,32 +12,28 @@ namespace Azure.Core.Serialization
public class ModelSerializerOptions
{
/// <summary>
/// Initializes a new instance of the <see cref="ModelSerializerOptions" /> class. Takes in a string that determines Format of serialized model. "D" = data format which means IgnoreReadOnly and IgnoreAdditionalProperties are false, "W" = wire format which means both properties are true. Default is "D".
/// Initializes a new instance of the <see cref="ModelSerializerOptions" /> class using a default for of <see cref="ModelSerializerFormat.Json"/>.
/// </summary>
/// <param name="format"></param>
public ModelSerializerOptions(string format = "D")
public ModelSerializerOptions()
: this(ModelSerializerFormat.JsonValue) { }

/// <summary>
/// Initializes a new instance of the <see cref="ModelSerializerOptions" /> class.
/// </summary>
/// <param name="format"> The format to serialize to and deserialize from. </param>
public ModelSerializerOptions(ModelSerializerFormat format)
{
//throw ArgumentException if not "D" or "W"
Format = ValidateFormat(format);
Format = format;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It still would be possible to pass a random value for format here - should we leave the validation in place?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

random value is by design so people who implement our interface can come up with their own formats. Each model will throw if it receives a format it doesn't understand.

}

/// <summary>
/// ModelSerializerFormat that determines Format of serialized model. "D" = data format which means IgnoreReadOnly and IgnoreAdditionalProperties are false, "W" = wire format which means both properties are true. Default is "D".
/// Gets the <see cref="ModelSerializerFormat"/> that determines Format of serialized model.
/// </summary>
public ModelSerializerFormat Format;
public ModelSerializerFormat Format { get; }

/// <summary>
/// Dictionary that holds all the serializers for the different model types.
/// </summary>
public Dictionary<Type, ObjectSerializer> Serializers { get; } = new Dictionary<Type, ObjectSerializer>();

private string ValidateFormat(string x)
{
if (x != ModelSerializerFormat.Data && x != ModelSerializerFormat.Wire)
{
throw new ArgumentException($"Format must be either '{ModelSerializerFormat.Data}' or '{ModelSerializerFormat.Wire}'.");
}
return x;
}
}
}
Loading