private AggregationContext(UserConfigurationManager manager, IAggregatedUserConfigurationReader reader, UserConfigurationManager.AggregationStats stats, ConcurrentDictionary <string, Func <SerializableDataBase> > requestedTypes) { this.manager = manager; this.reader = reader; this.stats = stats; this.requestedTypes = requestedTypes; this.createdTypes = new ConcurrentDictionary <string, SerializableDataBase>(); }
private static void AddToConfigurationCache(Folder folder, IList <IStorePropertyBag> items) { if (items == null || items.Count == 0) { return; } MailboxSession mailboxSession = folder.Session as MailboxSession; if (mailboxSession == null) { throw new NotSupportedException(); } UserConfigurationManager userConfigurationManager = mailboxSession.UserConfigurationManager; List <VersionedId> list = new List <VersionedId>(); new List <int>(); string a = null; for (int i = 0; i < items.Count; i++) { IStorePropertyBag storePropertyBag = items[i]; if (PropertyError.IsPropertyError(storePropertyBag.TryGetProperty(InternalSchema.ItemClass))) { ExTraceGlobals.StorageTracer.TraceError(0L, "The configuration data's field has been corrupted. Field = ItemClass."); throw new CorruptDataException(ServerStrings.ExConfigDataCorrupted("ItemClass")); } if (PropertyError.IsPropertyError(storePropertyBag.TryGetProperty(InternalSchema.ItemId))) { ExTraceGlobals.StorageTracer.TraceError(0L, "The configuration data's field has been corrupted. Field = Id."); throw new CorruptDataException(ServerStrings.ExConfigDataCorrupted("Id")); } string b = storePropertyBag.TryGetProperty(InternalSchema.ItemClass) as string; if (a == b) { list.Add((VersionedId)storePropertyBag[InternalSchema.ItemId]); items.RemoveAt(i); i--; } else { string name = (string)storePropertyBag[InternalSchema.ItemClass]; if (UserConfigurationName.IsValidName(name, ConfigurationNameKind.ItemClass)) { userConfigurationManager.UserConfigurationCache.Add(folder.Id.ObjectId, new UserConfigurationName(name, ConfigurationNameKind.ItemClass), ((VersionedId)storePropertyBag[InternalSchema.ItemId]).ObjectId); } } a = (storePropertyBag.TryGetProperty(InternalSchema.ItemClass) as string); } if (folder.Session.LogonType == LogonType.Owner) { userConfigurationManager.UserConfigurationCache.Save(); } AggregateOperationResult result = folder.Session.Delete(DeleteItemFlags.SoftDelete, list.ToArray()); UserConfiguration.CheckOperationResults(result, "DeleteDuplicates"); }
internal static bool DeleteFromCalendar(MailboxSession session, StoreId folderId) { UserConfigurationManager userConfigurationManager = session.UserConfigurationManager; OperationResult operationResult = userConfigurationManager.DeleteFolderConfigurations(folderId, new string[] { "WorkHours" }); ExTraceGlobals.WorkHoursTracer.TraceDebug <IExchangePrincipal, OperationResult>(0L, "DeleteFromCalendar User{0} - Result {1}.", session.MailboxOwner, operationResult); return(operationResult == OperationResult.Succeeded); }
// Token: 0x06000FD0 RID: 4048 RVA: 0x00040BFC File Offset: 0x0003EDFC private void GetOrOpenConfiguration(MailboxSession mailboxSession) { UserConfigurationManager userConfigurationManager = mailboxSession.UserConfigurationManager; if (userConfigurationManager == null) { userConfigurationManager = new UserConfigurationManager(mailboxSession); } try { this.backendUserConfiguration = userConfigurationManager.GetMailboxConfiguration(this.configurationCacheName, UserConfigurationTypes.XML); } catch (ObjectNotFoundException) { this.backendUserConfiguration = userConfigurationManager.CreateMailboxConfiguration(this.configurationCacheName, UserConfigurationTypes.XML); } }
internal static WorkHoursInCalendar GetFromCalendar(MailboxSession session, StoreId folderId) { WorkHoursInCalendar workHoursInCalendar = null; try { UserConfigurationManager userConfigurationManager = session.UserConfigurationManager; using (IReadableUserConfiguration readOnlyFolderConfiguration = userConfigurationManager.GetReadOnlyFolderConfiguration("WorkHours", UserConfigurationTypes.XML, folderId)) { if (readOnlyFolderConfiguration == null) { ExTraceGlobals.WorkHoursTracer.TraceDebug <string>(-1L, "{0}: Work hours configuration item was not found", session.MailboxOwner.MailboxInfo.DisplayName); } else { using (Stream xmlStream = readOnlyFolderConfiguration.GetXmlStream()) { workHoursInCalendar = WorkHoursInCalendar.DeserializeObject(xmlStream); if (workHoursInCalendar == null) { ExTraceGlobals.WorkHoursTracer.TraceDebug <string>(-1L, "{0}: Work hours configuration item was found, but no content was found", session.MailboxOwner.MailboxInfo.DisplayName); } } } } } catch (ObjectNotFoundException arg) { ExTraceGlobals.WorkHoursTracer.TraceError <string, ObjectNotFoundException>(-1L, "{0}: Could not retrieve working hours. Exception information is {1}", session.MailboxOwner.MailboxInfo.DisplayName, arg); } catch (InvalidOperationException ex) { ExTraceGlobals.WorkHoursTracer.TraceError <string, InvalidOperationException>(-1L, "{0}: Malformed working hours XML in mailbox. Exception information is {1}", session.MailboxOwner.MailboxInfo.DisplayName, ex); throw new WorkingHoursXmlMalformedException(ServerStrings.MalformedWorkingHours(session.MailboxOwner.MailboxInfo.DisplayName, ex.ToString()), ex); } catch (XmlException ex2) { ExTraceGlobals.WorkHoursTracer.TraceError <string, XmlException>(-1L, "{0}: Hit an XmlException deserializing working hours XML in mailbox. Exception information is {1}", session.MailboxOwner.MailboxInfo.DisplayName, ex2); throw new WorkingHoursXmlMalformedException(ServerStrings.MalformedWorkingHours(session.MailboxOwner.MailboxInfo.DisplayName, ex2.ToString()), ex2); } return(workHoursInCalendar); }
private static UserConfiguration GetOrCreateWorkingHourConfiguration(MailboxSession session, StoreId folderId) { UserConfigurationManager userConfigurationManager = session.UserConfigurationManager; UserConfiguration userConfiguration = null; try { userConfiguration = userConfigurationManager.GetFolderConfiguration("WorkHours", UserConfigurationTypes.XML, folderId); } catch (ObjectNotFoundException) { ExTraceGlobals.WorkHoursTracer.TraceDebug <string>(0L, "WorkHoursInCalendar::GetOrCreateWorkingHourConfiguration. GetOrCreateWorkingHourConfigurationStorageWorkingHours does not exist yet. I am going to create a new one. Mailbox = {0}.", session.MailboxOwner.MailboxInfo.DisplayName); userConfiguration = userConfigurationManager.CreateFolderConfiguration("WorkHours", UserConfigurationTypes.XML, folderId); } if (userConfiguration == null) { throw new WorkingHoursSaveFailedException(ServerStrings.CreateConfigurationItem(session.MailboxOwner.MailboxInfo.DisplayName)); } return(userConfiguration); }
public UserConfigurationManager.AggregationContext Clone(UserConfigurationManager manager) { return(new UserConfigurationManager.AggregationContext(manager, this.reader, this.stats, this.requestedTypes)); }
public AggregationContext(UserConfigurationManager manager, IAggregatedUserConfigurationReader reader) : this(manager, reader, new UserConfigurationManager.AggregationStats(), new ConcurrentDictionary <string, Func <SerializableDataBase> >()) { }
internal static UserConfiguration GetIgnoringCache(UserConfigurationManager manager, Folder folder, UserConfigurationName configurationName, UserConfigurationTypes freefetchType) { EnumValidator.AssertValid <UserConfigurationTypes>(freefetchType); UserConfiguration userConfiguration = null; PropertyDefinition[] columns; if ((freefetchType & UserConfigurationTypes.Dictionary) > (UserConfigurationTypes)0) { columns = new PropertyDefinition[] { InternalSchema.UserConfigurationDictionary }; } else { columns = UserConfiguration.ZeroProperties; } SortBy[] sorts = new SortBy[] { new SortBy(InternalSchema.CreationTime, SortOrder.Ascending), new SortBy(InternalSchema.MID, SortOrder.Ascending) }; IList <IStorePropertyBag> list = null; try { ExTraceGlobals.UserConfigurationTracer.TraceDebug <UserConfigurationName>(0L, "UserConfiguration::GetIgnoringCache. Hit Query. ConfigName = {0}.", configurationName); list = UserConfiguration.QueryConfigurations(folder, sorts, configurationName, UserConfigurationSearchFlags.FullString, 2, columns); } catch (InvalidOperationException innerException) { throw new InvalidOperationException(ServerStrings.ExCannotQueryAssociatedTable, innerException); } if (list.Count <= 0) { ExTraceGlobals.StorageTracer.TraceError <UserConfigurationName, UserConfigurationTypes>(0L, "UserConfiguration::GetIgnoringCache. The configuration object was not found. Name = {0}, type = {1}.", configurationName, freefetchType); throw new ObjectNotFoundException(ServerStrings.ExConfigurationNotFound(configurationName.Name)); } ExTraceGlobals.UserConfigurationTracer.TraceDebug <UserConfigurationName>(0L, "UserConfiguration::GetIgnoringCache. Find the config item and build user config object from it. ConfigName = {0}.", configurationName); bool flag = false; UserConfiguration result2; try { userConfiguration = UserConfiguration.BuildConfigurationFromQueryItem(folder, list[0], (freefetchType & UserConfigurationTypes.Dictionary) > (UserConfigurationTypes)0); if (list.Count > 1) { ExTraceGlobals.UserConfigurationTracer.TraceDebug <UserConfigurationName>(0L, "UserConfiguration::GetIgnoringCache. Found duplicate items. Conflict resolution. ConfigName = {0}.", configurationName); List <VersionedId> list2 = new List <VersionedId>(); list = UserConfiguration.QueryConfigurations(folder, sorts, configurationName, UserConfigurationSearchFlags.FullString, 100, new PropertyDefinition[0]); for (int i = 1; i < list.Count; i++) { list2.Add((VersionedId)list[i][InternalSchema.ItemId]); } if (list2.Count > 0) { AggregateOperationResult result = folder.Session.Delete(DeleteItemFlags.HardDelete, list2.ToArray()); UserConfiguration.CheckOperationResults(result, "DeleteDuplicates"); } } flag = true; result2 = userConfiguration; } finally { if (!flag && userConfiguration != null) { userConfiguration.Dispose(); } } return(result2); }