public void HandlerSelector_HasDefault() { var windsor = new Castle.Windsor.WindsorContainer(); windsor.Register(Component.For <TestMain2>().LifeStyle.Transient); Assert.IsFalse(windsor.Resolve <TestMain2>().Resolved); var h = new TestHandlerSelector_HasDefault(); windsor.Kernel.AddHandlerSelector(h); //原始默认组件 windsor.Register(Component.For <ITest>().ImplementedBy <Test1>()); //新组件 windsor.Register(Component.For <ITest>().ImplementedBy <Test2>()); //通过HandlerSelector启用新组件为默认组件 h.Enable = true; Assert.IsTrue(windsor.Resolve <TestMain2>().Resolved); Assert.IsInstanceOf <Test2>(windsor.Resolve <TestMain2>().Dependency); //通过HandlerSelector取消新组件 h.Enable = false; Assert.IsTrue(windsor.Resolve <TestMain2>().Resolved); //切换回原默认组件 Assert.IsInstanceOf <Test1>(windsor.Resolve <TestMain2>().Dependency); }
public void ConstructorDependency() { var windsor = new Castle.Windsor.WindsorContainer(); windsor.Register(Component.For<TestMain1>().LifeStyle.Transient); Assert.IsFalse(windsor.Resolve<TestMain1>().Resolved); windsor.Register(Component.For<ITest>().ImplementedBy<Test1>()); Assert.IsTrue(windsor.Resolve<TestMain1>().Resolved); }
public void ConstructorDependency() { var windsor = new Castle.Windsor.WindsorContainer(); windsor.Register(Component.For <TestMain1>().LifeStyle.Transient); Assert.IsFalse(windsor.Resolve <TestMain1>().Resolved); windsor.Register(Component.For <ITest>().ImplementedBy <Test1>()); Assert.IsTrue(windsor.Resolve <TestMain1>().Resolved); }
public void HandlerSelector() { var windsor = new Castle.Windsor.WindsorContainer(); ServiceFramework.Configuration.Configure().Castle(windsor).Endpoint(); var c = (ServiceFramework.Configuration.Instance() as ConfigurationWithCastle).WindsorContainer; windsor.Resolve <RemoteServiceInterceptor>(); Assert.Throws(typeof(Castle.MicroKernel.Handlers.HandlerException) , () => windsor.Resolve <CodeSharp.ServiceFramework.Castles.WindsorContainer.RemovedInterceptor>()); //首次依赖不满足 windsor.Register(Component.For <TestMain2>().LifeStyle.Transient); Assert.IsFalse(windsor.Resolve <TestMain2>().Resolved); //注册远程组件 c.RegisterRemoteServices(typeof(ITest)); Assert.IsTrue(windsor.Resolve <TestMain2>().Resolved); //卸载远程组件 c.ClearRemoteServices(typeof(ITest)); Assert.IsFalse(windsor.Resolve <TestMain2>().Resolved); //本地实现注册 windsor.Register(Component.For <ITest>().ImplementedBy <Test1>().IsDefault()); Assert.IsTrue(windsor.Resolve <TestMain2>().Resolved); Assert.IsInstanceOf <Test1>(windsor.Resolve <TestMain2>().Dependency); //重新注册远程组件 c.RegisterRemoteServices(typeof(ITest)); Assert.IsTrue(windsor.Resolve <TestMain2>().Resolved); Assert.IsNotInstanceOf <Test1>(windsor.Resolve <TestMain2>().Dependency); }
public void IsDefault() { var windsor = new Castle.Windsor.WindsorContainer(); windsor.Register(Component.For <ITest>().ImplementedBy <Test1>()); Assert.IsInstanceOf <Test1>(windsor.Resolve <ITest>()); windsor.Register(Component.For <ITest>().ImplementedBy <Test2>().IsDefault()); Assert.IsInstanceOf <Test2>(windsor.Resolve <ITest>()); //不支持注册Null Assert.Throws(typeof(ArgumentNullException), () => windsor.Register(Component.For <ITest>().Instance(null).IsDefault())); //覆盖默认组件为“没有设置proxy” //非法的注册总是导致失败 windsor.Register(Component.For <ITest>().IsDefault()); Assert.Throws(typeof(Castle.MicroKernel.ComponentRegistrationException), () => windsor.Resolve <ITest>()); }
public static void TestTask(string serializedTaskFile) { string json = null; using (var sr = new StreamReader(serializedTaskFile, Encoding.UTF8)) { json = sr.ReadToEnd(); } var tsk = JsonConvert.DeserializeObject<ScheduledTask>(json); var st = new JobScheduler.SchedTask { Id = tsk.Id, NextTrigger = DateTime.Now, TaskData = tsk }; var wc = new Castle.Windsor.WindsorContainer(); ServiceConfigurator.Begin(wc) .FinishConfiguration(); wc.Resolve<JobScheduler>().RunTask(st); }
public static void TestJob(string jobId) { var wc = new Castle.Windsor.WindsorContainer(); ServiceConfigurator.Begin(wc) .FinishConfiguration(); var js = wc.Resolve<JobScheduler>(); js.TestJobId = jobId; foreach (var st in wc.ResolveAll<NGinnBPM.MessageBus.Impl.IStartableService>()) { st.Start(); } Console.WriteLine("Testing job {0}. Hit enter to stop", jobId); Console.ReadLine(); foreach (var st in wc.ResolveAll<NGinnBPM.MessageBus.Impl.IStartableService>()) { st.Stop(); } wc.Dispose(); }
public void HandlerSelector() { var windsor = new Castle.Windsor.WindsorContainer(); ServiceFramework.Configuration.Configure().Castle(windsor).Endpoint(); var c = (ServiceFramework.Configuration.Instance() as ConfigurationWithCastle).WindsorContainer; windsor.Resolve<RemoteServiceInterceptor>(); Assert.Throws(typeof(Castle.MicroKernel.Handlers.HandlerException) , () => windsor.Resolve<CodeSharp.ServiceFramework.Castles.WindsorContainer.RemovedInterceptor>()); //首次依赖不满足 windsor.Register(Component.For<TestMain2>().LifeStyle.Transient); Assert.IsFalse(windsor.Resolve<TestMain2>().Resolved); //注册远程组件 c.RegisterRemoteServices(typeof(ITest)); Assert.IsTrue(windsor.Resolve<TestMain2>().Resolved); //卸载远程组件 c.ClearRemoteServices(typeof(ITest)); Assert.IsFalse(windsor.Resolve<TestMain2>().Resolved); //本地实现注册 windsor.Register(Component.For<ITest>().ImplementedBy<Test1>().IsDefault()); Assert.IsTrue(windsor.Resolve<TestMain2>().Resolved); Assert.IsInstanceOf<Test1>(windsor.Resolve<TestMain2>().Dependency); //重新注册远程组件 c.RegisterRemoteServices(typeof(ITest)); Assert.IsTrue(windsor.Resolve<TestMain2>().Resolved); Assert.IsNotInstanceOf<Test1>(windsor.Resolve<TestMain2>().Dependency); }
public void IsDefault() { var windsor = new Castle.Windsor.WindsorContainer(); windsor.Register(Component.For<ITest>().ImplementedBy<Test1>()); Assert.IsInstanceOf<Test1>(windsor.Resolve<ITest>()); windsor.Register(Component.For<ITest>().ImplementedBy<Test2>().IsDefault()); Assert.IsInstanceOf<Test2>(windsor.Resolve<ITest>()); //不支持注册Null Assert.Throws(typeof(ArgumentNullException), () => windsor.Register(Component.For<ITest>().Instance(null).IsDefault())); //覆盖默认组件为“没有设置proxy” //非法的注册总是导致失败 windsor.Register(Component.For<ITest>().IsDefault()); Assert.Throws(typeof(Castle.MicroKernel.ComponentRegistrationException), () => windsor.Resolve<ITest>()); }
public void HandlerSelector_HasDefault() { var windsor = new Castle.Windsor.WindsorContainer(); windsor.Register(Component.For<TestMain2>().LifeStyle.Transient); Assert.IsFalse(windsor.Resolve<TestMain2>().Resolved); var h = new TestHandlerSelector_HasDefault(); windsor.Kernel.AddHandlerSelector(h); //原始默认组件 windsor.Register(Component.For<ITest>().ImplementedBy<Test1>()); //新组件 windsor.Register(Component.For<ITest>().ImplementedBy<Test2>()); //通过HandlerSelector启用新组件为默认组件 h.Enable = true; Assert.IsTrue(windsor.Resolve<TestMain2>().Resolved); Assert.IsInstanceOf<Test2>(windsor.Resolve<TestMain2>().Dependency); //通过HandlerSelector取消新组件 h.Enable = false; Assert.IsTrue(windsor.Resolve<TestMain2>().Resolved); //切换回原默认组件 Assert.IsInstanceOf<Test1>(windsor.Resolve<TestMain2>().Dependency); }
/// <summary> /// main entry point of the application /// </summary> /// <param name="args"></param> static void Main(string[] args) { //setup Dependency Container SetupContainer(); //register Dependencies RegisterComponents(); int exitCode = 0x0; try { var cmdCollection = _container.Resolve <SpreadsheetCmdCollection>(); var sheetPrinter = _container.Resolve <ISheetPrinter>(); //variable that hold the current sheet ISheet currentSheet = null; while (true) { Console.Write("enter command:"); //extract a series of parameters in user input with a space separator //format of the command line: <command key> <param1> <param2> <param3> ... //e.g. N 5 6 string[] input = Console.ReadLine().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); //command key is the first parameter string cmdKey = input.Length > 0 ? input[0] : ""; if (cmdKey.Equals("Q")) { //break the loop amd end this application break; } //the subsequent parameters will be used as command arguments string[] cmdArgs = input.Length > 1 ? input.Skip(1).ToArray() : new string[] { }; //start matching the command key with the registered commands if (cmdCollection.CommandCollection.ContainsKey(cmdKey)) { var cmd = cmdCollection.CommandCollection[cmdKey]; var result = cmd.Execute(currentSheet, cmdArgs); if (result.Success) { currentSheet = result.Spreadsheet; sheetPrinter.PrintContent(currentSheet, Console.Out); } else { Console.WriteLine(result.ErrorMessage); } } else { Console.WriteLine("Invalid Command"); } } } catch (Exception ex) { //unexpected error goes to here exitCode = ex.HResult; } finally { //set exit code Environment.ExitCode = exitCode; //dispose dependencies _container.Dispose(); } }
/// <summary> /// Fires when the windows service starts. /// </summary> /// <param name="args">The arguments passed, if any.</param> protected override void OnStart(string[] args) { LoggerContainer.Instance.Info("Cache Host is starting", "Cache Host is starting"); // Configure the thread pool's minimum threads ThreadPool.SetMinThreads(128, 128); LoggerContainer.Instance.Info("Cache Host is starting", "Verifying settings"); try { IWindsorContainer container = new Castle.Windsor.WindsorContainer(); // Initialize the mem cache container instance var physicalMemoryLimitPercentage = CacheHostConfigurationSection.Settings.CacheMemoryLimitPercentage; var cacheConfig = new NameValueCollection(); cacheConfig.Add("pollingInterval", "00:00:15"); cacheConfig.Add("physicalMemoryLimitPercentage", physicalMemoryLimitPercentage.ToString()); // Initialize the client to cache service host ServiceHost clientToCacheServiceHost = SetupServiceHost(); Uri serviceHostAddress = clientToCacheServiceHost.Description.Endpoints.First().Address.Uri; container.Install(new MemcacheInstaller(string.Format("{0}_{1}", serviceHostAddress.Host, serviceHostAddress.Port), false)); CustomPerformanceCounterManagerContainer.Instance = container.Resolve<CustomPerformanceCounterManager>(); IMemCache memCache = container.Resolve<IMemCache>(new { cacheName = "Dache", cacheConfig = cacheConfig }); // Initialize the cache host information poller var cacheHostInformationPoller = new CacheHostInformationPoller(1000); // Instantiate the cache host engine _cacheHostEngine = new CacheHostEngine(cacheHostInformationPoller, memCache, clientToCacheServiceHost); } catch (Exception ex) { // The inner exception has the actual details of the configuration error if (ex.InnerException != null && ex.InnerException.Message != null && ex.InnerException.Message.StartsWith("The value for the property", StringComparison.OrdinalIgnoreCase)) { ex = ex.InnerException; } // Log the error LoggerContainer.Instance.Error("Cache Host failed to start", ex.Message); // Stop the service Stop(); } LoggerContainer.Instance.Info("Cache Host is starting", "Settings verified successfully"); _cacheHostEngine.Start(); }
public void Setup() { IWindsorContainer container = new Castle.Windsor.WindsorContainer(); container.Install(new MemcacheInstaller("Dache_Test",false)); _memCache = container.Resolve<IMemCache>(new { cacheName = TestName, cacheConfig = Config }); }