/// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main(string[] args)
        {
            Bootstrap = new Bootstrap();
            Shell = new Shell();
            var unprocessed = Shell.ProcessArguments(args, Bootstrap.Container, typeof(TopLevelCommands));

            if (unprocessed.Length > 0)
            {
                log.Warn("Unprocessed arguments: "+string.Join(", ", unprocessed));
            }

            //simple console wait
            if (args.Length == 0)
            {
                InitComponents();
                ProcessLock.LockByKey();
                DisposeComponents();
            }
            else if(Shell.IsShellEnabled)
            {
                InitComponents();
                Shell.StartLineEditor();
                DisposeComponents();
            }
            Bootstrap.Dispose();
        }
		public void BootstrapTest() {
            using (var bootStrap = new Bootstrap())
            {
                IContainer container = bootStrap.Container;
                Assert.IsNotNull(container);

                var testRepo = container.Resolve<TestRepository>();
                testRepo.Test();
            }
		}
 public void TestDbConnection()
 {
     using (var bootstrap = new Bootstrap())
     {
         var test = new TestEntity() { Name = "dbentry" };
         IContainer container = bootstrap.Container;
         var repo = container.Resolve<TestRepository>();
         repo.Save(test);
     }
 }
        public void AutofacConfigListTest()
        {
            using (var bootstrap = new Bootstrap())
            {
                IContainer container = bootstrap.Container;
                var listc = container.Resolve<TestListInput>();

                Assert.AreEqual(3, listc.PropTest.Count);
                Assert.AreEqual(3, listc.CtorPropTest.Count);
            }
            
        }
        public void ExpresionBuilderTest()
        {
            using (var bootstrap = new Bootstrap())
            {
                IContainer container = bootstrap.Container;
                var eval = container.Resolve<NHibernateBoxQueryEvaluator>();

                var query = new BoxQuery<TestEntity>();
                var el = query.Where(x => x.Name!="test").SerializeQuery();

                //var e = eval.EvaluateList(el);
                //var maps = (IList<TestEntityBoxMap>)e.MappedList;
                //query.Execute(e.Expression);
            }
        }
        public void TestUpdateFromAnotherContainer()
        {
            var test = new TestEntity() { Name = "zzz" };
            using (var bootstrap = new Bootstrap())
            {
                IContainer container = bootstrap.Container;
                var repo = container.Resolve<TestRepository>();
                repo.Save(test);
            }
            using (var bootstrap = new Bootstrap())
            {
                var container = bootstrap.Container;
                var repo = container.Resolve<TestRepository>();

                repo.Delete(test);

                test = new TestEntity() { Name = "zzz" };
                repo.Save(test);
            }
        }
        public void ContextReloadTest()
        {
            using (var bootstrap = new Bootstrap())
            {
                var container = bootstrap.Container;
                var tree = container.Resolve<TaxonomyTree>();
                tree.Root.GetOrAddChild("zzz","");
                tree.Root.GetOrAddChild("zzz2",null);

                container = bootstrap.Container;
                tree = container.Resolve<TaxonomyTree>();
                tree.Root.GetOrAddChild("rrr",null);
                tree.Root["zzz"].Remove();
                tree.Root["zzz2"].Remove();
                tree.Root.GetOrAddChild("zzz",null);
            }

            Action<IContainer> testRel = (container) =>
            {
                var rel = container.Resolve<RelationService>();
                var tree = container.Resolve<TaxonomyTree>();
                if (tree.Find("zzz1").Count == 0)
                {
                    tree.Root.GetOrAddChild("zzz", "zzz");
                    tree.Root.GetOrAddChild("zzz1", "zzz1");

                    rel.AddRelation(tree.Root["zzz"], tree.Root["zzz1"], RelationDirection.Both);
                }
                else
                {
                    tree.Root["zzz1"].Remove();
                    tree.Root.AddChild("zzz2", null);
                    rel.AddRelation(tree.Root["zzz"], tree.Root["zzz2"], RelationDirection.Both);
                }
            };
            using (var bootstrap = new Bootstrap())
            {
                testRel(bootstrap.Container);
            }
        }
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main(string[] args)
        {
            Bootstrap = new Bootstrap();
            Shell = new Shell();
            var unprocessed = Shell.ProcessArguments(args, Bootstrap.Container, typeof(TopLevelCommands));

            if (unprocessed.Length > 0)
            {
                //var noServiceFlag = unprocessed.Where(x => x.Contains("no"));
                //if (noServiceFlag.Count()>0)
                //{
                //    unprocessed = unprocessed.Where(x => !noServiceFlag.Contains(x)).ToArray();
                //}
                if (unprocessed.Length > 0)
                {
                    log.Warn("Unprocessed arguments: " + string.Join(", ", unprocessed));
                }
            }

            //Bootstrap.Container.Resolve<PerformanceCountersTracker>().Start(
            //    TimeSpan.FromSeconds(10), "Performance");

            //simple console wait));)
            if (args.Length == 0)
            {
                InitComponents();
                ProcessLock.LockByKey();
                DisposeComponents();
            }
            else if (Shell.IsShellEnabled)
            {
                Shell.StartLineEditor();
            }
            Bootstrap.Dispose();

            //ProcessLock.LockByLine();
        }
 public void InitBootstrap()
 {
     bootstrap = new Bootstrap();
     Container = bootstrap.Container;
 }