From 97bc23c57864036e105c8eef9a4fb94327c6971a Mon Sep 17 00:00:00 2001 From: eeichinger Date: Mon, 14 Dec 2009 20:14:48 +0000 Subject: [PATCH] fixed broken SessionScopeSettingsTests removed obsolete check for IsCurrentlyInCreation in AbstractObjectFactory.IsFactoryObject added test for autoproxying FactoryObjectMethod products --- .../Factory/Support/AbstractObjectFactory.cs | 5 -- .../DefaultAdvisorAutoProxyCreatorTests.cs | 71 +++++++++++++++++++ .../Spring.Aop.Tests.2008.csproj | 1 + .../Support/SessionScopeSettingsTests.cs | 2 +- 4 files changed, 73 insertions(+), 6 deletions(-) create mode 100644 test/Spring/Spring.Aop.Tests/Aop/Framework/AutoProxy/DefaultAdvisorAutoProxyCreatorTests.cs diff --git a/src/Spring/Spring.Core/Objects/Factory/Support/AbstractObjectFactory.cs b/src/Spring/Spring.Core/Objects/Factory/Support/AbstractObjectFactory.cs index 74436007..3b857003 100644 --- a/src/Spring/Spring.Core/Objects/Factory/Support/AbstractObjectFactory.cs +++ b/src/Spring/Spring.Core/Objects/Factory/Support/AbstractObjectFactory.cs @@ -1082,11 +1082,6 @@ namespace Spring.Objects.Factory.Support { string objectName = TransformedObjectName(name); object objectInstance = GetSingleton(objectName); - //TODO investigate - if (IsSingletonCurrentlyInCreation(name)) - { - throw new ObjectCurrentlyInCreationException(objectName); - } if (objectInstance != null) { diff --git a/test/Spring/Spring.Aop.Tests/Aop/Framework/AutoProxy/DefaultAdvisorAutoProxyCreatorTests.cs b/test/Spring/Spring.Aop.Tests/Aop/Framework/AutoProxy/DefaultAdvisorAutoProxyCreatorTests.cs new file mode 100644 index 00000000..38ab42e4 --- /dev/null +++ b/test/Spring/Spring.Aop.Tests/Aop/Framework/AutoProxy/DefaultAdvisorAutoProxyCreatorTests.cs @@ -0,0 +1,71 @@ +using System.Collections; +using AopAlliance.Intercept; +using NUnit.Framework; +using Spring.Aop.Support; +using Spring.Context.Support; +using Spring.Objects; +using Spring.Objects.Factory.Support; + +namespace Spring.Aop.Framework.AutoProxy +{ + [TestFixture] + public class DefaultAdvisorAutoProxyCreatorTests + { + private class CapturingAdvice : IMethodInterceptor + { + public readonly ArrayList CapturedCalls = new ArrayList(); + + public object Invoke(IMethodInvocation invocation) + { + CapturedCalls.Add(invocation); + return invocation.Proceed(); + } + } + + public interface ITestObjectFactoryObject + { + ITestObject CreateTestObject(); + } + + public class TestObjectFactoryObject : ITestObjectFactoryObject + { + public ITestObject CreateTestObject() + { + return new TestObject("TheName", 10); + } + } + + [Test] + public void CanProxyFactoryMethodProducts() + { + GenericApplicationContext ctx = new GenericApplicationContext(); + ctx.ObjectFactory.AddObjectPostProcessor(new DefaultAdvisorAutoProxyCreator()); + + CapturingAdvice capturingAdvice = new CapturingAdvice(); + ctx.ObjectFactory.RegisterSingleton("logging", new DefaultPointcutAdvisor(TruePointcut.True, capturingAdvice)); + + // register "factory" object + RootObjectDefinition rod; + rod = new RootObjectDefinition(typeof(TestObjectFactoryObject)); + ctx.ObjectFactory.RegisterObjectDefinition("test", rod); + + // register product, referencing the factory object + rod = new RootObjectDefinition(typeof(ITestObject)); + rod.FactoryObjectName = "test"; + rod.FactoryMethodName = "CreateTestObject"; + ctx.ObjectFactory.RegisterObjectDefinition("testProduct", rod); + + ctx.Refresh(); + + ITestObjectFactoryObject fo = (ITestObjectFactoryObject) ctx.GetObject("test"); + Assert.IsTrue( AopUtils.IsAopProxy(fo) ); + Assert.AreEqual("CreateTestObject", ((IMethodInvocation)capturingAdvice.CapturedCalls[0]).Method.Name); + + capturingAdvice.CapturedCalls.Clear(); + ITestObject to = (ITestObject)ctx.GetObject("testProduct"); + Assert.IsTrue( AopUtils.IsAopProxy(to) ); + Assert.AreEqual("TheName", to.Name); + Assert.AreEqual("get_Name", ((IMethodInvocation)capturingAdvice.CapturedCalls[0]).Method.Name); + } + } +} \ No newline at end of file diff --git a/test/Spring/Spring.Aop.Tests/Spring.Aop.Tests.2008.csproj b/test/Spring/Spring.Aop.Tests/Spring.Aop.Tests.2008.csproj index 0128b264..5e229956 100644 --- a/test/Spring/Spring.Aop.Tests/Spring.Aop.Tests.2008.csproj +++ b/test/Spring/Spring.Aop.Tests/Spring.Aop.Tests.2008.csproj @@ -127,6 +127,7 @@ + diff --git a/test/Spring/Spring.Data.NHibernate.Tests/Data/NHibernate/Support/SessionScopeSettingsTests.cs b/test/Spring/Spring.Data.NHibernate.Tests/Data/NHibernate/Support/SessionScopeSettingsTests.cs index c0f6990d..4c8e0d32 100644 --- a/test/Spring/Spring.Data.NHibernate.Tests/Data/NHibernate/Support/SessionScopeSettingsTests.cs +++ b/test/Spring/Spring.Data.NHibernate.Tests/Data/NHibernate/Support/SessionScopeSettingsTests.cs @@ -108,7 +108,7 @@ namespace Spring.Data.NHibernate.Support ISessionFactory sessionFactory = sss.SessionFactory; Assert.Fail("should fail, because derived classes must override ResolveSessionFactory()"); } - catch (NotImplementedException) { } + catch (NotSupportedException) { } } [Test]