//- ~LoadEndpointData -// internal static void LoadEndpointData(WebDomainData data, EndpointCollection collection) { List<EndpointElement> elementList = collection.ToList(); var matchTextList = new List<String>(); var referenceKeyList = new List<String>(); if (collection.Count(p => p.Text == "*") > 1) { throw new ConfigurationErrorsException(ResourceAccessor.GetString("WebDomain_DuplicateCatchAll")); } foreach (EndpointElement element in elementList) { if (element.Disabled) { continue; } String matchText = element.Text; Boolean requireSlash = element.RequireSlash; String withoutSlash = EndpointData.GetTextWithoutSlash(matchText); SelectorType matchType = element.Selector; String originalMatchText = matchText; EndpointData newElement = AdjustMatchType(element.Text); if (newElement != null) { matchText = newElement.Text; matchType = newElement.Selector; } matchTextList.Add(matchText); if (element.Text == "*") { data.CatchAllEndpoint = new EndpointData { AccessRuleGroup = element.AccessRuleGroup, OriginalMatchText = originalMatchText, Text = matchText, TextWithoutSlash = withoutSlash, Selector = matchType, Type = element.Type, ParameterValue = element.Parameter, ParameterMap = element.GetParameterMap(), Source = Info.System }; } else { var endpointData = new EndpointData { AccessRuleGroup = element.AccessRuleGroup, OriginalMatchText = originalMatchText, Text = matchText, TextWithoutSlash = withoutSlash, Selector = matchType, Type = element.Type, RequireSlash = element.RequireSlash, ParameterValue = element.Parameter, ParameterMap = element.GetParameterMap(), Source = Info.System }; endpointData.SubEndpointDataList = new EndpointDataList(); foreach (EndpointElement subElement in element.SubEndpoints) { String subWithoutSlash = EndpointData.GetTextWithoutSlash(matchText); endpointData.SubEndpointDataList.Add(new EndpointData { Text = subElement.Text, TextWithoutSlash = subWithoutSlash, Selector = subElement.Selector, Type = subElement.Type, ParameterValue = subElement.Parameter, ParameterMap = subElement.GetParameterMap(), Source = Info.System }); } data.EndpointDataList.Add(endpointData); } } EndpointDataList handlerList = data.EndpointDataList.Clone(); data.EndpointDataList = new EndpointDataList(); handlerList.Where(p => p.Selector == SelectorType.PathEquals).OrderByDescending(p => p.Text.Length).ToList().ForEach(p => data.EndpointDataList.Add(p)); handlerList.Where(p => p.Selector == SelectorType.EndsWith).OrderByDescending(p => p.Text.Length).ToList().ForEach(p => data.EndpointDataList.Add(p)); handlerList.Where(p => p.Selector == SelectorType.WebDomainPathStartsWith).OrderByDescending(p => p.Text.Length).ToList().ForEach(p => data.EndpointDataList.Add(p)); handlerList.Where(p => p.Selector == SelectorType.WebDomainPathEquals).OrderByDescending(p => p.Text.Length).ToList().ForEach(p => data.EndpointDataList.Add(p)); handlerList.Where(p => p.Selector == SelectorType.PathStartsWith).OrderByDescending(p => p.Text.Length).ToList().ForEach(p => data.EndpointDataList.Add(p)); handlerList.Where(p => p.Selector == SelectorType.StartsWith).OrderByDescending(p => p.Text.Length).ToList().ForEach(p => data.EndpointDataList.Add(p)); handlerList.Where(p => p.Selector == SelectorType.PathContains).OrderByDescending(p => p.Text.Length).ToList().ForEach(p => data.EndpointDataList.Add(p)); handlerList.Where(p => p.Selector == SelectorType.Contains).OrderByDescending(p => p.Text.Length).ToList().ForEach(p => data.EndpointDataList.Add(p)); //+ data.EndpointDataList.OriginalCount = data.EndpointDataList.Count; }