public void ExecutesBeforeObjectFactoryPostProcessing()
        {
            MockObjectFactoryPostProcessor mofp = new MockObjectFactoryPostProcessor();

            IConfigurableApplicationContext ctx = new XmlApplicationContext(false, "name", false, null);
            ctx.AddObjectFactoryPostProcessor(new DelegateObjectFactoryConfigurer(of => of.RegisterSingleton("mofp", mofp)));

            ctx.Refresh();
            Assert.IsTrue(mofp.Called);
        }
        public void CanBeUsedToReconfigureAnApplicationContextOnRefresh()
        {
            MockObjectFactoryPostProcessor mofp = new MockObjectFactoryPostProcessor();

            IConfigurableApplicationContext ctx = new XmlApplicationContext(false, "name", false, null);
            ctx.AddObjectFactoryPostProcessor(new DelegateObjectFactoryConfigurer(delegate(IConfigurableListableObjectFactory of)
                {
                    of.RegisterSingleton("mofp", mofp);
                }));

            ctx.Refresh();

            mofp.Called = false;
            ctx.Refresh();
            Assert.IsTrue(mofp.Called);
        }
예제 #3
0
        public void ShouldLoad()
        {
            IList<IObjectFactoryPostProcessor> all = new List<IObjectFactoryPostProcessor>();

            XmlApplicationContext child1 = new XmlApplicationContext("file://Spring/Layered/child1.xml");
            IDictionary processors = child1.GetObjectsOfType(typeof (IObjectFactoryPostProcessor));
            IEnumerator enumerator = processors.Values.GetEnumerator();

            while(enumerator.MoveNext())
            {
                all.Add((IObjectFactoryPostProcessor)enumerator.Current);
            }

            XmlApplicationContext child2 = new XmlApplicationContext(false, null, true, child1, "file://Spring/Layered/child2.xml");
            foreach (IObjectFactoryPostProcessor entry in all)
            {
                child2.AddObjectFactoryPostProcessor(entry);
            }
            child2.Refresh();
            XmlApplicationContext main = new XmlApplicationContext(false, null, true, child2, "file://Spring/Layered/main.xml");

            foreach (IObjectFactoryPostProcessor entry in all)
            {
                main.AddObjectFactoryPostProcessor(entry);
            }
            main.Refresh();
            Aggregate agg = (Aggregate) main.GetObject("agg");
            Assert.IsNotNull(agg);

            Service3 three = (Service3) main.GetObject("service3");

            Assert.IsNotNull(three);

            PostProcessor processor = (PostProcessor)main.GetObject("PostProcessor");

            Assert.IsNotNull(processor);
            IList<string> names = processor.Names;
            Assert.AreEqual(3, names.Count);
            Assert.IsTrue(names.Contains("foo"));
            Assert.IsTrue(names.Contains("barService"));
            Assert.IsTrue(names.Contains("connection"));
        }