Beispiel #1
0
        public Maybe <Message> GetEmbeddedMessage()
        {
            var embeddedMessageNodeId = GetEmbeddedMessageNodeId();

            if (embeddedMessageNodeId.HasNoValue)
            {
                return(Maybe <Message> .NoValue());
            }

            var embeddedMessageNodePath = objectPath.Add(embeddedMessageNodeId.Value);

            objectTracker.TrackObject(
                embeddedMessageNodePath,
                ObjectTypes.Message,
                ObjectStates.Loaded);

            return
                (new Message(
                     embeddedMessageNodePath,
                     objectTracker,
                     recipientTracker,
                     nodeEntryFinder,
                     rowIndexReader,
                     propertyNameToIdMap,
                     propertyContextBasedPropertyReader,
                     tableContextBasedPropertyReader));
        }
Beispiel #2
0
        public Folder GetRootMailboxFolder()
        {
            var ipmSubtreeEntryId = MessageStore.GetProperty(MAPIProperties.PidTagIpmSubTreeEntryId);

            var entryId = EntryId.OfValue(ipmSubtreeEntryId.Value.Value);

            var nodePath = new ObjectPath(new[] { entryId.NID });

            if (!objectTracker.IsObjectTracked(nodePath))
            {
                objectTracker.TrackObject(nodePath, ObjectTypes.Folder, ObjectStates.Loaded);
            }

            return
                (new Folder(
                     nodePath,
                     objectTracker,
                     recipientTracker,
                     stringEncoder,
                     propertyNameToIdMap,
                     propertyContextBasedPropertyReader,
                     nodeEntryFinder,
                     rowIndexReader,
                     tableContextBasedPropertyReader,
                     nodeIdAllocator));
        }
        public void TrackedObjectStillAliveTest()
        {
            IObjectTracker objectTracker = ObjectTracker.Instance;

            objectTracker.ForceTrack = true;

            objectTracker.TrackObject(trackObj);

            Assert.AreEqual(1, objectTracker.GetLiveTrackedObjects().Count());
        }
Beispiel #4
0
        public Folder NewFolder(string displayName)
        {
            var childFolderNodePath = objectPath.Add(nodeIdAllocator.Allocate(Constants.NID_TYPE_NORMAL_FOLDER));

            objectTracker.TrackObject(
                childFolderNodePath,
                ObjectTypes.Folder,
                ObjectStates.New);

            objectTracker.SetProperty(
                childFolderNodePath,
                MAPIProperties.PidTagDisplayName,
                new PropertyValue(stringEncoder.Encode(displayName)));

            objectTracker.SetProperty(
                childFolderNodePath,
                MAPIProperties.PidTagContentCount,
                new PropertyValue(BinaryData.OfValue(0)));

            objectTracker.SetProperty(
                childFolderNodePath,
                MAPIProperties.PidTagContentUnreadCount,
                new PropertyValue(BinaryData.OfValue(0)));

            objectTracker.SetProperty(
                childFolderNodePath,
                MAPIProperties.PidTagSubfolders,
                new PropertyValue(BinaryData.OfValue(false)));

            return
                (new Folder(
                     childFolderNodePath,
                     objectTracker,
                     recipientTracker,
                     stringEncoder,
                     propertyNameToIdMap,
                     propertyContextBasedPropertyReader,
                     nodeEntryFinder,
                     rowIndexReader,
                     tableContextBasedPropertyReader,
                     nodeIdAllocator));
        }
Beispiel #5
0
 internal static void TrackObject(List <Lazy <IObjectTracker> > objectTrackers, string bucketName, object value)
 {
     foreach (Lazy <IObjectTracker> trackerExport in objectTrackers)
     {
         IObjectTracker objectTracker = trackerExport.Value;
         if (objectTracker != null)
         {
             objectTracker.TrackObject(value, bucketName);
         }
     }
 }
        public void TrackedObjectDeadAfterNoRefTest()
        {
            IObjectTracker objectTracker = ObjectTracker.Instance;

            objectTracker.ForceTrack = true;

            objectTracker.TrackObject(trackObj);

            trackObj = null;

            Assert.AreEqual(0, objectTracker.GetLiveTrackedObjects().Count());
        }
Beispiel #7
0
        private void LoadPreExistingAttachments()
        {
            var entry = nodeEntryFinder.GetEntry(new[] { objectPath.LocalNodeId });

            if (entry.HasNoValue)
            {
                return;
            }

            var tableContextNodeId = entry.Value.GetChildOfType(Constants.NID_TYPE_ATTACHMENT_TABLE).LocalSubnodeId;

            foreach (var rowId in rowIndexReader.GetAllRowIds(new[] { objectPath.LocalNodeId, tableContextNodeId }))
            {
                objectTracker.TrackObject(objectPath.Add(NID.OfValue(rowId.RowId)), ObjectTypes.Attachment, ObjectStates.Loaded);
            }
        }