public void DictionaryWithDifferentValueTypes()
        {
            var config = new MutableConfiguration("dictionary");

            config.CreateChild("entry")
            .Attribute("key", "intentry")
            .Attribute("valueType", "System.Int32, mscorlib")
            .Value = "123";

            config.CreateChild("entry")
            .Attribute("key", "values")
            .Attribute("valueType", "System.Int32[], mscorlib")
            .CreateChild("array")
            .Attribute("type", "System.Int32, mscorlib")
            .CreateChild("item", "400");

            var dict =
                (IDictionary)converter.PerformConversion(config, typeof(IDictionary));

            Assert.IsNotNull(dict);

            Assert.AreEqual(123, dict["intentry"]);
            var values = (int[])dict["values"];

            Assert.IsNotNull(values);
            Assert.AreEqual(1, values.Length);
            Assert.AreEqual(400, values[0]);
        }
Пример #2
0
        public IConfiguration ToIConfiguration()
        {
            var config = new MutableConfiguration("rhino.esb");

            var busConfig = config.CreateChild("bus")
                            .Attribute("endpoint", Endpoint)
                            .Attribute("threadCount", ThreadCount.ToString())
                            .Attribute("numberOfRetries", NumberOfRetries.ToString());

            if (string.IsNullOrEmpty(Name) == false)
            {
                busConfig.Attribute("name", Name);
            }

            if (string.IsNullOrEmpty(LoadBalancerEndpoint) == false)
            {
                busConfig.Attribute("loadBalancerEndpoint", LoadBalancerEndpoint);
            }

            if (string.IsNullOrEmpty(LogEndpoint) == false)
            {
                busConfig.Attribute("logEndpoint", LogEndpoint);
            }

            var messagesConfig = config.CreateChild("messages");

            foreach (var message in Messages)
            {
                messagesConfig.CreateChild("add")
                .Attribute("name", message.Key)
                .Attribute("endpoint", message.Value);
            }

            return(config);
        }
        public void TriggerListeners()
        {
            using (var c = new WindsorContainer())
            {
                var config = new MutableConfiguration("facility");
                config.CreateChild("quartz").CreateChild("item", "qwe").Attribute("key", "qq");
                var listenerConfig = config.CreateChild("triggerListeners");
                listenerConfig
                .CreateChild("job")
                .Attribute("name", "someJob")
                .CreateChild("listener", "${trigli}");
                c.Kernel.ConfigurationStore.AddFacilityConfiguration("quartz", config);

                c.Register(Component.For <ITriggerListener>().ImplementedBy <SomeTriggerListener>().Named("trigli"));
                c.AddFacility("quartz", new QuartzFacility());

                var scheduler = (QuartzNetScheduler)c.Resolve <IScheduler>();
                foreach (var l in scheduler.ListenerManager.GetTriggerListeners())
                {
                    Console.WriteLine(l);
                }
                var trigli =
                    scheduler.ListenerManager.GetTriggerListener(typeof(SomeTriggerListener).AssemblyQualifiedName);
                Assert.IsNotNull(trigli);
            }
        }
Пример #4
0
 public void GlobalJobListeners_with_no_registration_throws()
 {
     using (var c = new WindsorContainer()) {
         var config = new MutableConfiguration("facility");
         config.CreateChild("quartz").CreateChild("item", "qwe").Attribute("key", "qq");
         config.CreateChild("globalJobListeners").CreateChild("item", "${jobli}");
         c.Kernel.ConfigurationStore.AddFacilityConfiguration("quartz", config);
         c.AddFacility("quartz", new QuartzFacility());
         c.Resolve <IScheduler>();
     }
 }
        public void DisposableJobIsDisposed()
        {
            using (var c = new WindsorContainer())
            {
                c.Register(Component.For <DisposableJob>().LifeStyle.Transient);
                var config = new MutableConfiguration("facility");
                config.CreateChild("quartz");
                c.Kernel.ConfigurationStore.AddFacilityConfiguration("quartz", config);

                c.AddFacility("quartz", new QuartzFacility());

                var scheduler = c.Resolve <IScheduler>();
                var jobDetail = JobBuilder.Create <DisposableJob>().WithIdentity("somejob").Build();
                var trigger   = TriggerBuilder.Create().WithIdentity("sometrigger").WithSimpleSchedule(s => s.WithIntervalInSeconds(1)).Build();

                var task = scheduler.ScheduleJob(jobDetail, trigger);
                task.Wait();
                var dateTimeOffset = task.Result;

                Assert.IsFalse(DisposableJob.Disposed);
                scheduler.Start();
                Thread.Sleep(1000);
                Assert.IsTrue(DisposableJob.Disposed);
            }
        }
Пример #6
0
 public void GlobalJobListeners()
 {
     using (var c = new WindsorContainer()) {
         var config = new MutableConfiguration("facility");
         config.CreateChild("quartz").CreateChild("item", "qwe").Attribute("key", "qq");
         config.CreateChild("globalJobListeners").CreateChild("item", "${jobli}");
         c.Kernel.ConfigurationStore.AddFacilityConfiguration("quartz", config);
         c.Register(Component.For <IJobListener>().ImplementedBy <SomeJobListener>().Named("jobli"));
         c.AddFacility("quartz", new QuartzFacility());
         var scheduler = (QuartzNetScheduler)c.Resolve <IScheduler>();
         foreach (IJobListener l in scheduler.ListenerManager.GetJobListeners())
         {
             Console.WriteLine(l.Name);
         }
         Assert.AreEqual(2, scheduler.ListenerManager.GetJobListeners().Count);
     }
 }
        /// <summary>
        /// Adds a database configuration item to the store.
        /// </summary>
        /// <example>
        /// <code>
        /// &lt;database&gt;
        ///  &lt;provider name="SQLite3"/&gt;
        ///  &lt;dataSource name="ibatisnet.sqlmap" connectionString="Data Source=ibatisnet.sqlite;Version=3;"/&gt;
        /// &lt;/database&gt;
        /// </code>
        /// </example>
        public void AddDatabase(IDbProvider dbProvider, string dataSourceConnectionString)
        {
            // hack: serialize the object to IConfiguration so it can eventually be converted back to IDbProvider
            configurationStore.AddProviderConfiguration(ProviderSerializer.Serialize(dbProvider));

            MutableConfiguration database = new MutableConfiguration(ConfigConstants.ELEMENT_DATABASE);

            MutableConfiguration provider = database.CreateChild("provider");

            provider.CreateAttribute(ConfigConstants.ATTRIBUTE_NAME, dbProvider.Id);

            MutableConfiguration dataSource = database.CreateChild("dataSource");

            dataSource.CreateAttribute(ConfigConstants.ATTRIBUTE_NAME, "defaultDataSource");
            dataSource.CreateAttribute("connectionString", dataSourceConnectionString);

            configurationStore.AddDatabaseConfiguration(database);
        }
Пример #8
0
        internal IConfiguration BuildConfig(IConfiguration config)
        {
            if (config == null)
            {
                throw new FacilityException("Please define the configuration for Quartz.Net facility");
            }

            var quartzNet = config.Children["quartz"];

            if (quartzNet == null)
            {
                throw new FacilityException("Please define the Quartz.Net properties");
            }

            var componentConfig = new MutableConfiguration(typeof(QuartzNetScheduler).AssemblyQualifiedName);
            var parameters      = componentConfig.CreateChild("parameters");

            BuildProps(quartzNet, parameters.CreateChild("props"));

            var globalJobListeners = config.Children["globalJobListeners"];

            if (globalJobListeners != null)
            {
                BuildServiceArray <IJobListener>(globalJobListeners, parameters.CreateChild("SetGlobalJobListeners"));
            }

            var globalTriggerListeners = config.Children["globalTriggerListeners"];

            if (globalTriggerListeners != null)
            {
                BuildServiceArray <ITriggerListener>(globalTriggerListeners, parameters.CreateChild("SetGlobalTriggerListeners"));
            }

            var jobListeners = config.Children["jobListeners"];

            if (jobListeners != null)
            {
                BuildServiceDictionary <string, IJobListener[]>(jobListeners, parameters.CreateChild("jobListeners"));
            }

            var triggerListeners = config.Children["triggerListeners"];

            if (triggerListeners != null)
            {
                BuildServiceDictionary <string, ITriggerListener[]>(triggerListeners, parameters.CreateChild("triggerListeners"));
            }

            var schedulerListeners = config.Children["schedulerListeners"];

            if (schedulerListeners != null)
            {
                BuildServiceArray <ISchedulerListener>(schedulerListeners, parameters.CreateChild("SetSchedulerListeners"));
            }

            return(componentConfig);
        }
Пример #9
0
        public void InvalidProtocol_throws()
        {
            var configStore   = new DefaultConfigurationStore();
            var configuration = new MutableConfiguration("facility");

            configuration.Attribute("type", typeof(SolrNetFacility).AssemblyQualifiedName);
            configuration.CreateChild("solrURL", "ftp://localhost");
            configStore.AddFacilityConfiguration(typeof(SolrNetFacility).FullName, configuration);
            Assert.Throws <FacilityException>(() => new WindsorContainer(configStore));
        }
Пример #10
0
        private static IConfiguration CreateModuleConfigurationNode(IEnumerable <Type> messageModules)
        {
            var config = new MutableConfiguration("array");

            foreach (Type type in messageModules)
            {
                config.CreateChild("item", "${" + type.FullName + "}");
            }
            return(config);
        }
        public void Can_satisfy_nullable_ctor_dependency()
        {
            var container     = new WindsorContainer();
            var configuration = new MutableConfiguration("parameters");

            configuration.CreateChild("foo", "5");
            container.Register(Component.For <HasNullableDoubleConstructor>().Configuration(configuration));

            container.Resolve <HasNullableDoubleConstructor>();
        }
Пример #12
0
        public void InvalidUrl_throws()
        {
            var configStore   = new DefaultConfigurationStore();
            var configuration = new MutableConfiguration("facility");

            configuration.Attributes.Add("type", typeof(SolrNetFacility).FullName);
            configuration.CreateChild("solrURL", "123");
            configStore.AddFacilityConfiguration(typeof(SolrNetFacility).FullName, configuration);
            new WindsorContainer(configStore);
        }
Пример #13
0
        internal void BuildProps(IConfiguration config, MutableConfiguration props)
        {
            var dict = props.CreateChild("dictionary");

            foreach (var c in config.Children)
            {
                dict.CreateChild("item", c.Value)
                .Attribute("key", c.Attributes["key"]);
            }
        }
Пример #14
0
        public void ShouldBeAbleToSupplyValueForNullableParamViaCtor_FromConfig()
        {
            var container     = new WindsorContainer();
            var configuration = new MutableConfiguration("parameters");

            configuration.CreateChild("foo", "5");
            container.Register(Component.For <ClassTakingNullableViaCtor>().Configuration(configuration));

            container.Resolve <ClassTakingNullableViaCtor>();
        }
Пример #15
0
        public IConfiguration ToIConfiguration()
        {
            var config = new MutableConfiguration("rhino.esb");

            var busConfig = config.CreateChild("bus");

            PopulateBusConfiguration(busConfig);

            var messagesConfig = config.CreateChild("messages");

            foreach (var message in Messages)
            {
                messagesConfig.CreateChild("add")
                .Attribute("name", message.Key)
                .Attribute("endpoint", message.Value);
            }

            return(config);
        }
Пример #16
0
        internal void BuildServiceList <T>(IConfiguration config, MutableConfiguration parameters)
        {
            var array = parameters.CreateChild("list");

            array.Attribute("type", typeof(T).AssemblyQualifiedName);
            foreach (var c in config.Children)
            {
                array.CreateChild("item", c.Value);
            }
        }
Пример #17
0
        public void InvalidProtocol_throws()
        {
            var configStore   = new DefaultConfigurationStore();
            var configuration = new MutableConfiguration("facility");

            configuration.CreateChild("solrURL", "ftp://localhost");
            configStore.AddFacilityConfiguration("solr", configuration);
            var container = new WindsorContainer(configStore);

            container.AddFacility <SolrNetFacility>("solr");
        }
Пример #18
0
 public void Basic()
 {
     using (var c = new WindsorContainer()) {
         var config = new MutableConfiguration("facility");
         config.CreateChild("quartz").CreateChild("item", "qwe").Attribute("key", "qq");
         c.Kernel.ConfigurationStore.AddFacilityConfiguration("quartz", config);
         c.AddFacility("quartz", new QuartzFacility());
         c.Resolve <IJobScheduler>();
         c.Resolve <IScheduler>();
     }
 }
Пример #19
0
        public void ShouldBeAbleToSupplyValueForNullableParam_FromConfig()
        {
            var container     = new WindsorContainer();
            var configuration = new MutableConfiguration("parameters");

            configuration.CreateChild("SomeVal", "5");
            container.Register(Component.For <ClassTakingNullable>().Configuration(configuration));

            var s = container.Resolve <ClassTakingNullable>();

            Assert.IsNotNull(s.SomeVal);
        }
        public void ParseEndpoints_reflects_entries()
        {
            var config = new MutableConfiguration("entries");

            config.CreateChild("item").Attribute("assembly", "asm1").Attribute("endpoint", "end");

            var reg = new RemoteEndpointRegistry();

            reg.ParseEndpoints(config);

            Assert.AreEqual(1, reg.EntriesCount);
        }
        public void Can_satisfy_nullable_property_dependency()
        {
            var container     = new WindsorContainer();
            var configuration = new MutableConfiguration("parameters");

            configuration.CreateChild("SomeVal", "5");
            container.Register(Component.For <HasNullableIntProperty>().Configuration(configuration));

            var s = container.Resolve <HasNullableIntProperty>();

            Assert.IsNotNull(s.SomeVal);
        }
Пример #22
0
 public void FacilityRegistersReleasingJobListener()
 {
     using (var c = new WindsorContainer()) {
         var config = new MutableConfiguration("facility");
         config.CreateChild("quartz");
         c.Kernel.ConfigurationStore.AddFacilityConfiguration("quartz", config);
         c.AddFacility("quartz", new QuartzFacility());
         var scheduler = c.Resolve <IScheduler>();
         //Assert.IsNotNull(scheduler.GlobalJobListeners);
         //Assert.AreEqual(2, scheduler.GlobalJobListeners.Count);
         Assert.IsAssignableFrom(typeof(ReleasingJobListener), scheduler.ListenerManager.GetJobListeners()[0]);
     }
 }
Пример #23
0
        internal void BuildServiceDictionary <TKey, TValue>(IConfiguration config, MutableConfiguration parameters)
        {
            var dict = parameters.CreateChild("dictionary");

            dict.Attribute("keyType", typeof(TKey).AssemblyQualifiedName);
            dict.Attribute("valueType", typeof(TValue).AssemblyQualifiedName);
            foreach (var c in config.Children)
            {
                var job = dict.CreateChild("entry")
                          .Attribute("key", c.Attributes["name"]);
                BuildServiceArray <TValue>(c, job);
            }
        }
Пример #24
0
        public void Ping_Query()
        {
            var configStore   = new DefaultConfigurationStore();
            var configuration = new MutableConfiguration("facility");

            configuration.Attribute("type", typeof(SolrNetFacility).AssemblyQualifiedName);
            configuration.CreateChild("solrURL", "http://localhost:8983/solr");
            configStore.AddFacilityConfiguration(typeof(SolrNetFacility).FullName, configuration);
            var container = new WindsorContainer(configStore);

            var solr = container.Resolve <ISolrOperations <CastleFixture.Document> >();

            solr.Ping();
            Console.WriteLine(solr.Query(SolrQuery.All).Count);
        }
Пример #25
0
        public void Ping_Query()
        {
            var configStore   = new DefaultConfigurationStore();
            var configuration = new MutableConfiguration("facility");

            configuration.CreateChild("solrURL", "http://localhost:8983/solr");
            configStore.AddFacilityConfiguration("solr", configuration);
            var container = new WindsorContainer(configStore);

            container.AddFacility <SolrNetFacility>("solr");

            var solr = container.Resolve <ISolrOperations <Document> >();

            solr.Ping();
            Console.WriteLine(solr.Query(SolrQuery.All).Count);
        }
Пример #26
0
        public static ComponentRegistration <S> WireProperties <S>(this ComponentRegistration <S> reg, Action <WirePropertiesOptions <S> > optionCreation)
        {
            var opt = new WirePropertiesOptions <S>();

            optionCreation(opt);
            if (opt.WireComponentProperties.IsNull())
            {
                return(reg);
            }
            var c = new MutableConfiguration("wire-properties")
                    .Attribute("value", opt.WireComponentProperties.Value.ToString());

            opt.ExceptedPropertyNames.ForEach(p =>
                                              c.CreateChild("except").Attribute("propertyName", p));
            return(reg.Configuration(c));
        }
Пример #27
0
        private static IConfiguration BuildConfig <T>(string name, IDictionary <string, object> configs)
        {
            var componentConfig = new MutableConfiguration(typeof(T).AssemblyQualifiedName);
            var parameters      = componentConfig.CreateChild("parameters");
            //构建构造器参数集合依赖
            var props = parameters.CreateChild(name);
            //创建dictionary对象
            var dict = props.CreateChild("dictionary");

            if (configs != null)
            {
                foreach (var c in configs)
                {
                    dict.CreateChild("item", (c.Value ?? "").ToString()).Attribute("key", c.Key);
                }
            }

            return(componentConfig);
        }
        public void Wiring_WhenPublisherHasAProxy_ListenerShouldStillGetTheEvents()
        {
            var config = new MutableConfiguration("component");

            config.
            CreateChild("subscribers").
            CreateChild("subscriber").
            Attribute("id", "listener").
            Attribute("event", "Event").
            Attribute("handler", "OnPublish");
            store.AddComponentConfiguration("publisher", config);

            container.AddFacility(new EventWiringFacility());

            // Registers interceptor as component
            container.Register(Component.For <CountingInterceptor>().Named("my.interceptor"));

            container.Register(Component.For <SimpleListener>().Named("listener"));

            // Publisher has a reference to interceptor
            container.Register(
                Component.For <SimplePublisher>().
                Named("publisher").
                Interceptors(new InterceptorReference("my.interceptor")).First);

            // Triggers events
            var publisher = container.Resolve <SimplePublisher>();

            publisher.Trigger();

            var interceptor = container.Resolve <CountingInterceptor>();

            Assert.AreEqual(1, interceptor.InterceptedCallsCount);

            // Assert that event was caught
            var listener = container.Resolve <SimpleListener>();

            Assert.IsTrue(listener.Listened);
            Assert.AreSame(publisher, listener.Sender);
        }
Пример #29
0
 private void AddFactory(MutableConfiguration config, String alias)
 {
     config.CreateChild("factory").Attribute("id", String.Format("nhibernate-factory.{0}", alias)).Attribute("alias", alias);
 }
Пример #30
0
 private void AddDefaultFactory(MutableConfiguration config)
 {
     config.CreateChild("factory").Attribute("id", "nhibernate-factory.default");
 }