public void TestGuidIdChecker() { var idChecker = BsonSerializer.LookupIdGenerator(typeof(Guid)); Assert.IsTrue(idChecker.IsEmpty(Guid.Empty)); Assert.IsFalse(idChecker.IsEmpty(Guid.NewGuid())); }
public void TestObjectIdChecker() { var idChecker = BsonSerializer.LookupIdGenerator(typeof(ObjectId)); Assert.IsTrue(idChecker.IsEmpty(ObjectId.Empty)); Assert.IsFalse(idChecker.IsEmpty(ObjectId.GenerateNewId())); }
public void TestNullIdChecker() { var idChecker = BsonSerializer.LookupIdGenerator(typeof(object)); Assert.IsTrue(idChecker.IsEmpty(null)); Assert.IsFalse(idChecker.IsEmpty(new object())); }
/// <summary> /// Gets the document Id. /// </summary> /// <param name="document">The document.</param> /// <param name="id">The Id.</param> /// <param name="idNominalType">The nominal type of the Id.</param> /// <param name="idGenerator">The IdGenerator for the Id type.</param> /// <returns>True if the document has an Id.</returns> public bool GetDocumentId( object document, out object id, out Type idNominalType, out IIdGenerator idGenerator) { var bsonDocument = (BsonDocument)document; BsonValue idBsonValue; if (bsonDocument.TryGetValue("_id", out idBsonValue)) { id = idBsonValue; idGenerator = BsonSerializer.LookupIdGenerator(id.GetType()); if (idGenerator == null) { var idBinaryData = id as BsonBinaryData; if (idBinaryData != null && (idBinaryData.SubType == BsonBinarySubType.UuidLegacy || idBinaryData.SubType == BsonBinarySubType.UuidStandard)) { idGenerator = BsonBinaryDataGuidGenerator.GetInstance(idBinaryData.GuidRepresentation); } } } else { id = null; idGenerator = BsonObjectIdGenerator.Instance; } idNominalType = typeof(BsonValue); return(true); }
public void TestIntZeroIdChecker() { var idChecker = BsonSerializer.LookupIdGenerator(typeof(int)); Assert.IsTrue(idChecker.IsEmpty(0)); Assert.IsFalse(idChecker.IsEmpty(1)); }
/// <summary> /// Gets the Id of the document. /// </summary> /// <param name="id">The Id of the document (the RawValue if it has one, otherwise the element Value).</param> /// <param name="idNominalType">The nominal type of the Id.</param> /// <param name="idGenerator">The IdGenerator for the Id (or null).</param> /// <returns>True (a BsonDocument either has an Id member or one can be added).</returns> public bool GetDocumentId( out object id, out Type idNominalType, out IIdGenerator idGenerator ) { BsonElement idElement; if (TryGetElement("_id", out idElement)) { id = idElement.Value.RawValue; if (id == null) { id = idElement.Value; } idGenerator = BsonSerializer.LookupIdGenerator(id.GetType()); } else { id = null; idGenerator = ObjectIdGenerator.Instance; } idNominalType = typeof(BsonValue); return(true); }
public void TestStructZeroIdChecker() { var idChecker = BsonSerializer.LookupIdGenerator(typeof(S)); Assert.IsTrue(idChecker.IsEmpty(default(S))); Assert.IsTrue(idChecker.IsEmpty(new S())); Assert.IsTrue(idChecker.IsEmpty(new S { I = 0 })); Assert.IsFalse(idChecker.IsEmpty(new S { I = 1 })); }
// public methods /// <summary> /// Applies a post processing modification to the class map. /// </summary> /// <param name="classMap">The class map.</param> public void PostProcess(BsonClassMap classMap) { var idMemberMap = classMap.IdMemberMap; if (idMemberMap != null) { if (idMemberMap.IdGenerator == null) { var idGenerator = BsonSerializer.LookupIdGenerator(idMemberMap.MemberType); if (idGenerator != null) { idMemberMap.SetIdGenerator(idGenerator); } } } }
public void TestIdMember() { var u = new User { Id = ObjectId.Empty, FriendId = ObjectId.Empty }; var classMap = BsonClassMap.LookupClassMap(typeof(User)); var idMemberMap = classMap.IdMemberMap; Assert.Equal("Id", idMemberMap.MemberName); var idProvider = BsonSerializer.LookupSerializer(typeof(User)) as IBsonIdProvider; var idGenerator = BsonSerializer.LookupIdGenerator(typeof(ObjectId)); idProvider.SetDocumentId(u, idGenerator.GenerateId(null, u)); Assert.False(idGenerator.IsEmpty(u.Id)); Assert.True(idGenerator.IsEmpty(u.FriendId)); }
public void TestIdMember() { var u = new User { Id = ObjectId.Empty, FriendId = ObjectId.Empty }; var classMap = BsonClassMap.LookupClassMap(typeof(User)); var idMemberMap = classMap.IdMemberMap; Assert.AreEqual("Id", idMemberMap.MemberName); var serializer = BsonSerializer.LookupSerializer(typeof(User)); var idGenerator = BsonSerializer.LookupIdGenerator(typeof(ObjectId)); serializer.SetDocumentId(u, idGenerator.GenerateId()); Assert.IsFalse(idGenerator.IsEmpty(u.Id)); Assert.IsTrue(idGenerator.IsEmpty(u.FriendId)); var json = u.ToJson(); }
public IIdGenerator GetIdGenerator(MemberInfo memberInfo) { return(BsonSerializer.LookupIdGenerator(BsonClassMap.GetMemberInfoType(memberInfo))); }