internal UserIdentityLookupService(Configuration configuration, AddinManagementService addinManagementService) { UserIdentityMappings userIdentityMappingsConfig = configuration.SessionGroup.UserIdentityMappings; MigrationSourcesElement migrationSourcesConfig = configuration.SessionGroup.MigrationSources; m_mappingAlgorithmPool = new UserIdMappingAlgorithmPool(configuration.SessionGroup.UserIdentityMappings, configuration.SessionGroup.Sessions.Session); m_lookupConfiguration = new UserIdLookupConfiguration(configuration.SessionGroup.UserIdentityMappings.EnableValidation, configuration.SessionGroup.MigrationSources); m_serviceIsConfigured = (userIdentityMappingsConfig.UserMappings.Count != 0 || userIdentityMappingsConfig.DisplayNameMappings.Count != 0 || userIdentityMappingsConfig.AliasMappings.Count != 0 || userIdentityMappingsConfig.DomainMappings.Count != 0 ); m_addinManagementService = addinManagementService; foreach (AddinElement addinElem in configuration.Addins.Addin) { Guid addinRefName = new Guid(addinElem.ReferenceName); IAddin addin = m_addinManagementService.GetAddin(addinRefName); if (null != addin) { var userLookupProvider = addin.GetService(typeof(IUserIdentityLookupServiceProvider)) as IUserIdentityLookupServiceProvider; if (null != userLookupProvider) { this.RegisterLookupServiceProvider(addin.ReferenceName, userLookupProvider); } } } }
public UserIdLookupConfiguration( bool userIdLookupEnabled, MigrationSourcesElement migrationSourcesConfig) { m_lookupIsEnabled = userIdLookupEnabled; // configuration needed for static user id mapping foreach (MigrationSource migrSrcConfig in migrationSourcesConfig.MigrationSource) { Guid migrationSourceId = new Guid(migrSrcConfig.InternalUniqueId); UserIdPropertyNameEnum userIdPropName = migrSrcConfig.Settings.DefaultUserIdProperty.UserIdPropertyName; m_perMigratinSourceDefaultUserIdPropertyName[migrationSourceId] = userIdPropName; } if (m_lookupIsEnabled) { // configuration needed for runtime lookup // Dictionary<MigrationSourceId, Dictionary<AddinRefName, List<Addins>>> Dictionary <Guid, Dictionary <Guid, LookupAddin> > configuredAddins = new Dictionary <Guid, Dictionary <Guid, LookupAddin> >(); foreach (MigrationSource migrSrcConfig in migrationSourcesConfig.MigrationSource) { Guid migrationSourceId = new Guid(migrSrcConfig.InternalUniqueId); if (!configuredAddins.ContainsKey(migrationSourceId)) { configuredAddins.Add(migrationSourceId, new Dictionary <Guid, LookupAddin>()); } foreach (LookupAddin addin in migrSrcConfig.Settings.UserIdentityLookup.LookupAddin) { if (configuredAddins[migrationSourceId].ContainsKey(addin.ReferenceNameGuid)) { configuredAddins[migrationSourceId].Add(addin.ReferenceNameGuid, addin); } } UserIdPropertyNameEnum userIdPropName = migrSrcConfig.Settings.DefaultUserIdProperty.UserIdPropertyName; m_perMigratinSourceDefaultUserIdPropertyName[migrationSourceId] = userIdPropName; } foreach (var addins in configuredAddins) { LookupAddin[] perMigrSrcAddins = addins.Value.Values.ToArray(); Array.Sort(perMigrSrcAddins, new LookupAddinPrecedenceComparer()); Guid[] providerRefNames = new Guid[perMigrSrcAddins.Length]; for (int i = 0; i < perMigrSrcAddins.Length; ++i) { providerRefNames[i] = perMigrSrcAddins[i].ReferenceNameGuid; } m_perMigrationSourceSortedLookupProviderRefName.Add(addins.Key, providerRefNames); } } }