CK.RouteConfig.Impl.RouteResolver.RouteResolver C# (CSharp) Method

RouteResolver() public method

public RouteResolver ( IActivityMonitor monitor, RouteConfiguration c ) : System
monitor IActivityMonitor
c RouteConfiguration
return System
        public RouteResolver( IActivityMonitor monitor, RouteConfiguration c )
        {
            try
            {
                using( monitor.OpenGroup( LogLevel.Info, c.Name.Length > 0 ? string.Format( "Resolving root configuration (name is '{0}').", c.Name ) : "Resolving root configuration.", null ) )
                {
                    ProtoResolver protoResolver = new ProtoResolver( monitor, c );
                    NamedSubRoutes = new Dictionary<string, SubRouteConfigurationResolved>();
                    using( monitor.OpenGroup( LogLevel.Info, "Building final routes.", null ) )
                    {
                        var preRoot = new PreRoute( monitor, protoResolver.Root );
                        Root = new RouteConfigurationResolved( protoResolver.Root.FullName, c.ConfigData, preRoot.FinalizeActions() );
                        foreach( IProtoSubRoute sub in protoResolver.NamedSubRoutes.Values )
                        {
                            var preRoute = new PreRoute( monitor, sub );
                            NamedSubRoutes.Add( sub.FullName, new SubRouteConfigurationResolved( sub, preRoute.FinalizeActions() ) );
                        }
                        Root.SubRoutes = protoResolver.Root.SubRoutes.Select( p => NamedSubRoutes[p.FullName] ).ToArray();
                        foreach( IProtoSubRoute sub in protoResolver.NamedSubRoutes.Values )
                        {
                            NamedSubRoutes[sub.FullName].SubRoutes = sub.SubRoutes.Select( p => NamedSubRoutes[p.FullName] ).ToArray();
                        }
                    }
                }
            }
            catch( Exception ex )
            {
                monitor.SendLine( LogLevel.Fatal, null, ex );
            }
        }
    }
RouteResolver