//- @SortAllDynamic -// public void SortAllDynamic() { if (InitProcessorDataList.Count != InitProcessorDataList.OriginalCount) { InitProcessorDataList = new InitProcessorDataList(InitProcessorDataList.OrderBy(p => p.Priority).ToList()); } if (ProcessorFactoryDataList.Count != ProcessorFactoryDataList.OriginalCount) { ProcessorFactoryDataList = new ProcessorFactoryDataList(ProcessorFactoryDataList.OrderBy(p => p.Priority).ToList()); } if (HandlerFactoryDataList.Count != HandlerFactoryDataList.OriginalCount) { HandlerFactoryDataList = new EndpointFactoryDataList(HandlerFactoryDataList.OrderBy(p => p.Priority).ToList()); } if (SelectionProcessorDataList.Count != SelectionProcessorDataList.OriginalCount) { SelectionProcessorDataList = new SelectionProcessorDataList(SelectionProcessorDataList.OrderBy(p => p.Priority).ToList()); } if (OverrideProcessorDataList.Count != OverrideProcessorDataList.OriginalCount) { OverrideProcessorDataList = new OverrideProcessorDataList(OverrideProcessorDataList.OrderBy(p => p.Priority).ToList()); } if (StateProcessorDataList.Count != StateProcessorDataList.OriginalCount) { StateProcessorDataList = new StateProcessorDataList(StateProcessorDataList.OrderBy(p => p.Priority).ToList()); } if (PostRenderProcessorDataList.Count != PostRenderProcessorDataList.OriginalCount) { PostRenderProcessorDataList = new PostRenderProcessorDataList(PostRenderProcessorDataList.OrderBy(p => p.Priority).ToList()); } }
//+ //- ~RunInitProcessing -// internal static void RunInitProcessing(HttpContext context, InitProcessorDataList initProcessorDataList) { if (initProcessorDataList.Count == 0) { return; } foreach (ProcessorData data in initProcessorDataList.OrderBy(p => p.Priority)) { String processorType = data.ProcessorType; //+ ProcessorReaderWriterLockSlim.EnterUpgradeableReadLock(); try { InitProcessor processor = null; //+ if (!RouteCache.ProcessorCache.ContainsKey(processorType)) { ProcessorReaderWriterLockSlim.EnterWriteLock(); //+ try { if (!RouteCache.ProcessorCache.ContainsKey(processorType)) { processor = ProcessorActivator.Create<InitProcessor>(processorType, RouteCache.ProcessorFactoryCache); if (processor == null) { throw new EntityNotFoundException(String.Format(Resource.General_NotFound, processorType)); } RouteCache.ProcessorCache.Add(processorType, processor); } } finally { ProcessorReaderWriterLockSlim.ExitWriteLock(); } } if (processor == null) { processor = RouteCache.ProcessorCache.Get<InitProcessor>(processorType); } //+ if (processor != null) { //+ chain do { if (processor.IsChained) { processor.Initialize(HttpContext.Current, null); } else { processor.Initialize(HttpContext.Current, data.ParameterArray); } processor = processor.Execute(); if (processor != null) { processor.IsChained = true; } } while (processor != null); } } catch (Exception ex) { if (WebProcessingReportController.Reporter.Initialized) { var map = new Map(); map.Add("Section", "InitProcessor"); map.Add("Type", processorType); map.Add("Message", ex.Message); map.Add("Exception Type", ex.GetType().FullName); //+ WebProcessingReportController.Reporter.AddMap(map); } } finally { ProcessorReaderWriterLockSlim.ExitUpgradeableReadLock(); } } }