CK.RouteConfig.RouteConfiguration.Resolve C# (CSharp) Method

Resolve() public method

Attempts to resolve the configuration. Null if an error occurred.
public Resolve ( IActivityMonitor monitor ) : RouteConfigurationResult
monitor IActivityMonitor Monitor to use. Must not be null.
return RouteConfigurationResult
        public RouteConfigurationResult Resolve( IActivityMonitor monitor )
        {
            if( monitor == null ) throw new ArgumentNullException( "monitor" );
            RouteConfigurationResult result;
            bool hasError = false;
            using( monitor.OnError( () => hasError = true ) )
            {
                var r = new RouteResolver( monitor, this );
                result = new RouteConfigurationResult( r.Root, r.NamedSubRoutes );
            }
            return hasError ? null : result;
        }

Usage Example

        public void RoutesAndActions()
        {
            RouteConfiguration c = 
                new RouteConfiguration()
                    .AddAction(
                        new ActionSequenceConfiguration( "FirstGroup" )
                            .AddAction( new TestActionConfiguration( "Sink1" ) )
                            .AddAction( new TestActionConfiguration( "Sink2" ) )
                            .AddAction( new ActionParallelConfiguration( "Parallel n°1" )
                                .AddAction( new TestActionConfiguration( "Sink3" ) )
                                .AddAction( new TestActionConfiguration( "Sink4" ) ) )
                            .AddAction( new ActionParallelConfiguration( "Parallel n°2" )
                                .AddAction( new TestActionConfiguration( "Sink3" ) )
                                .AddAction( new TestActionConfiguration( "Sink4" ) ) ) )
                    .AddAction( new TestActionConfiguration( "SecondGlobal" ) )
                    .DeclareRoute(
                        new SubRouteConfiguration( "CKTask", name => name.StartsWith( "CKTask:" ) )
                            .AddAction( new TestActionConfiguration( "TaskSink" ) ) 
                            .RemoveAction( "SecondGlobal" ) )
                    .AddAction( new TestActionConfiguration( "ForAllExceptCKTask" ) )
                    .DeclareRoute(
                        new SubRouteConfiguration( "Request", name => name.Contains( "/request/" ) )
                            .RemoveAction( "FirstGroup" )
                            .AddAction( new TestActionConfiguration( "RequestSink" ) )
                            .AddAction( new TestActionConfiguration( "AnotherRequestSink" ) )
                            .DeclareRoute(
                                new SubRouteConfiguration( "NoBugInRequest", name => name.Contains( "/BugFree/" ) ) { ImportParentActions = false } ) );
            
            var resolved = c.Resolve( TestHelper.ConsoleMonitor );
            Assert.That( resolved, Is.Not.Null );
            Assert.That( resolved.AllSubRoutes.Count, Is.EqualTo( 3 ) );

            var root = resolved.Root;
            Assert.That( root, Is.Not.Null );
            Assert.That( root.ActionsResolved, Is.Not.Null.And.Count.EqualTo( 3 ) );

            var ckTask = resolved.FindSubRouteByName( "CKTask" );
            Assert.That( ckTask, Is.Not.Null );
            Assert.That( ckTask.ActionsResolved, Is.Not.Null.And.Count.EqualTo( 2 ) );
            
            var request = resolved.FindSubRouteByName( "Request" );
            Assert.That( request, Is.Not.Null );
            Assert.That( request.ActionsResolved, Is.Not.Null.And.Count.EqualTo( 4 ) );

            var noBug = resolved.FindSubRouteByName( "NoBugInRequest" );
            Assert.That( noBug, Is.Not.Null );
            Assert.That( noBug.ActionsResolved, Is.Not.Null.And.Count.EqualTo( 0 ) );

        }
All Usage Examples Of CK.RouteConfig.RouteConfiguration::Resolve