Skip to content

Commit 792d835

Browse files
committed
Added getDiscriminatorInternal
1 parent 1faf011 commit 792d835

File tree

19 files changed

+47
-47
lines changed

19 files changed

+47
-47
lines changed

src/MongoDB.Bson/InternalExtensions.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
namespace MongoDB.Bson
2222
{
23-
//TODO This could be moved somewhere else
23+
//FP This could be moved somewhere else
2424
internal static class InternalExtensions
2525
{
2626
public static Type GetActualTypeInternal(this IDiscriminatorConvention discriminatorConvention, IBsonReader bsonReader, Type nominalType, IBsonSerializationDomain serializationDomain)
@@ -32,6 +32,15 @@ public static Type GetActualTypeInternal(this IDiscriminatorConvention discrimin
3232
return discriminatorConvention.GetActualType(bsonReader, nominalType);
3333
}
3434

35+
public static BsonValue GetDiscriminatorInternal(this IDiscriminatorConvention discriminatorConvention, Type nominalType, Type actualType, IBsonSerializationDomain serializationDomain)
36+
{
37+
if (discriminatorConvention is IDiscriminatorConventionInternal internalConvention)
38+
{
39+
return internalConvention.GetDiscriminator(nominalType, actualType, serializationDomain);
40+
}
41+
return discriminatorConvention.GetDiscriminator(nominalType, actualType);
42+
}
43+
3544
public static void ApplyInternal(this IMemberMapConvention memberMapConvention, BsonMemberMap memberMap, IBsonSerializationDomain serializationDomain)
3645
{
3746
if (memberMapConvention is IMemberMapConventionInternal internalConvention)

src/MongoDB.Bson/Serialization/Serializers/BsonClassMapSerializer.cs

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,6 @@ public bool GetDocumentId(
329329
out IIdGenerator idGenerator)
330330
=> GetDocumentId(document, BsonSerializer.DefaultSerializationDomain, out id, out idNominalType, out idGenerator);
331331

332-
/// <inheritdoc/>
333332
internal bool GetDocumentId(object document, IBsonSerializationDomain serializationDomain, out object id, out Type idNominalType,
334333
out IIdGenerator idGenerator)
335334
{
@@ -647,16 +646,7 @@ private void SerializeDiscriminator(BsonSerializationContext context, Type nomin
647646
if (discriminatorConvention != null)
648647
{
649648
var actualType = obj.GetType();
650-
651-
BsonValue discriminator;
652-
if (discriminatorConvention is IDiscriminatorConventionInternal discriminatorConventionInternal)
653-
{
654-
discriminator = discriminatorConventionInternal.GetDiscriminator(nominalType, actualType, context.SerializationDomain);
655-
}
656-
else
657-
{
658-
discriminator = discriminatorConvention.GetDiscriminator(nominalType, actualType);
659-
}
649+
var discriminator = discriminatorConvention.GetDiscriminatorInternal(nominalType, actualType, context.SerializationDomain);
660650

661651
if (discriminator != null)
662652
{

src/MongoDB.Bson/Serialization/Serializers/BsonDocumentSerializer.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ public bool GetDocumentId(
8484
out IIdGenerator idGenerator) => GetDocumentId(document, BsonSerializer.DefaultSerializationDomain, out id,
8585
out idNominalType, out idGenerator);
8686

87-
/// <inheritdoc />
8887
internal bool GetDocumentId(object document, IBsonSerializationDomain serializationDomain, out object id, out Type idNominalType,
8988
out IIdGenerator idGenerator)
9089
{

src/MongoDB.Bson/Serialization/Serializers/DiscriminatedWrapperSerializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ public override void Serialize(BsonSerializationContext context, BsonSerializati
145145
var bsonWriter = context.Writer;
146146
var nominalType = args.NominalType;
147147
var actualType = value.GetType();
148-
var discriminator = _discriminatorConvention.GetDiscriminator(nominalType, actualType);
148+
var discriminator = _discriminatorConvention.GetDiscriminatorInternal(nominalType, actualType, context.SerializationDomain);
149149

150150
bsonWriter.WriteStartDocument();
151151
if (discriminator != null)

src/MongoDB.Bson/Serialization/Serializers/ObjectSerializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ private void SerializeDiscriminatedValue(BsonSerializationContext context, BsonS
456456
else
457457
{
458458
var bsonWriter = context.Writer;
459-
var discriminator = _discriminatorConvention.GetDiscriminator(typeof(object), actualType);
459+
var discriminator = _discriminatorConvention.GetDiscriminatorInternal(typeof(object), actualType, context.SerializationDomain);
460460

461461
bsonWriter.WriteStartDocument();
462462
if (discriminator != null)

src/MongoDB.Driver.Authentication.AWS/SaslSteps/AWSLastSaslStep.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ private byte[] PreparePayload(AWSCredentials credentials, byte[] serverNonce, st
8282

8383
private void ParseServerResponse(SaslConversation conversation, byte[] bytesReceivedFromServer, out byte[] serverNonce, out string host)
8484
{
85-
var serverFirstMessageDocument = BsonSerializer.Deserialize<BsonDocument>(bytesReceivedFromServer);
85+
var serverFirstMessageDocument = BsonSerializer.Deserialize<BsonDocument>(bytesReceivedFromServer); //FP I think this is fine, as it should be default configuration.
8686
if (serverFirstMessageDocument.Names.Any(n => !__serverResponseExpectedNames.Contains(n)))
8787
{
8888
var unexpectedNames = serverFirstMessageDocument.Names.Except(__serverResponseExpectedNames);

src/MongoDB.Driver.Encryption/ExplicitEncryptionLibMongoCryptController.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public Guid CreateDataKey(
102102
{
103103
var wrappedKeyBytes = ProcessStates(context, _keyVaultNamespace.DatabaseNamespace.DatabaseName, cancellationToken);
104104

105-
var wrappedKeyDocument = BsonSerializer.Deserialize<BsonDocument>(wrappedKeyBytes);
105+
var wrappedKeyDocument = BsonSerializer.Deserialize<BsonDocument>(wrappedKeyBytes); //FP I think this is fine, as it should be default configuration.
106106
var keyId = UnwrapKeyId(wrappedKeyDocument);
107107

108108
_keyVaultCollection.Value.InsertOne(wrappedKeyDocument, cancellationToken: cancellationToken);
@@ -131,7 +131,7 @@ public async Task<Guid> CreateDataKeyAsync(
131131
{
132132
var wrappedKeyBytes = await ProcessStatesAsync(context, _keyVaultNamespace.DatabaseNamespace.DatabaseName, cancellationToken).ConfigureAwait(false);
133133

134-
var wrappedKeyDocument = BsonSerializer.Deserialize<BsonDocument>(wrappedKeyBytes);
134+
var wrappedKeyDocument = BsonSerializer.Deserialize<BsonDocument>(wrappedKeyBytes); //FP I think this is fine, as it should be default configuration.
135135
var keyId = UnwrapKeyId(wrappedKeyDocument);
136136

137137
await _keyVaultCollection.Value.InsertOneAsync(wrappedKeyDocument, cancellationToken: cancellationToken).ConfigureAwait(false);
@@ -553,7 +553,7 @@ private byte[] GetWrappedValueBytes(BsonValue value)
553553

554554
private static BsonValue RenderFilter(FilterDefinition<BsonDocument> filter)
555555
{
556-
var registry = BsonSerializer.SerializerRegistry;
556+
var registry = BsonSerializer.SerializerRegistry; //FP I think this is fine, as it should be default configuration.
557557
var serializer = registry.GetSerializer<BsonDocument>();
558558
return filter.Render(new(serializer, registry));
559559
}
@@ -570,7 +570,7 @@ private static Guid UnwrapKeyId(BsonDocument wrappedKeyDocument)
570570

571571
private static BsonValue UnwrapValue(byte[] encryptedWrappedBytes)
572572
{
573-
var bsonDocument = BsonSerializer.Deserialize<BsonDocument>(encryptedWrappedBytes);
573+
var bsonDocument = BsonSerializer.Deserialize<BsonDocument>(encryptedWrappedBytes); //FP I think this is fine, as it should be default configuration.
574574
return bsonDocument["v"];
575575
}
576576
}

src/MongoDB.Driver/Core/Operations/GroupOperation.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ public async Task<IEnumerable<TResult>> ExecuteAsync(IReadBinding binding, Cance
166166
private ReadCommandOperation<TResult[]> CreateOperation()
167167
{
168168
var command = CreateCommand();
169-
var resultSerializer = _resultSerializer ?? BsonSerializer.LookupSerializer<TResult>();
169+
var resultSerializer = _resultSerializer ?? BsonSerializer.LookupSerializer<TResult>(); //FP Need to take a look
170170
var resultArraySerializer = new ArraySerializer<TResult>(resultSerializer);
171171
var commandResultSerializer = new ElementDeserializer<TResult[]>("retval", resultArraySerializer);
172172
return new ReadCommandOperation<TResult[]>(_collectionNamespace.DatabaseNamespace, command, commandResultSerializer, _messageEncoderSettings)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public JsonWriter CreateJsonWriter()
6767
writerSettings.OutputMode = _encoderSettings.GetOrDefault(MessageEncoderSettingsName.OutputMode, JsonOutputMode.Shell);
6868
writerSettings.ShellVersion = _encoderSettings.GetOrDefault(MessageEncoderSettingsName.ShellVersion, new Version(2, 6, 0));
6969
writerSettings.SerializationDomain =
70-
_encoderSettings.GetOrDefault<IBsonSerializationDomain>(MessageEncoderSettingsName.SerializationDomain, null); //TODO Using null here to find issues faster
70+
_encoderSettings.GetOrDefault<IBsonSerializationDomain>(MessageEncoderSettingsName.SerializationDomain, null); //FP Using null here to find issues faster
7171
}
7272
return new JsonWriter(_textWriter, writerSettings);
7373
}

src/MongoDB.Driver/FilterDefinitionBuilder.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2212,7 +2212,7 @@ public override BsonDocument Render(RenderArgs<TDocument> args)
22122212
throw new NotSupportedException(message);
22132213
}
22142214

2215-
var discriminator = discriminatorConvention.GetDiscriminator(typeof(TDocument), typeof(TDerived));
2215+
var discriminator = discriminatorConvention.GetDiscriminatorInternal(typeof(TDocument), typeof(TDerived), args.SerializationDomain);
22162216
if (discriminator == null)
22172217
{
22182218
throw new NotSupportedException($"OfType requires that documents of type {BsonUtils.GetFriendlyTypeName(typeof(TDerived))} have a discriminator value.");
@@ -2221,8 +2221,8 @@ public override BsonDocument Render(RenderArgs<TDocument> args)
22212221
var discriminatorField = new AstFilterField(discriminatorConvention.ElementName);
22222222
ofTypeFilter= discriminatorConvention switch
22232223
{
2224-
IHierarchicalDiscriminatorConvention hierarchicalDiscriminatorConvention => DiscriminatorAstFilter.TypeIs(discriminatorField, hierarchicalDiscriminatorConvention, nominalType, actualType),
2225-
IScalarDiscriminatorConvention scalarDiscriminatorConvention => DiscriminatorAstFilter.TypeIs(discriminatorField, scalarDiscriminatorConvention, nominalType, actualType),
2224+
IHierarchicalDiscriminatorConvention hierarchicalDiscriminatorConvention => DiscriminatorAstFilter.TypeIs(discriminatorField, hierarchicalDiscriminatorConvention, nominalType, actualType, args.SerializationDomain),
2225+
IScalarDiscriminatorConvention scalarDiscriminatorConvention => DiscriminatorAstFilter.TypeIs(discriminatorField, scalarDiscriminatorConvention, nominalType, actualType, args.SerializationDomain),
22262226
_ => throw new NotSupportedException("OfType is not supported with the configured discriminator convention.")
22272227
};
22282228
}
@@ -2280,8 +2280,8 @@ public override BsonDocument Render(RenderArgs<TDocument> args)
22802280

22812281
ofTypeFilter = discriminatorConvention switch
22822282
{
2283-
IHierarchicalDiscriminatorConvention hierarchicalDiscriminatorConvention => DiscriminatorAstFilter.TypeIs(discriminatorField, hierarchicalDiscriminatorConvention, nominalType, actualType),
2284-
IScalarDiscriminatorConvention scalarDiscriminatorConvention => DiscriminatorAstFilter.TypeIs(discriminatorField, scalarDiscriminatorConvention, nominalType, actualType),
2283+
IHierarchicalDiscriminatorConvention hierarchicalDiscriminatorConvention => DiscriminatorAstFilter.TypeIs(discriminatorField, hierarchicalDiscriminatorConvention, nominalType, actualType, args.SerializationDomain),
2284+
IScalarDiscriminatorConvention scalarDiscriminatorConvention => DiscriminatorAstFilter.TypeIs(discriminatorField, scalarDiscriminatorConvention, nominalType, actualType, args.SerializationDomain),
22852285
_ => throw new NotSupportedException("OfType is not supported with the configured discriminator convention.")
22862286
};
22872287
}

0 commit comments

Comments
 (0)