Browse Source

Merge branch 'master' into orleans3

pull/249/head
Sebastian Stehle 9 years ago
parent
commit
cf612b6231
  1. 35
      src/Squidex.Infrastructure.MongoDb/MongoDb/BsonJsonSerializer.cs
  2. 33
      src/Squidex.Infrastructure.MongoDb/MongoDb/JTokenSerializer.cs

35
src/Squidex.Infrastructure.MongoDb/MongoDb/BsonJsonSerializer.cs

@ -5,6 +5,7 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
using MongoDB.Bson;
using MongoDB.Bson.Serialization;
using MongoDB.Bson.Serialization.Serializers;
using Newtonsoft.Json;
@ -22,18 +23,38 @@ namespace Squidex.Infrastructure.MongoDb
this.serializer = serializer;
}
protected override T DeserializeValue(BsonDeserializationContext context, BsonDeserializationArgs args)
public override T Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
{
var jsonReader = new BsonJsonReader(context.Reader);
var bsonReader = context.Reader;
return serializer.Deserialize<T>(jsonReader);
if (bsonReader.GetCurrentBsonType() == BsonType.Null)
{
bsonReader.ReadNull();
return null;
}
else
{
var jsonReader = new BsonJsonReader(bsonReader);
return serializer.Deserialize<T>(jsonReader);
}
}
protected override void SerializeValue(BsonSerializationContext context, BsonSerializationArgs args, T value)
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, T value)
{
var jsonWriter = new BsonJsonWriter(context.Writer);
serializer.Serialize(jsonWriter, value);
var bsonWriter = context.Writer;
if (value == null)
{
bsonWriter.WriteNull();
}
else
{
var jsonWriter = new BsonJsonWriter(bsonWriter);
serializer.Serialize(jsonWriter, value);
}
}
}
}

33
src/Squidex.Infrastructure.MongoDb/MongoDb/JTokenSerializer.cs

@ -5,6 +5,7 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
using MongoDB.Bson;
using MongoDB.Bson.Serialization;
using MongoDB.Bson.Serialization.Serializers;
using Newtonsoft.Json.Linq;
@ -15,18 +16,38 @@ namespace Squidex.Infrastructure.MongoDb
{
public static readonly JTokenSerializer<T> Instance = new JTokenSerializer<T>();
protected override T DeserializeValue(BsonDeserializationContext context, BsonDeserializationArgs args)
public override T Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
{
var jsonReader = new BsonJsonReader(context.Reader);
var bsonReader = context.Reader;
return (T)JToken.ReadFrom(jsonReader);
if (bsonReader.GetCurrentBsonType() == BsonType.Null)
{
bsonReader.ReadNull();
return null;
}
else
{
var jsonReader = new BsonJsonReader(bsonReader);
return (T)JToken.ReadFrom(jsonReader);
}
}
protected override void SerializeValue(BsonSerializationContext context, BsonSerializationArgs args, T value)
public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, T value)
{
var jsonWriter = new BsonJsonWriter(context.Writer);
var bsonWriter = context.Writer;
if (value == null)
{
bsonWriter.WriteNull();
}
else
{
var jsonWriter = new BsonJsonWriter(bsonWriter);
value.WriteTo(jsonWriter);
value.WriteTo(jsonWriter);
}
}
}
}

Loading…
Cancel
Save