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. |