private void SetNotificationMessage(MessageItem notificationMessage, UnifiedPolicyNotificationBase notification) { notificationMessage.PropertyBag[MessageItemSchema.UnifiedPolicyNotificationId] = notification.Identity.ToString(); using (Stream stream = notificationMessage.PropertyBag.OpenPropertyStream(MessageItemSchema.UnifiedPolicyNotificationData, PropertyOpenMode.Create)) { byte[] array = notification.GetWorkItem().Serialize(); stream.Write(array, 0, array.Length); } }
protected override void InternalSave(ConfigurableObject instance) { if (instance == null) { throw new ArgumentNullException("instance"); } UnifiedPolicyNotificationBase unifiedPolicyNotificationBase = instance as UnifiedPolicyNotificationBase; if (unifiedPolicyNotificationBase == null) { throw new NotSupportedException("Save: " + instance.GetType().FullName); } switch (unifiedPolicyNotificationBase.ObjectState) { case ObjectState.New: using (Folder folder = Folder.Bind(base.MailboxSession, base.MailboxSession.GetDefaultFolderId(DefaultFolderType.Inbox))) { using (MessageItem messageItem = MessageItem.CreateAssociated(base.MailboxSession, folder.Id)) { this.SetNotificationMessage(messageItem, unifiedPolicyNotificationBase); messageItem.Save(SaveMode.NoConflictResolutionForceSave); messageItem.Load(); unifiedPolicyNotificationBase.StoreObjectId = messageItem.Id; } return; } break; case ObjectState.Unchanged: return; case ObjectState.Changed: break; case ObjectState.Deleted: goto IL_FE; default: return; } if (unifiedPolicyNotificationBase.StoreObjectId == null) { throw new ArgumentException("notification.StoreObjectId is null when saving for an update."); } using (MessageItem messageItem2 = MessageItem.Bind(base.MailboxSession, unifiedPolicyNotificationBase.StoreObjectId)) { this.SetNotificationMessage(messageItem2, unifiedPolicyNotificationBase); messageItem2.Save(SaveMode.NoConflictResolutionForceSave); messageItem2.Load(); return; } IL_FE: throw new InvalidOperationException(ServerStrings.ExceptionObjectHasBeenDeleted); }
private UnifiedPolicyNotificationBase GetNotificationFromStoreId(StoreId storeId) { UnifiedPolicyNotificationBase unifiedPolicyNotificationBase = null; using (MessageItem messageItem = MessageItem.Bind(base.MailboxSession, storeId)) { WorkItemBase workItemBase = null; using (Stream stream = messageItem.PropertyBag.OpenPropertyStream(MessageItemSchema.UnifiedPolicyNotificationData, PropertyOpenMode.ReadOnly)) { if (stream.Length > 0L) { byte[] array = new byte[stream.Length]; stream.Position = 0L; stream.Read(array, 0, array.Length); workItemBase = WorkItemBase.Deserialize(array); } } unifiedPolicyNotificationBase = UnifiedPolicyNotificationFactory.Create(workItemBase, base.MailboxSession.MailboxOwner.ObjectId); workItemBase.WorkItemId = storeId.ToBase64String(); workItemBase.HasPersistentBackUp = true; unifiedPolicyNotificationBase.StoreObjectId = messageItem.Id; } return(unifiedPolicyNotificationBase); }
protected override void InternalDelete(ConfigurableObject instance) { if (instance == null) { throw new ArgumentNullException("instance"); } UnifiedPolicyNotificationBase unifiedPolicyNotificationBase = instance as UnifiedPolicyNotificationBase; if (unifiedPolicyNotificationBase == null) { throw new NotSupportedException("Delete: " + instance.GetType().FullName); } if (unifiedPolicyNotificationBase.StoreObjectId == null) { throw new ArgumentException("notification.StoreObjectId is null when deleting the instance."); } using (Folder folder = Folder.Bind(base.MailboxSession, base.MailboxSession.GetDefaultFolderId(DefaultFolderType.Inbox))) { folder.DeleteObjects(DeleteItemFlags.HardDelete, new StoreId[] { unifiedPolicyNotificationBase.StoreObjectId }); } }