From: <fab...@us...> - 2008-10-25 14:05:29
|
Revision: 3877 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3877&view=rev Author: fabiomaulo Date: 2008-10-25 14:05:25 +0000 (Sat, 25 Oct 2008) Log Message: ----------- Fix unreported bug. Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Cfg/MappingsQueue.cs trunk/nhibernate/src/NHibernate/Cfg/MappingsQueueEntry.cs trunk/nhibernate/src/NHibernate.Test/Extendshbm/ExtendsFixture.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynamesf1.hbm.xml trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynamesf2.hbm.xml Modified: trunk/nhibernate/src/NHibernate/Cfg/MappingsQueue.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/MappingsQueue.cs 2008-10-24 14:09:53 UTC (rev 3876) +++ trunk/nhibernate/src/NHibernate/Cfg/MappingsQueue.cs 2008-10-25 14:05:25 UTC (rev 3877) @@ -98,7 +98,12 @@ private bool CanProcess(MappingsQueueEntry ce) { - return _processedClassNames.ContainsAll(ce.RequiredClassNames); + foreach (var c in ce.RequiredClassNames) + { + if (!(_processedClassNames.Contains(c.FullClassName) || _processedClassNames.Contains(c.EntityName))) + return false; + } + return true; } private static string FormatExceptionMessage(ICollection resourceEntries) @@ -108,10 +113,9 @@ foreach (MappingsQueueEntry resourceEntry in resourceEntries) { - foreach (string className in resourceEntry.RequiredClassNames) + foreach (var className in resourceEntry.RequiredClassNames) { - message.Append('\n') - .Append(className); + message.Append('\n').Append(className); } } Modified: trunk/nhibernate/src/NHibernate/Cfg/MappingsQueueEntry.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/MappingsQueueEntry.cs 2008-10-24 14:09:53 UTC (rev 3876) +++ trunk/nhibernate/src/NHibernate/Cfg/MappingsQueueEntry.cs 2008-10-25 14:05:25 UTC (rev 3877) @@ -10,7 +10,7 @@ { private readonly HashedSet<string> containedClassNames; private readonly NamedXmlDocument document; - private readonly HashedSet<string> requiredClassNames; + private readonly HashedSet<RequiredEntityName> requiredClassNames; public MappingsQueueEntry(NamedXmlDocument document, IEnumerable<ClassExtractor.ClassEntry> classEntries) { @@ -29,7 +29,7 @@ /// Gets the names of all entities outside this resource /// needed by the classes in this resource. /// </summary> - public ICollection<string> RequiredClassNames + public ICollection<RequiredEntityName> RequiredClassNames { get { return requiredClassNames; } } @@ -44,9 +44,9 @@ private static HashedSet<string> GetClassNames(IEnumerable<ClassExtractor.ClassEntry> classEntries) { - HashedSet<string> result = new HashedSet<string>(); + var result = new HashedSet<string>(); - foreach (ClassExtractor.ClassEntry ce in classEntries) + foreach (var ce in classEntries) { if (ce.EntityName != null) { @@ -61,20 +61,80 @@ return result; } - private static HashedSet<string> GetRequiredClassNames(IEnumerable<ClassExtractor.ClassEntry> classEntries, + private static HashedSet<RequiredEntityName> GetRequiredClassNames(IEnumerable<ClassExtractor.ClassEntry> classEntries, ICollection<string> containedNames) { - HashedSet<string> result = new HashedSet<string>(); + var result = new HashedSet<RequiredEntityName>(); - foreach (ClassExtractor.ClassEntry ce in classEntries) + foreach (var ce in classEntries) { - if (ce.ExtendsEntityName != null && !containedNames.Contains(ce.FullExtends.Type) && !containedNames.Contains(ce.ExtendsEntityName)) + if (ce.ExtendsEntityName != null && !containedNames.Contains(ce.FullExtends.Type) + && !containedNames.Contains(ce.ExtendsEntityName)) { - result.Add(ce.FullExtends.Type); + result.Add(new RequiredEntityName(ce.ExtendsEntityName, ce.FullExtends.Type)); } } return result; } + + public class RequiredEntityName + { + public RequiredEntityName(string entityName, string fullClassName) + { + EntityName = entityName; + FullClassName = fullClassName; + } + + public string EntityName { get; private set; } + + public string FullClassName { get; private set; } + + public bool Equals(RequiredEntityName obj) + { + if (obj == null) + { + return false; + } + if (ReferenceEquals(this, obj)) + { + return true; + } + return Equals(obj.EntityName, EntityName) && Equals(obj.FullClassName, FullClassName); + } + + public override bool Equals(object obj) + { + if (obj == null) + { + return false; + } + var thatSimple = obj as string; + if (thatSimple != null && (thatSimple.Equals(EntityName) || thatSimple.Equals(FullClassName))) + { + return true; + } + var that = obj as RequiredEntityName; + if (that != null) + { + return false; + } + return Equals(that); + } + + public override int GetHashCode() + { + unchecked + { + return ((EntityName != null ? EntityName.GetHashCode() : 0) * 397) + ^ (FullClassName != null ? FullClassName.GetHashCode() : 0); + } + } + + public override string ToString() + { + return string.Format("FullName:{0} - Name:{1}", FullClassName ?? "<null>", EntityName ?? "<null>"); + } + } } } \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/Extendshbm/ExtendsFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Extendshbm/ExtendsFixture.cs 2008-10-24 14:09:53 UTC (rev 3876) +++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/ExtendsFixture.cs 2008-10-25 14:05:25 UTC (rev 3877) @@ -117,6 +117,19 @@ } [Test] + public void EntityNamesWithPackageFailureExpectedDiffFiles() + { + Configuration cfg = new Configuration(); + cfg.AddResource(BaseForMappings + "Extendshbm.packageentitynamesf1.hbm.xml", typeof(ExtendsFixture).Assembly); + cfg.AddResource(BaseForMappings + "Extendshbm.packageentitynamesf2.hbm.xml", typeof(ExtendsFixture).Assembly); + + cfg.BuildMappings(); + + Assert.That(cfg.GetClassMapping("EntityHasName"), Is.Not.Null); + Assert.That(cfg.GetClassMapping("EntityCompany"), Is.Not.Null); + } + + [Test] public void UnionSubclass() { Configuration cfg = new Configuration(); Added: trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynamesf1.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynamesf1.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynamesf1.hbm.xml 2008-10-25 14:05:25 UTC (rev 3877) @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.Extendshbm"> + + <class lazy="true" entity-name="EntityHasName" table="F5_ENTITY_HASNAME"> + <id name="id" column="ID" type="long"> + <generator class="native"/> + </id> + <property name="attrName" type="string"> + <column name="NAME"/> + </property> + </class> +</hibernate-mapping> \ No newline at end of file Property changes on: trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynamesf1.hbm.xml ___________________________________________________________________ Added: svn:mergeinfo + Added: trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynamesf2.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynamesf2.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynamesf2.hbm.xml 2008-10-25 14:05:25 UTC (rev 3877) @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" + assembly="NHibernate.Test" + namespace="NHibernate.Test.Extendshbm"> + + <joined-subclass lazy="true" entity-name="EntityCompany" table="F5_ENTITY_COMPANY" extends="EntityHasName"> + <key column="REF_ID"/> + <many-to-one name="parent" entity-name="EntityHasName"/> + </joined-subclass> +</hibernate-mapping> \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-24 14:09:53 UTC (rev 3876) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-10-25 14:05:25 UTC (rev 3877) @@ -1513,6 +1513,8 @@ <EmbeddedResource Include="Cascade\JobBatch.hbm.xml" /> <EmbeddedResource Include="Deletetransient\Person.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="Extendshbm\packageentitynamesf1.hbm.xml" /> + <EmbeddedResource Include="Extendshbm\packageentitynamesf2.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1090\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH662\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH1495\Mappings.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |