Skip to content

Commit 0a4bba3

Browse files
committed
Removed serialization domain from reader and added to deserializationContext
1 parent 18e98e6 commit 0a4bba3

File tree

7 files changed

+40
-44
lines changed

7 files changed

+40
-44
lines changed

src/MongoDB.Bson/IO/BsonBinaryReaderSettings.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,6 @@ protected override BsonReaderSettings CloneImplementation()
137137
FixOldBinarySubTypeOnInput = _fixOldBinarySubTypeOnInput,
138138
FixOldDateTimeMaxValueOnInput = _fixOldDateTimeMaxValueOnInput,
139139
MaxDocumentSize = _maxDocumentSize,
140-
SerializationDomain = SerializationDomain
141140
};
142141

143142
return clone;

src/MongoDB.Bson/IO/BsonDocumentReaderSettings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public static BsonDocumentReaderSettings Defaults
6767
/// <returns>A clone of the settings.</returns>
6868
protected override BsonReaderSettings CloneImplementation()
6969
{
70-
var clone = new BsonDocumentReaderSettings { SerializationDomain = SerializationDomain }; //TODO This can be improved
70+
var clone = new BsonDocumentReaderSettings();
7171
return clone;
7272
}
7373
}

src/MongoDB.Bson/IO/BsonReader.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace MongoDB.Bson.IO
2525
/// <summary>
2626
/// Represents a BSON reader for some external format (see subclasses).
2727
/// </summary>
28-
public abstract class BsonReader : IBsonReaderInternal
28+
public abstract class BsonReader : IBsonReader
2929
{
3030
// private fields
3131
private bool _disposed = false;

src/MongoDB.Bson/IO/BsonReaderSettings.cs

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ public abstract class BsonReaderSettings
2525
{
2626
// private fields
2727
private bool _isFrozen;
28-
private IBsonSerializationDomain _serializationDomain;
2928

3029
// constructors
3130
/// <summary>
@@ -79,16 +78,6 @@ public BsonReaderSettings FrozenCopy()
7978
}
8079
}
8180

82-
internal IBsonSerializationDomain SerializationDomain
83-
{
84-
get => _serializationDomain;
85-
set
86-
{
87-
if (_isFrozen) { ThrowFrozenException(); }
88-
_serializationDomain = value;
89-
}
90-
}
91-
9281
// protected methods
9382
/// <summary>
9483
/// Creates a clone of the settings.

src/MongoDB.Bson/IO/IBsonReader.cs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
namespace MongoDB.Bson.IO
1919
{
20+
//FP This interface should have the settingg property as well, same way it's done for thr writer
2021
/// <summary>
2122
/// Represents a BSON reader.
2223
/// </summary>
@@ -256,13 +257,4 @@ public interface IBsonReader : IDisposable
256257
/// </summary>
257258
void SkipValue();
258259
}
259-
260-
internal interface IBsonReaderInternal : IBsonReader
261-
{
262-
//TODO I'm not sure why this was not already present, there is already an equivalent in IBsonWriter.
263-
/// <summary>
264-
/// Gets the settings of the reader.
265-
/// </summary>
266-
BsonReaderSettings Settings { get; }
267-
}
268260
}

src/MongoDB.Bson/IO/JsonReaderSettings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public static JsonReaderSettings Defaults
6868
/// <returns>A clone of the settings.</returns>
6969
protected override BsonReaderSettings CloneImplementation()
7070
{
71-
var clone = new JsonReaderSettings { SerializationDomain = SerializationDomain }; //TODO This can be improved
71+
var clone = new JsonReaderSettings();
7272
return clone;
7373
}
7474
}

src/MongoDB.Bson/Serialization/BsonDeserializationContext.cs

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

1616
using System;
17+
using System.Net;
1718
using MongoDB.Bson.IO;
1819

1920
namespace MongoDB.Bson.Serialization
@@ -33,6 +34,7 @@ public class BsonDeserializationContext
3334
// constructors
3435
private BsonDeserializationContext(
3536
IBsonReader reader,
37+
IBsonSerializationDomain serializationDomain,
3638
bool allowDuplicateElementNames,
3739
IBsonSerializer dynamicArraySerializer,
3840
IBsonSerializer dynamicDocumentSerializer)
@@ -42,12 +44,8 @@ private BsonDeserializationContext(
4244
_dynamicArraySerializer = dynamicArraySerializer;
4345
_dynamicDocumentSerializer = dynamicDocumentSerializer;
4446

45-
if (reader is IBsonReaderInternal readerInternal)
46-
{
47-
_serializationDomain = readerInternal.Settings?.SerializationDomain;
48-
}
49-
50-
_serializationDomain ??= BsonSerializer.DefaultSerializationDomain;
47+
_serializationDomain = serializationDomain; //FP Using this version to find error in an easier way for now
48+
//_serializationDomain = serializationDomain ?? BsonSerializer.DefaultSerializationDomain;
5149

5250
_dynamicArraySerializer ??= _serializationDomain.BsonDefaults.DynamicArraySerializer;
5351
_dynamicDocumentSerializer ??= _serializationDomain.BsonDefaults.DynamicDocumentSerializer;
@@ -103,20 +101,34 @@ public IBsonReader Reader
103101
get { return _reader; }
104102
}
105103

106-
// public static methods
107-
/// <summary>
108-
/// Creates a root context.
109-
/// </summary>
110-
/// <param name="reader">The reader.</param>
111-
/// <param name="configurator">The configurator.</param>
112-
/// <returns>
113-
/// A root context.
114-
/// </returns>
115-
public static BsonDeserializationContext CreateRoot(
104+
// //DOMAIN-API We should remove this version of the CreateRoot method, and use the one that takes a serialization domain.
105+
// // public static methods
106+
// /// <summary>
107+
// /// Creates a root context.
108+
// /// </summary>
109+
// /// <param name="reader">The reader.</param>
110+
// /// <param name="configurator">The configurator.</param>
111+
// /// <returns>
112+
// /// A root context.
113+
// /// </returns>
114+
// public static BsonDeserializationContext CreateRoot(
115+
// IBsonReader reader,
116+
// Action<Builder> configurator = null)
117+
// {
118+
// var builder = new Builder(null, reader, BsonSerializer.DefaultSerializationDomain);
119+
// if (configurator != null)
120+
// {
121+
// configurator(builder);
122+
// }
123+
// return builder.Build();
124+
// }
125+
126+
internal static BsonDeserializationContext CreateRoot(
116127
IBsonReader reader,
128+
IBsonSerializationDomain serializationDomain,
117129
Action<Builder> configurator = null)
118130
{
119-
var builder = new Builder(null, reader);
131+
var builder = new Builder(null, reader, serializationDomain);
120132
if (configurator != null)
121133
{
122134
configurator(builder);
@@ -135,7 +147,7 @@ public static BsonDeserializationContext CreateRoot(
135147
public BsonDeserializationContext With(
136148
Action<Builder> configurator = null)
137149
{
138-
var builder = new Builder(this, _reader);
150+
var builder = new Builder(this, _reader, _serializationDomain);
139151
if (configurator != null)
140152
{
141153
configurator(builder);
@@ -154,16 +166,18 @@ public class Builder
154166
private IBsonSerializer _dynamicArraySerializer;
155167
private IBsonSerializer _dynamicDocumentSerializer;
156168
private IBsonReader _reader;
169+
internal IBsonSerializationDomain _serializationDomain;
157170

158171
// constructors
159-
internal Builder(BsonDeserializationContext other, IBsonReader reader)
172+
internal Builder(BsonDeserializationContext other, IBsonReader reader, IBsonSerializationDomain serializationDomain)
160173
{
161174
if (reader == null)
162175
{
163176
throw new ArgumentNullException("reader");
164177
}
165178

166179
_reader = reader;
180+
_serializationDomain = serializationDomain;
167181
if (other != null)
168182
{
169183
_allowDuplicateElementNames = other.AllowDuplicateElementNames;
@@ -224,14 +238,16 @@ public IBsonReader Reader
224238
get { return _reader; }
225239
}
226240

241+
internal IBsonSerializationDomain SerializationDomain => _serializationDomain;
242+
227243
// public methods
228244
/// <summary>
229245
/// Builds the BsonDeserializationContext instance.
230246
/// </summary>
231247
/// <returns>A BsonDeserializationContext.</returns>
232248
internal BsonDeserializationContext Build()
233249
{
234-
return new BsonDeserializationContext(_reader, _allowDuplicateElementNames, _dynamicArraySerializer, _dynamicDocumentSerializer);
250+
return new BsonDeserializationContext(_reader, _serializationDomain, _allowDuplicateElementNames, _dynamicArraySerializer, _dynamicDocumentSerializer);
235251
}
236252
}
237253
}

0 commit comments

Comments
 (0)