Skip to content

Commit 6d2faf9

Browse files
committed
Various fixes
1 parent 402a889 commit 6d2faf9

File tree

7 files changed

+50
-28
lines changed

7 files changed

+50
-28
lines changed

src/MongoDB.Driver/Core/WireProtocol/Messages/Encoders/MessageEncoderSettings.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ internal static class MessageEncoderSettingsName
4141
public const string ShellVersion = nameof(ShellVersion);
4242

4343
// other encoders (if any) might use additional settings
44+
public const string SerializationDomain = nameof(SerializationDomain);
4445
}
4546

4647
internal sealed class MessageEncoderSettings : IEnumerable<KeyValuePair<string, object>>

src/MongoDB.Driver/IInheritableMongoClientSettings.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
using System;
1717
using System.Text;
1818
using MongoDB.Bson;
19+
using MongoDB.Bson.Serialization;
1920

2021
namespace MongoDB.Driver
2122
{
@@ -24,6 +25,7 @@ internal interface IInheritableMongoClientSettings
2425
ReadConcern ReadConcern { get; }
2526
UTF8Encoding ReadEncoding { get; }
2627
ReadPreference ReadPreference { get; }
28+
IBsonSerializationDomain SerializationDomain { get; }
2729
WriteConcern WriteConcern { get; }
2830
UTF8Encoding WriteEncoding { get; }
2931
}

src/MongoDB.Driver/MongoClientSettings.cs

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ public class MongoClientSettings : IEquatable<MongoClientSettings>, IInheritable
4848
private TimeSpan _connectTimeout;
4949
private MongoCredential _credential;
5050
private bool _directConnection;
51-
private IBsonSerializationDomain _domain;
5251
private TimeSpan _heartbeatInterval;
5352
private TimeSpan _heartbeatTimeout;
5453
private bool _ipv6;
@@ -68,6 +67,7 @@ public class MongoClientSettings : IEquatable<MongoClientSettings>, IInheritable
6867
private bool _retryReads;
6968
private bool _retryWrites;
7069
private ConnectionStringScheme _scheme;
70+
private IBsonSerializationDomain _serializationDomain;
7171
private ServerApi _serverApi;
7272
private List<MongoServerAddress> _servers;
7373
private ServerMonitoringMode _serverMonitoringMode;
@@ -101,7 +101,6 @@ public MongoClientSettings()
101101
_compressors = new CompressorConfiguration[0];
102102
_connectTimeout = MongoDefaults.ConnectTimeout;
103103
_directConnection = false;
104-
_domain = null;
105104
_heartbeatInterval = ServerSettings.DefaultHeartbeatInterval;
106105
_heartbeatTimeout = ServerSettings.DefaultHeartbeatTimeout;
107106
_ipv6 = false;
@@ -120,6 +119,7 @@ public MongoClientSettings()
120119
_retryReads = true;
121120
_retryWrites = true;
122121
_scheme = ConnectionStringScheme.MongoDB;
122+
_serializationDomain = BsonSerializer.DefaultDomain;
123123
_serverApi = null;
124124
_servers = new List<MongoServerAddress> { new MongoServerAddress("localhost") };
125125
_serverMonitoringMode = ServerMonitoringMode.Auto;
@@ -267,23 +267,6 @@ public bool DirectConnection
267267
}
268268
}
269269

270-
/// <summary>
271-
/// //TODO
272-
/// </summary>
273-
/// <exception cref="InvalidOperationException"></exception>
274-
public IBsonSerializationDomain Domain
275-
{
276-
get
277-
{
278-
return _domain;
279-
}
280-
set
281-
{
282-
if (_isFrozen) { throw new InvalidOperationException("MongoClientSettings is frozen."); }
283-
_domain = value;
284-
}
285-
}
286-
287270
/// <summary>
288271
/// Gets a value indicating whether the settings have been frozen to prevent further changes.
289272
/// </summary>
@@ -491,6 +474,21 @@ public ReadPreference ReadPreference
491474
}
492475
}
493476

477+
/// <summary>
478+
/// //TODO
479+
/// </summary>
480+
/// <exception cref="InvalidOperationException"></exception>
481+
/// <exception cref="ArgumentNullException"></exception>
482+
public IBsonSerializationDomain SerializationDomain
483+
{
484+
get => _serializationDomain;
485+
set
486+
{
487+
if (_isFrozen) { throw new InvalidOperationException("MongoClientSettings is frozen."); }
488+
_serializationDomain = value ?? throw new ArgumentNullException(nameof(value));
489+
}
490+
}
491+
494492
/// <summary>
495493
/// Gets or sets the name of the replica set.
496494
/// </summary>

src/MongoDB.Driver/MongoCollectionImpl.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1320,7 +1320,8 @@ private MessageEncoderSettings GetMessageEncoderSettings()
13201320
var messageEncoderSettings = new MessageEncoderSettings
13211321
{
13221322
{ MessageEncoderSettingsName.ReadEncoding, _settings.ReadEncoding ?? Utf8Encodings.Strict },
1323-
{ MessageEncoderSettingsName.WriteEncoding, _settings.WriteEncoding ?? Utf8Encodings.Strict }
1323+
{ MessageEncoderSettingsName.WriteEncoding, _settings.WriteEncoding ?? Utf8Encodings.Strict },
1324+
{ MessageEncoderSettingsName.SerializationDomain, _settings.SerializationDomain }
13241325
};
13251326

13261327
if (_database.Client is MongoClient mongoClient)

src/MongoDB.Driver/MongoCollectionSettings.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,7 @@ public ReadPreference ReadPreference
117117
/// <summary>
118118
/// Gets the serializer registry.
119119
/// </summary>
120-
public IBsonSerializerRegistry SerializerRegistry =>
121-
_serializationDomain.HasBeenSet
122-
? SerializationDomain.SerializerRegistry
123-
: BsonSerializer.SerializerRegistry;
120+
public IBsonSerializerRegistry SerializerRegistry => SerializationDomain.SerializerRegistry;
124121

125122
/// <summary>
126123
/// //TODO
@@ -316,6 +313,10 @@ internal void ApplyDefaultValues(MongoDatabaseSettings databaseSettings)
316313
{
317314
ReadPreference = databaseSettings.ReadPreference;
318315
}
316+
if (!_serializationDomain.HasBeenSet)
317+
{
318+
SerializationDomain = databaseSettings.SerializationDomain;
319+
}
319320
if (!_writeConcern.HasBeenSet)
320321
{
321322
WriteConcern = databaseSettings.WriteConcern;

src/MongoDB.Driver/MongoDatabaseSettings.cs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public class MongoDatabaseSettings
3333
private Setting<ReadPreference> _readPreference;
3434
private Setting<WriteConcern> _writeConcern;
3535
private Setting<UTF8Encoding> _writeEncoding;
36+
private Setting<IBsonSerializationDomain> _serializationDomain;
3637

3738
// the following fields are set when Freeze is called
3839
private bool _isFrozen;
@@ -101,9 +102,23 @@ public ReadPreference ReadPreference
101102
/// <summary>
102103
/// Gets the serializer registry.
103104
/// </summary>
104-
public IBsonSerializerRegistry SerializerRegistry
105+
public IBsonSerializerRegistry SerializerRegistry => SerializationDomain.SerializerRegistry;
106+
107+
/// <summary>
108+
/// //TODO
109+
/// </summary>
110+
public IBsonSerializationDomain SerializationDomain
105111
{
106-
get { return BsonSerializer.SerializerRegistry; }
112+
get => _serializationDomain.Value;
113+
set
114+
{
115+
if (_isFrozen) { throw new InvalidOperationException("MongoCollectionSettings is frozen."); }
116+
if (value == null)
117+
{
118+
throw new ArgumentNullException("value");
119+
}
120+
_serializationDomain.Value = value;
121+
}
107122
}
108123

109124
/// <summary>
@@ -275,6 +290,10 @@ internal void ApplyDefaultValues(IInheritableMongoClientSettings clientSettings)
275290
{
276291
ReadPreference = clientSettings.ReadPreference;
277292
}
293+
if (!_serializationDomain.HasBeenSet)
294+
{
295+
SerializationDomain = clientSettings.SerializationDomain;
296+
}
278297
if (!_writeConcern.HasBeenSet)
279298
{
280299
WriteConcern = clientSettings.WriteConcern;

tests/MongoDB.Driver.Tests/MultipleRegistriesTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class MultipleRegistriesTests
2828
public void GeneralTest()
2929
{
3030
// {
31-
// var client = DriverTestConfiguration.CreateMongoClient(c => c.Domain = BsonSerializer.DefaultDomain);
31+
// var client = DriverTestConfiguration.CreateMongoClient(c => c.SerializationDomain = BsonSerializer.DefaultDomain);
3232
// var db = client.GetDatabase(DriverTestConfiguration.DatabaseNamespace.DatabaseName);
3333
// db.DropCollection(DriverTestConfiguration.CollectionNamespace.CollectionName);
3434
// var collection = db.GetCollection<Person>(DriverTestConfiguration.CollectionNamespace.CollectionName);
@@ -50,7 +50,7 @@ public void GeneralTest()
5050
var customDomain = BsonSerializer.CreateDomain();
5151
customDomain.RegisterSerializer(new CustomStringSerializer());
5252

53-
var client = DriverTestConfiguration.CreateMongoClient(c => c.Domain = customDomain);
53+
var client = DriverTestConfiguration.CreateMongoClient(c => c.SerializationDomain = customDomain);
5454
var db = client.GetDatabase(DriverTestConfiguration.DatabaseNamespace.DatabaseName);
5555
db.DropCollection(DriverTestConfiguration.CollectionNamespace.CollectionName);
5656
var collection = db.GetCollection<Person>(DriverTestConfiguration.CollectionNamespace.CollectionName);

0 commit comments

Comments
 (0)