public void TestInvalidKeys(string key) { var c = new C { Id = 1, D = new Hashtable { { key, 2 } }, G = new Dictionary<object, int> { { key, 3 } } }; using (var stream = new MemoryStream()) using (var bsonWriter = new BsonBinaryWriter(stream, BsonBinaryWriterSettings.Defaults)) { bsonWriter.PushElementNameValidator(CollectionElementNameValidator.Instance); Assert.Throws<BsonSerializationException>(() => BsonSerializer.Serialize(bsonWriter, c)); } }
private void WriteUpdate(BsonBinaryWriter binaryWriter, BsonDocument update, IElementNameValidator updateValidator) { binaryWriter.PushElementNameValidator(updateValidator); try { var position = binaryWriter.BaseStream.Position; var context = BsonSerializationContext.CreateRoot(binaryWriter); BsonDocumentSerializer.Instance.Serialize(context, update); if (updateValidator is UpdateElementNameValidator && binaryWriter.BaseStream.Position == position + 5) { throw new BsonSerializationException("Update documents cannot be empty."); } } finally { binaryWriter.PopElementNameValidator(); } }
private void SerializeUpdate(BsonBinaryWriter bsonWriter, BsonDocument update) { var updateValidator = new UpdateOrReplacementElementNameValidator(); bsonWriter.PushElementNameValidator(updateValidator); try { var context = BsonSerializationContext.CreateRoot<BsonDocument>(bsonWriter); BsonDocumentSerializer.Instance.Serialize(context, update); } finally { bsonWriter.PopElementNameValidator(); } }
private void WriteQuery(BsonBinaryWriter binaryWriter, BsonDocument query, IElementNameValidator queryValidator) { binaryWriter.PushElementNameValidator(queryValidator); try { var context = BsonSerializationContext.CreateRoot(binaryWriter); BsonDocumentSerializer.Instance.Serialize(context, query ?? new BsonDocument()); } finally { binaryWriter.PopElementNameValidator(); } }
private void SerializeUpdate(BsonBinaryWriter bsonWriter, BsonDocument update, UpdateType updateType) { bsonWriter.PushElementNameValidator(ElementNameValidatorFactory.ForUpdateType(updateType)); try { var position = bsonWriter.BaseStream.Position; var context = BsonSerializationContext.CreateRoot(bsonWriter); BsonDocumentSerializer.Instance.Serialize(context, update); if (updateType == UpdateType.Update && bsonWriter.BaseStream.Position == position + 8) { throw new BsonSerializationException("Update documents cannot be empty."); } } finally { bsonWriter.PopElementNameValidator(); } }
private void SerializeUpdate(BsonBinaryWriter bsonWriter, BsonDocument update, UpdateType updateType) { bsonWriter.PushElementNameValidator(ElementNameValidatorFactory.ForUpdateType(updateType)); try { var context = BsonSerializationContext.CreateRoot<BsonDocument>(bsonWriter); BsonDocumentSerializer.Instance.Serialize(context, update); } finally { bsonWriter.PopElementNameValidator(); } }