From: <jul...@us...> - 2010-07-19 17:28:59
|
Revision: 5015 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5015&view=rev Author: julian-maughan Date: 2010-07-19 17:28:53 +0000 (Mon, 19 Jul 2010) Log Message: ----------- Fix for failing test Components/Basic/TestMergeComponent. Refinement of contributed patch (see NH-2011 and NH-2061) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs Modified: trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2010-07-19 15:31:18 UTC (rev 5014) +++ trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2010-07-19 17:28:53 UTC (rev 5015) @@ -1121,14 +1121,14 @@ // need to extract the component values and check for subtype replacements... IAbstractComponentType componentType = (IAbstractComponentType)types[i]; IType[] subtypes = componentType.Subtypes; - object[] origComponentValues = original[i] == null - ? new object[subtypes.Length] - : componentType.GetPropertyValues(original[i], session); - object[] targetComponentValues = componentType.GetPropertyValues(target[i], session); - object[] componentCopy = ReplaceAssociations(origComponentValues, targetComponentValues, subtypes, session, null, copyCache, - foreignKeyDirection); - if (!componentType.IsAnyType) + object[] origComponentValues = original[i] == null ? new object[subtypes.Length] : componentType.GetPropertyValues(original[i], session); + object[] targetComponentValues = target[i] == null ? new object[subtypes.Length] : componentType.GetPropertyValues(target[i], session); + + object[] componentCopy = ReplaceAssociations(origComponentValues, targetComponentValues, subtypes, session, null, copyCache, foreignKeyDirection); + + if (!componentType.IsAnyType && target[i] != null) componentType.SetPropertyValues(target[i], componentCopy, session.EntityMode); + copied[i] = target[i]; } else if (!types[i].IsAssociationType) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |