public void LookupMethodWithNullMethod() { try { RootObjectDefinition feedDef = new RootObjectDefinition(typeof(NewsFeed)); feedDef.IsSingleton = false; feedDef.PropertyValues.Add("name", "Bingo"); RootObjectDefinition managerDef = new RootObjectDefinition(typeof(ReturnsNullNewsFeedManager)); managerDef.MethodOverrides.Add(new LookupMethodOverride("CreateNewsFeed", "feed")); DefaultListableObjectFactory factory = new DefaultListableObjectFactory(); factory.RegisterObjectDefinition("manager", managerDef); factory.RegisterObjectDefinition("feed", feedDef); INewsFeedManager manager = (INewsFeedManager)factory["manager"]; NewsFeed feed1 = manager.CreateNewsFeed(); Assert.IsNotNull(feed1, "The CreateNewsFeed() method is not being replaced."); NewsFeed feed2 = manager.CreateNewsFeed(); // assert that the object (prototype) is definitely being looked up each time... Assert.IsFalse(ReferenceEquals(feed1, feed2)); } catch (Exception ex) { Console.Out.WriteLine("ex = {0}", ex); } }
public void LookupMethodMultiple() { RootObjectDefinition feedDef = new RootObjectDefinition(typeof(NewsFeed)); feedDef.IsSingleton = false; feedDef.PropertyValues.Add("name", "Bingo"); RootObjectDefinition testObjectDef = new RootObjectDefinition(typeof(TestObject)); testObjectDef.IsSingleton = false; testObjectDef.PropertyValues.Add("name", "Miki Nakatani"); RootObjectDefinition managerDef = new RootObjectDefinition(typeof(TestObjectAndNewsFeedFactory)); managerDef.MethodOverrides.Add(new LookupMethodOverride("CreateNewsFeed", "feed")); managerDef.MethodOverrides.Add(new LookupMethodOverride("CreateTestObject", "test")); DefaultListableObjectFactory factory = new DefaultListableObjectFactory(); factory.RegisterObjectDefinition("manager", managerDef); factory.RegisterObjectDefinition("feed", feedDef); factory.RegisterObjectDefinition("test", testObjectDef); TestObjectAndNewsFeedFactory manager = (TestObjectAndNewsFeedFactory)factory["manager"]; INewsFeedManager newsFeedManager = manager; NewsFeed feed1 = newsFeedManager.CreateNewsFeed(); Assert.IsNotNull(feed1, "The CreateNewsFeed() method is not being replaced."); NewsFeed feed2 = newsFeedManager.CreateNewsFeed(); // assert that the object (prototype) is definitely being looked up each time... Assert.IsFalse(ReferenceEquals(feed1, feed2)); ITestObjectFactory toFactory = manager; ITestObject to1 = toFactory.CreateTestObject(); Assert.IsNotNull(to1, "The CreateTestObject() method is not being replaced."); ITestObject to2 = toFactory.CreateTestObject(); // assert that the object (prototype) is definitely being looked up each time... Assert.IsFalse(ReferenceEquals(to1, to2)); }
public void SunnyDayReplaceMethod() { RootObjectDefinition replacerDef = new RootObjectDefinition(typeof(NewsFeedFactory)); RootObjectDefinition managerDef = new RootObjectDefinition(typeof(ReturnsNullNewsFeedManager)); managerDef.MethodOverrides.Add(new ReplacedMethodOverride("CreateNewsFeed", "replacer")); DefaultListableObjectFactory factory = new DefaultListableObjectFactory(); factory.RegisterObjectDefinition("manager", managerDef); factory.RegisterObjectDefinition("replacer", replacerDef); INewsFeedManager manager = (INewsFeedManager)factory["manager"]; NewsFeed feed1 = manager.CreateNewsFeed(); Assert.IsNotNull(feed1, "The CreateNewsFeed() method is not being replaced."); Assert.AreEqual(NewsFeedFactory.DefaultName, feed1.Name); NewsFeed feed2 = manager.CreateNewsFeed(); // NewsFeedFactory always yields a new NewsFeed (see class definition below)... Assert.IsFalse(ReferenceEquals(feed1, feed2)); }
public NewsFeedController(INewsFeedManager newsFeedManager) { this.newsFeedManager = newsFeedManager; }
/// <summary> /// Intialize /// </summary> /// <param name="newFeedManager"></param> public NewsController(INewsFeedManager newFeedManager) { _newFeedManager = newFeedManager; }