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]