Skip to content

Commit

Permalink
Resolving merge issues with serialization settings
Browse files Browse the repository at this point in the history
  • Loading branch information
bowencode committed Apr 11, 2024
1 parent 2230c03 commit 447b058
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ public IEnumerable<string> GetFieldNames()
{
if (value is JObject element)
{
return new CosmosDictionaryDataItem(element.ToObject<IDictionary<string, object?>>(JsonSerializer.Create(RawJsonCosmosSerializer.DefaultSettings))
return new CosmosDictionaryDataItem(element.ToObject<IDictionary<string, object?>>(JsonSerializer.Create(RawJsonCosmosSerializer.GetDefaultSettings()))
.ToDictionary(k => k.Key, v => v.Value));
}
if (value is JArray array)
{
return array.ToObject<List<object?>>(JsonSerializer.Create(RawJsonCosmosSerializer.DefaultSettings))
return array.ToObject<List<object?>>(JsonSerializer.Create(RawJsonCosmosSerializer.GetDefaultSettings()))
.Select(GetChildObject).ToList();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,23 @@ public static CosmosClient CreateClient(CosmosSettingsBase settings, string disp
{
string userAgentString = CreateUserAgentString(displayName, sourceDisplayName);

var cosmosSerializer = new RawJsonCosmosSerializer();
if (settings is CosmosSinkSettings sinkSettings)
{
cosmosSerializer.SerializerSettings.NullValueHandling = sinkSettings.IgnoreNullValues
? Newtonsoft.Json.NullValueHandling.Ignore
: Newtonsoft.Json.NullValueHandling.Include;
}

var clientOptions = new CosmosClientOptions
{
ConnectionMode = settings.ConnectionMode,
ApplicationName = userAgentString,
AllowBulkExecution = true,
EnableContentResponseOnWrite = false,
Serializer = new RawJsonCosmosSerializer(),
Serializer = cosmosSerializer,
};

if (settings is CosmosSinkSettings sinkSettings)
{
clientOptions.SerializerOptions = new CosmosSerializationOptions
{
IgnoreNullValues = sinkSettings.IgnoreNullValues
};
}

CosmosClient? cosmosClient;
if (settings.UseRbacAuth)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,18 @@ namespace Cosmos.DataTransfer.CosmosExtension;
/// </remarks>
public class RawJsonCosmosSerializer : CosmosSerializer
{
public static readonly JsonSerializerSettings DefaultSettings = new()
{
DateParseHandling = DateParseHandling.None,
MetadataPropertyHandling = MetadataPropertyHandling.Ignore
};
private static readonly Encoding DefaultEncoding = new UTF8Encoding(false, true);

public static JsonSerializerSettings GetDefaultSettings() =>
new()
{
DateParseHandling = DateParseHandling.None,
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
ContractResolver = null,
MaxDepth = 64,
};

public JsonSerializerSettings SerializerSettings { get; set; } = DefaultSettings;
public JsonSerializerSettings SerializerSettings { get; } = GetDefaultSettings();

public override T FromStream<T>(Stream stream)
{
Expand All @@ -39,7 +44,7 @@ public override T FromStream<T>(Stream stream)
public override Stream ToStream<T>(T input)
{
var memoryStream = new MemoryStream();
using (var streamWriter = new StreamWriter(memoryStream, Encoding.UTF8, leaveOpen: true))
using (var streamWriter = new StreamWriter(memoryStream, DefaultEncoding, bufferSize: 1024, leaveOpen: true))
{
using (var jsonWriter = new JsonTextWriter(streamWriter))
{
Expand Down

0 comments on commit 447b058

Please sign in to comment.