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