public static IObjectBuilder InitializeContainer(IWindsorContainer container)
        {
            var wob = new WindsorObjectBuilder(container.Kernel);

            container.Kernel.AddComponentInstance("kernel", typeof(IKernel), container.Kernel);
            container.Kernel.AddComponentInstance("objectBuilder", typeof(IObjectBuilder), wob);

            container.Register(
                Component.For<IObjectBuilder>()
                    .ImplementedBy<WindsorObjectBuilder>()
                    .LifeStyle.Singleton,
                // The subscription client
                Component.For<SubscriptionClient>()
                    .ImplementedBy<SubscriptionClient>()
                    .LifeStyle.Transient,
                // Message Serializers
                Component.For<BinaryMessageSerializer>()
                    .ImplementedBy<BinaryMessageSerializer>()
                    .LifeStyle.Singleton,
                Component.For<DotNotXmlMessageSerializer>()
                    .ImplementedBy<DotNotXmlMessageSerializer>()
                    .LifeStyle.Singleton,
                Component.For<XmlMessageSerializer>()
                    .ImplementedBy<XmlMessageSerializer>()
                    .LifeStyle.Singleton
                );

            ServiceBusConfigurator.Defaults(x => x.SetObjectBuilder(wob));

            return wob;
        }
示例#2
0
		private static void Main(string[] args)
		{
			_log.Info("InternalInventoryService Loading...");

			var cfg = RunnerConfigurator.New(c =>
				{
					c.SetServiceName("InternalInventoryService");
					c.SetDisplayName("Internal Inventory Service");
					c.SetDescription("Handles inventory for internal systems");

					c.RunAsLocalSystem();
					c.DependencyOnMsmq();

					c.BeforeStartingServices(a =>
						{
							var container = new DefaultMassTransitContainer("InternalInventoryService.Castle.xml");
							container.AddComponent<InventoryLevelService>();
							container.AddComponent<InternalInventoryServiceLifeCycle>(typeof (InternalInventoryServiceLifeCycle).Name);
							var wob = new WindsorObjectBuilder(container.Kernel);
							ServiceLocator.SetLocatorProvider(() => wob);
						});

					c.ConfigureService<InternalInventoryServiceLifeCycle>(typeof(InternalInventoryServiceLifeCycle).Name, s =>
						{
							s.WhenStarted(o => o.Start());
							s.WhenStopped(o => o.Stop());
						});
				});
			Runner.Host(cfg, args);
		}
        public void Externally_owned_container_should_not_be_disposed()
        {
            var fakeContainer = new FakeContainer();

            var container = new WindsorObjectBuilder(fakeContainer, false);

            container.Dispose();

            Assert.False(fakeContainer.Disposed);
        }
        public void Owned_container_should_be_disposed()
        {
            var fakeContainer = new FakeContainer();

            var container = new WindsorObjectBuilder(fakeContainer, true);

            container.Dispose();

            Assert.True(fakeContainer.Disposed);
        }
示例#5
0
 public void Should_be_able_to_resolve_base_when_child_registered_first()
 {
     using (var builder = new WindsorObjectBuilder())
     {
         var instance = new Child();
         builder.RegisterSingleton(typeof(Child), instance);
         builder.RegisterSingleton(typeof(Base), instance);
         Assert.IsNotNull(builder.Build(typeof(Child)));
         Assert.IsNotNull(builder.Build(typeof(Base)));
     }
 }
示例#6
0
        private static void Main(string[] args)
        {
            _log.Info("subscription_mgr Loading...");

            Console.WriteLine("MSMQ Subscription Service");
            var cfg = RunnerConfigurator.New(c =>
            {
                c.SetServiceName("subscription_mgr");
                c.SetDisplayName("Subscription Service");
                c.SetDescription("Coordinates subscriptions between multiple systems");
                c.DependencyOnMsmq();
                c.RunAsLocalSystem();

                c.BeforeStartingServices(s =>
                {
                    var container = new DefaultMassTransitContainer();

                    IEndpointFactory endpointFactory = EndpointFactoryConfigurator.New(e =>
                    {
                        e.SetObjectBuilder(container.Resolve <IObjectBuilder>());
                        e.RegisterTransport <MsmqEndpoint>();
                    });
                    container.Kernel.AddComponentInstance("endpointFactory", typeof(IEndpointFactory), endpointFactory);


                    _wob = new WindsorObjectBuilder(container.Kernel);
                    ServiceLocator.SetLocatorProvider(() => _wob);
                });

                c.ConfigureService <SubscriptionService>(ConfigureSubscriptionService);

                c.ConfigureService <TimeoutService>(ConfigureTimeoutService);

                c.ConfigureService <HealthService>(ConfigureHealthService);
            });

            try
            {
                Runner.Host(cfg, args);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error trying to run service: " + ex);
                Console.WriteLine("Press any key to continue...");
                Console.ReadKey();
            }
        }
示例#7
0
    public void Registering_the_same_singleton_for_different_interfaces_should_only_build_one_result_when_building_all()
    {
        using (var builder = new WindsorObjectBuilder())
        {
            var singleton = new SingletonThatImplementsToInterfaces();
            builder.RegisterSingleton(typeof(ISingleton1), singleton);
            builder.RegisterSingleton(typeof(ISingleton2), singleton);

            builder.Configure(typeof(ComponentThatDependsOnMultiSingletons), DependencyLifecycle.InstancePerCall);

            var dependency = (ComponentThatDependsOnMultiSingletons)builder.Build(typeof(ComponentThatDependsOnMultiSingletons));

            Assert.NotNull(dependency.Singleton1);
            Assert.NotNull(dependency.Singleton2);

            var builtTypes = builder.BuildAll(typeof(ISingleton1));

            Assert.AreEqual(builtTypes.Count(), 1);
        }

        //Not supported by,typeof(SpringObjectBuilder));
    }
示例#8
0
        private static void Main(string[] args)
        {
            _log.Info("SubscriptionManagerGUI Loading...");

            var cfg = RunnerConfigurator.New(x =>
            {
                x.SetServiceName("SubscriptionManagerGUI");
                x.SetDisplayName("Sample GUI Subscription Service");
                x.SetDescription("Coordinates subscriptions between multiple systems");
                x.DependencyOnMsmq();
                x.RunAsLocalSystem();
                x.UseWinFormHost <SubscriptionManagerForm>();

                x.BeforeStart(s =>
                {
                    var container = new DefaultMassTransitContainer();

                    IEndpointFactory endpointFactory = EndpointFactoryConfigurator.New(e =>
                    {
                        e.SetObjectBuilder(container.Resolve <IObjectBuilder>());
                        e.RegisterTransport <MsmqEndpoint>();
                    });
                    container.Kernel.AddComponentInstance("endpointFactory", typeof(IEndpointFactory), endpointFactory);

                    container.AddComponent <SubscriptionManagerForm>();

                    var wob = new WindsorObjectBuilder(container.Kernel);
                    ServiceLocator.SetLocatorProvider(() => wob);
                });

                x.ConfigureService <SubscriptionService>(ConfigureSubscriptionService);

                x.ConfigureService <TimeoutService>(ConfigureTimeoutService);

                x.ConfigureService <HealthService>(ConfigureHealthService);
            });

            Runner.Host(cfg, args);
        }
示例#9
0
		private static void Main(string[] args)
		{
			_log.Info("SubscriptionManagerGUI Loading...");

			var cfg = RunnerConfigurator.New(x =>
				{
					x.SetServiceName("SubscriptionManagerGUI");
					x.SetDisplayName("Sample GUI Subscription Service");
					x.SetDescription("Coordinates subscriptions between multiple systems");
					x.DependencyOnMsmq();
					x.RunAsLocalSystem();
					x.UseWinFormHost<SubscriptionManagerForm>();

					x.BeforeStartingServices(s =>
						{
							var container = new DefaultMassTransitContainer();

							IEndpointFactory endpointFactory = EndpointFactoryConfigurator.New(e =>
								{
									e.SetObjectBuilder(container.Resolve<IObjectBuilder>());
									e.RegisterTransport<MsmqEndpoint>();
								});
							container.Kernel.AddComponentInstance("endpointFactory", typeof (IEndpointFactory), endpointFactory);

							container.AddComponent<SubscriptionManagerForm>();

							var wob = new WindsorObjectBuilder(container.Kernel);
							ServiceLocator.SetLocatorProvider(() => wob);
						});

					x.ConfigureService<SubscriptionService>(typeof(SubscriptionService).Name, ConfigureSubscriptionService);

					x.ConfigureService<TimeoutService>(typeof(TimeoutService).Name, ConfigureTimeoutService);

					x.ConfigureService<HealthService>(typeof(HealthService).Name, ConfigureHealthService);
				});
			Runner.Host(cfg, args);
		}
示例#10
0
        private static void Main(string[] args)
        {
            _log.Info("subscription_mgr Loading...");

                Console.WriteLine("MSMQ Subscription Service");
                var cfg = RunnerConfigurator.New(c =>
                {
                    c.SetServiceName("subscription_mgr");
                    c.SetDisplayName("Subscription Service");
                    c.SetDescription("Coordinates subscriptions between multiple systems");
                    c.DependencyOnMsmq();
                    c.RunAsLocalSystem();

                    c.BeforeStartingServices(s =>
                    {
                        var container = new DefaultMassTransitContainer();

                        IEndpointFactory endpointFactory = EndpointFactoryConfigurator.New(e =>
                        {
                            e.SetObjectBuilder(container.Resolve<IObjectBuilder>());
                            e.RegisterTransport<MsmqEndpoint>();
                        });
                        container.Kernel.AddComponentInstance("endpointFactory", typeof(IEndpointFactory), endpointFactory);

                        _wob = new WindsorObjectBuilder(container.Kernel);
                        ServiceLocator.SetLocatorProvider(() => _wob);

                    });

                    c.ConfigureService<SubscriptionService>(ConfigureSubscriptionService);

                    c.ConfigureService<TimeoutService>(ConfigureTimeoutService);

                    c.ConfigureService<HealthService>(ConfigureHealthService);

                });
                try
                {
                    Runner.Host(cfg, args);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error trying to run service: " + ex);
                    Console.WriteLine("Press any key to continue...");
                    Console.ReadKey();
                }
        }