|
From: <fab...@us...> - 2008-07-23 03:36:07
|
Revision: 3653
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3653&view=rev
Author: fabiomaulo
Date: 2008-07-23 03:36:16 +0000 (Wed, 23 Jul 2008)
Log Message:
-----------
Fix NH-1361 (thanks to Carsten Hess)
Possible Breaking Change:
The ProxyTypeValidator make a more accurate check so your may not pass the validation
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Proxy/ProxyTypeValidator.cs
trunk/nhibernate/src/NHibernate.DomainModel/Qux.cs
trunk/nhibernate/src/NHibernate.Test/Classic/Video.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ProxyValidator/Fixture.cs
Modified: trunk/nhibernate/src/NHibernate/Proxy/ProxyTypeValidator.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Proxy/ProxyTypeValidator.cs 2008-07-23 03:24:41 UTC (rev 3652)
+++ trunk/nhibernate/src/NHibernate/Proxy/ProxyTypeValidator.cs 2008-07-23 03:36:16 UTC (rev 3653)
@@ -94,7 +94,7 @@
if (method.DeclaringType != typeof(object) &&
(method.IsPublic || method.IsAssembly || method.IsFamilyOrAssembly))
{
- if (!method.IsVirtual)
+ if (!method.IsVirtual || method.IsFinal)
{
Error(errors, type, "method " + method.Name + " should be virtual");
}
Modified: trunk/nhibernate/src/NHibernate.DomainModel/Qux.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.DomainModel/Qux.cs 2008-07-23 03:24:41 UTC (rev 3652)
+++ trunk/nhibernate/src/NHibernate.DomainModel/Qux.cs 2008-07-23 03:36:16 UTC (rev 3653)
@@ -36,7 +36,7 @@
#region ILifecycle members
- public LifecycleVeto OnSave(ISession session)
+ public virtual LifecycleVeto OnSave(ISession session)
{
_created = true;
try
@@ -52,7 +52,7 @@
return LifecycleVeto.NoVeto;
}
- public LifecycleVeto OnDelete(ISession session)
+ public virtual LifecycleVeto OnDelete(ISession session)
{
_deleted = true;
try
@@ -67,13 +67,13 @@
return LifecycleVeto.NoVeto;
}
- public void OnLoad(ISession session, object id)
+ public virtual void OnLoad(ISession session, object id)
{
_loaded = true;
_session = session;
}
- public LifecycleVeto OnUpdate(ISession s)
+ public virtual LifecycleVeto OnUpdate(ISession s)
{
return LifecycleVeto.NoVeto;
}
@@ -197,4 +197,4 @@
set { _holder = value; }
}
}
-}
\ No newline at end of file
+}
Modified: trunk/nhibernate/src/NHibernate.Test/Classic/Video.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Classic/Video.cs 2008-07-23 03:24:41 UTC (rev 3652)
+++ trunk/nhibernate/src/NHibernate.Test/Classic/Video.cs 2008-07-23 03:36:16 UTC (rev 3653)
@@ -63,7 +63,7 @@
/// throw a <see cref="ValidationFailure" />. This method must not change the state of the object
/// by side-effect.
/// </summary>
- public void Validate()
+ public virtual void Validate()
{
IList<string> br = GetBrokenRules();
if (br != null && br.Count > 0)
Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ProxyValidator/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ProxyValidator/Fixture.cs 2008-07-23 03:24:41 UTC (rev 3652)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ProxyValidator/Fixture.cs 2008-07-23 03:36:16 UTC (rev 3653)
@@ -227,5 +227,25 @@
{
Validate(typeof(InvalidNonVirtualProtectedInternalProperty));
}
+
+ interface INonVirtualPublicImplementsInterface
+ {
+ int NonVirtualMethodImplementsInterface { get; }
+ }
+
+ public class NonVirtualPublicImplementsInterface : ValidClass, INonVirtualPublicImplementsInterface
+ {
+ public int NonVirtualMethodImplementsInterface
+ {
+ get { return 0; }
+ }
+ }
+
+ [Test]
+ [ExpectedException(typeof(InvalidProxyTypeException))]
+ public void VirtualPublicImplementsInterface()
+ {
+ Validate(typeof(NonVirtualPublicImplementsInterface));
+ }
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|