Skip to content

Commit 5ac0c06

Browse files
committed
First test passing
1 parent 6d2faf9 commit 5ac0c06

File tree

11 files changed

+42
-7
lines changed

11 files changed

+42
-7
lines changed

src/MongoDB.Bson/IO/BsonBinaryWriterSettings.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
using System;
1717
using System.Text;
18+
using MongoDB.Bson.Serialization;
1819

1920
namespace MongoDB.Bson.IO
2021
{
@@ -122,7 +123,8 @@ protected override BsonWriterSettings CloneImplementation()
122123
Encoding = _encoding,
123124
FixOldBinarySubTypeOnOutput = _fixOldBinarySubTypeOnOutput,
124125
MaxDocumentSize = _maxDocumentSize,
125-
MaxSerializationDepth = MaxSerializationDepth
126+
MaxSerializationDepth = MaxSerializationDepth,
127+
SerializationDomain = SerializationDomain,
126128
};
127129
return clone;
128130
}

src/MongoDB.Bson/IO/BsonWriterSettings.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
*/
1515

1616
using System;
17+
using MongoDB.Bson.Serialization;
1718

1819
namespace MongoDB.Bson.IO
1920
{
@@ -25,6 +26,7 @@ public abstract class BsonWriterSettings
2526
// private fields
2627
private bool _isFrozen;
2728
private int _maxSerializationDepth = BsonDefaults.MaxSerializationDepth;
29+
private IBsonSerializationDomain _serializationDomain;
2830

2931
// constructors
3032
/// <summary>
@@ -92,6 +94,19 @@ public BsonWriterSettings FrozenCopy()
9294
}
9395
}
9496

97+
/// <summary>
98+
/// //TODO
99+
/// </summary>
100+
public IBsonSerializationDomain SerializationDomain
101+
{
102+
get => _serializationDomain;
103+
set
104+
{
105+
if (_isFrozen) { ThrowFrozenException(); }
106+
_serializationDomain = value;
107+
}
108+
}
109+
95110
// protected methods
96111
/// <summary>
97112
/// Creates a clone of the settings.

src/MongoDB.Bson/Serialization/BsonDeserializationContext.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ private BsonDeserializationContext(
4444
_allowDuplicateElementNames = allowDuplicateElementNames;
4545
_dynamicArraySerializer = dynamicArraySerializer;
4646
_dynamicDocumentSerializer = dynamicDocumentSerializer;
47-
_domain = domain ?? BsonSerializer.DefaultDomain;
47+
_domain = domain;
48+
//_domain = domain ?? BsonSerializer.DefaultDomain; //TODO This is to simplify finding errors
4849
}
4950

5051
// public properties

src/MongoDB.Bson/Serialization/BsonMemberMap.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,7 @@ public IBsonSerializer GetSerializer(IBsonSerializationDomain domain)
336336
}
337337
else
338338
{
339-
_serializer = BsonSerializer.LookupSerializer(_memberType); //TODO ??
339+
_serializer = domain.LookupSerializer(_memberType);
340340
}
341341
}
342342
return _serializer;

src/MongoDB.Bson/Serialization/BsonSerializationContext.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ private BsonSerializationContext(
3636
{
3737
_writer = writer;
3838
_isDynamicType = isDynamicType;
39-
_domain = domain ?? BsonSerializer.DefaultDomain;
39+
_domain = writer.Settings.SerializationDomain ?? BsonSerializer.DefaultDomain; //TODO This is to simplify finding errors
4040
}
4141

4242
// public properties
@@ -114,7 +114,7 @@ public class Builder
114114
// private fields
115115
private Func<Type, bool> _isDynamicType;
116116
private IBsonWriter _writer;
117-
private IBsonSerializationDomain _domain;
117+
private IBsonSerializationDomain _domain; //TODO Maybe we can remove this...
118118

119119
// constructors
120120
internal Builder(BsonSerializationContext other, IBsonWriter writer)

src/MongoDB.Bson/Serialization/BsonSerializationDomain.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,15 @@ internal class BsonSerializationDomain : IBsonSerializationDomainInternal, IDisp
4242
private bool __useZeroIdChecker = false;
4343

4444
// constructor
45-
public BsonSerializationDomain()
45+
public BsonSerializationDomain(string name = null) //TODO for testing
4646
{
4747
CreateSerializerRegistry();
4848
RegisterIdGenerators();
49+
Name = name ?? "CUSTOM";
4950
}
5051

52+
public string Name { get; private set; }
53+
5154
// public properties
5255
/// <summary>
5356
/// Gets the serializer registry.

src/MongoDB.Bson/Serialization/BsonSerializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public static class BsonSerializer
3131
// static constructor
3232
static BsonSerializer()
3333
{
34-
_domain = new BsonSerializationDomain();
34+
_domain = new BsonSerializationDomain("MAIN");
3535
}
3636

3737
/// <summary>

src/MongoDB.Driver/Core/WireProtocol/Messages/Encoders/BinaryEncoders/MessageBinaryEncoderBase.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
using System.Text;
1818
using MongoDB.Bson;
1919
using MongoDB.Bson.IO;
20+
using MongoDB.Bson.Serialization;
2021
using MongoDB.Driver.Core.Misc;
2122

2223
namespace MongoDB.Driver.Core.WireProtocol.Messages.Encoders.BinaryEncoders
@@ -82,6 +83,10 @@ protected int? MaxWireDocumentSize
8283
}
8384
}
8485

86+
protected IBsonSerializationDomain SerializationDomain =>
87+
_encoderSettings.GetOrDefault<IBsonSerializationDomain>(MessageEncoderSettingsName.SerializationDomain,
88+
null);
89+
8590
// methods
8691
public BsonBinaryReader CreateBinaryReader()
8792
{
@@ -102,6 +107,8 @@ public BsonBinaryWriter CreateBinaryWriter()
102107
writerSettings.Encoding = _encoderSettings.GetOrDefault(MessageEncoderSettingsName.WriteEncoding, writerSettings.Encoding);
103108
writerSettings.MaxDocumentSize = _encoderSettings.GetOrDefault(MessageEncoderSettingsName.MaxDocumentSize, writerSettings.MaxDocumentSize);
104109
writerSettings.MaxSerializationDepth = _encoderSettings.GetOrDefault(MessageEncoderSettingsName.MaxSerializationDepth, writerSettings.MaxSerializationDepth);
110+
writerSettings.SerializationDomain =
111+
_encoderSettings.GetOrDefault<IBsonSerializationDomain>(MessageEncoderSettingsName.SerializationDomain, null); //TODO Using null here to find issues faster
105112
}
106113
return new BsonBinaryWriter(_stream, writerSettings);
107114
}

src/MongoDB.Driver/Core/WireProtocol/Messages/Encoders/JsonEncoders/MessageJsonEncoderBase.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
using System.IO;
1818
using MongoDB.Bson;
1919
using MongoDB.Bson.IO;
20+
using MongoDB.Bson.Serialization;
2021
using MongoDB.Driver.Core.Misc;
2122

2223
namespace MongoDB.Driver.Core.WireProtocol.Messages.Encoders.JsonEncoders
@@ -37,6 +38,10 @@ protected MessageJsonEncoderBase(TextReader textReader, TextWriter textWriter, M
3738
_encoderSettings = encoderSettings;
3839
}
3940

41+
protected IBsonSerializationDomain SerializationDomain =>
42+
_encoderSettings.GetOrDefault<IBsonSerializationDomain>(MessageEncoderSettingsName.SerializationDomain,
43+
null);
44+
4045
// methods
4146
public JsonReader CreateJsonReader()
4247
{

src/MongoDB.Driver/MongoClientSettings.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -945,6 +945,7 @@ public MongoClientSettings Clone()
945945
clone._retryReads = _retryReads;
946946
clone._retryWrites = _retryWrites;
947947
clone._scheme = _scheme;
948+
clone._serializationDomain = _serializationDomain;
948949
clone._serverApi = _serverApi;
949950
clone._servers = new List<MongoServerAddress>(_servers);
950951
clone._serverMonitoringMode = _serverMonitoringMode;

0 commit comments

Comments
 (0)