|
From: <fab...@us...> - 2008-09-18 11:44:28
|
Revision: 3764
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3764&view=rev
Author: fabiomaulo
Date: 2008-09-18 18:44:37 +0000 (Thu, 18 Sep 2008)
Log Message:
-----------
- Test for Extends (2 ignored tests related with entity-name feature)
- Refactoring for generic, equality comparer and some other stuff
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Cfg/ClassExtractor.cs
trunk/nhibernate/src/NHibernate/Cfg/MappingsQueue.cs
trunk/nhibernate/src/NHibernate/Cfg/MappingsQueueEntry.cs
trunk/nhibernate/src/NHibernate/Util/AssemblyQualifiedTypeName.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/Extendshbm/
trunk/nhibernate/src/NHibernate.Test/Extendshbm/Customer.cs
trunk/nhibernate/src/NHibernate.Test/Extendshbm/Customer.hbm.xml
trunk/nhibernate/src/NHibernate.Test/Extendshbm/Employee.cs
trunk/nhibernate/src/NHibernate.Test/Extendshbm/Employee.hbm.xml
trunk/nhibernate/src/NHibernate.Test/Extendshbm/ExtendsFixture.cs
trunk/nhibernate/src/NHibernate.Test/Extendshbm/Person.cs
trunk/nhibernate/src/NHibernate.Test/Extendshbm/Person.hbm.xml
trunk/nhibernate/src/NHibernate.Test/Extendshbm/allinone.hbm.xml
trunk/nhibernate/src/NHibernate.Test/Extendshbm/allseparateinone.hbm.xml
trunk/nhibernate/src/NHibernate.Test/Extendshbm/entitynames.hbm.xml
trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynames.hbm.xml
trunk/nhibernate/src/NHibernate.Test/Extendshbm/unionsubclass.hbm.xml
Modified: trunk/nhibernate/src/NHibernate/Cfg/ClassExtractor.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/ClassExtractor.cs 2008-09-18 18:41:18 UTC (rev 3763)
+++ trunk/nhibernate/src/NHibernate/Cfg/ClassExtractor.cs 2008-09-18 18:44:37 UTC (rev 3764)
@@ -1,7 +1,7 @@
-using System.Collections;
using System.Xml;
-using Iesi.Collections;
using NHibernate.Util;
+using System.Collections.Generic;
+using Iesi.Collections.Generic;
namespace NHibernate.Cfg
{
@@ -16,24 +16,69 @@
/// </summary>
public class ClassEntry
{
- private readonly AssemblyQualifiedTypeName _fullExtends;
- private readonly AssemblyQualifiedTypeName _fullClassName;
+ private readonly string entityName;
+ private readonly string extendsEntityName;
+ private readonly AssemblyQualifiedTypeName fullExtends;
+ private readonly AssemblyQualifiedTypeName fullClassName;
+ private readonly int hashCode;
- public ClassEntry(string extends, string className, string assembly, string @namespace)
+ public ClassEntry(string extends, string className, string entityName, string assembly, string @namespace)
{
- _fullExtends = extends == null ? null : TypeNameParser.Parse(extends, @namespace, assembly);
- _fullClassName = className == null ? null : TypeNameParser.Parse(className, @namespace, assembly);
+ fullExtends = string.IsNullOrEmpty(extends) ? null : TypeNameParser.Parse(extends, @namespace, assembly);
+ fullClassName = string.IsNullOrEmpty(className) ? null : TypeNameParser.Parse(className, @namespace, assembly);
+ this.entityName = entityName;
+ extendsEntityName = string.IsNullOrEmpty(extends) ? null : extends;
+ unchecked
+ {
+ hashCode = (entityName != null ? entityName.GetHashCode() : 0);
+ hashCode = (hashCode * 397) ^ (fullExtends != null ? fullExtends.GetHashCode() : 0);
+ hashCode = (hashCode * 397) ^ (fullClassName != null ? fullClassName.GetHashCode() : 0);
+ }
}
public AssemblyQualifiedTypeName FullExtends
{
- get { return _fullExtends; }
+ get { return fullExtends; }
}
public AssemblyQualifiedTypeName FullClassName
{
- get { return _fullClassName; }
+ get { return fullClassName; }
}
+
+ public string EntityName
+ {
+ get { return entityName; }
+ }
+
+ public string ExtendsEntityName
+ {
+ get { return extendsEntityName; }
+ }
+
+ public override bool Equals(object obj)
+ {
+ ClassEntry that = obj as ClassEntry;
+ return Equals(that);
+ }
+
+ public bool Equals(ClassEntry obj)
+ {
+ if (obj == null)
+ {
+ return false;
+ }
+ if (ReferenceEquals(this, obj))
+ {
+ return true;
+ }
+ return Equals(obj.entityName, entityName) && Equals(obj.fullExtends, fullExtends) && Equals(obj.fullClassName, fullClassName);
+ }
+
+ public override int GetHashCode()
+ {
+ return hashCode;
+ }
}
/// <summary>
@@ -42,7 +87,7 @@
/// </summary>
/// <param name="document">A validated <see cref="XmlDocument"/> representing
/// a mapping file.</param>
- public static ICollection GetClassEntries(XmlDocument document)
+ public static ICollection<ClassEntry> GetClassEntries(XmlDocument document)
{
// TODO this should be extracted into a utility method since there's similar
// code in Configuration
@@ -50,7 +95,7 @@
nsmgr.AddNamespace(HbmConstants.nsPrefix, Configuration.MappingSchemaXMLNS);
// Since the document is validated, no error checking is done in this method.
- HashedSet classEntries = new HashedSet();
+ HashedSet<ClassEntry> classEntries = new HashedSet<ClassEntry>();
XmlNode root = document.DocumentElement;
@@ -65,12 +110,15 @@
nsmgr
);
- foreach (XmlNode classNode in classNodes)
+ if (classNodes != null)
{
- string name = XmlHelper.GetAttributeValue(classNode, "name");
- string extends = XmlHelper.GetAttributeValue(classNode, "extends");
- ClassEntry ce = new ClassEntry(extends, name, assembly, @namespace);
- classEntries.Add(ce);
+ foreach (XmlNode classNode in classNodes)
+ {
+ string name = XmlHelper.GetAttributeValue(classNode, "name");
+ string extends = XmlHelper.GetAttributeValue(classNode, "extends");
+ string entityName = XmlHelper.GetAttributeValue(classNode, "entity-name");
+ classEntries.Add(new ClassEntry(extends, name, entityName, assembly, @namespace));
+ }
}
return classEntries;
Modified: trunk/nhibernate/src/NHibernate/Cfg/MappingsQueue.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/MappingsQueue.cs 2008-09-18 18:41:18 UTC (rev 3763)
+++ trunk/nhibernate/src/NHibernate/Cfg/MappingsQueue.cs 2008-09-18 18:44:37 UTC (rev 3764)
@@ -1,11 +1,8 @@
-using System;
using System.Collections;
-using System.Reflection;
using System.Text;
+using Iesi.Collections.Generic;
+using System.Collections.Generic;
-using Iesi.Collections;
-using NHibernate.Util;
-
namespace NHibernate.Cfg
{
/// <summary>
@@ -13,9 +10,9 @@
/// </summary>
public class MappingsQueue
{
- private readonly ISet _processedClassNames = new HashedSet();
-
- private readonly IList _unavailableEntries = new ArrayList();
+ private readonly ISet<string> _processedClassNames = new HashedSet<string>();
+
+ private readonly List<MappingsQueueEntry> _unavailableEntries = new List<MappingsQueueEntry>();
private readonly Queue _availableEntries = new Queue();
/// <summary>
@@ -23,9 +20,7 @@
/// </summary>
public void AddDocument(NamedXmlDocument document)
{
- MappingsQueueEntry re = new MappingsQueueEntry(
- document,
- ClassExtractor.GetClassEntries(document.Document));
+ MappingsQueueEntry re = new MappingsQueueEntry(document, ClassExtractor.GetClassEntries(document.Document));
AddEntry(re);
}
@@ -57,7 +52,7 @@
}
}
- private void AddProcessedClassNames(ICollection classNames)
+ private void AddProcessedClassNames(ICollection<string> classNames)
{
_processedClassNames.AddAll(classNames);
if (classNames.Count > 0)
@@ -113,7 +108,7 @@
foreach (MappingsQueueEntry resourceEntry in resourceEntries)
{
- foreach (AssemblyQualifiedTypeName className in resourceEntry.RequiredClassNames)
+ foreach (string className in resourceEntry.RequiredClassNames)
{
message.Append('\n')
.Append(className);
Modified: trunk/nhibernate/src/NHibernate/Cfg/MappingsQueueEntry.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/MappingsQueueEntry.cs 2008-09-18 18:41:18 UTC (rev 3763)
+++ trunk/nhibernate/src/NHibernate/Cfg/MappingsQueueEntry.cs 2008-09-18 18:44:37 UTC (rev 3764)
@@ -1,6 +1,7 @@
-using System.Collections;
using Iesi.Collections;
using NHibernate.Util;
+using Iesi.Collections.Generic;
+using System.Collections.Generic;
namespace NHibernate.Cfg
{
@@ -10,10 +11,10 @@
public class MappingsQueueEntry
{
private readonly NamedXmlDocument document;
- private readonly ISet requiredClassNames;
- private readonly ISet containedClassNames;
+ private readonly ISet<string> requiredClassNames;
+ private readonly ISet<string> containedClassNames;
- public MappingsQueueEntry(NamedXmlDocument document, ICollection classEntries)
+ public MappingsQueueEntry(NamedXmlDocument document, IEnumerable<ClassExtractor.ClassEntry> classEntries)
{
this.document = document;
@@ -27,28 +28,34 @@
get { return document; }
}
- private static ISet GetClassNames(ICollection classEntries)
+ private static ISet<string> GetClassNames(IEnumerable<ClassExtractor.ClassEntry> classEntries)
{
- HashedSet result = new HashedSet();
+ HashedSet<string> result = new HashedSet<string>();
foreach (ClassExtractor.ClassEntry ce in classEntries)
{
- if (ce.FullClassName != null)
- result.Add(ce.FullClassName);
+ if (ce.EntityName != null)
+ {
+ result.Add(ce.EntityName);
+ }
+ else if (ce.FullClassName != null)
+ {
+ result.Add(ce.FullClassName.Type);
+ }
}
return result;
}
- private static ISet GetExtendsNames(ICollection classEntries)
+ private static ISet<string> GetExtendsNames(IEnumerable<ClassExtractor.ClassEntry> classEntries)
{
- HashedSet result = new HashedSet();
+ HashedSet<string> result = new HashedSet<string>();
foreach (ClassExtractor.ClassEntry ce in classEntries)
{
if (ce.FullExtends != null)
{
- result.Add(ce.FullExtends);
+ result.Add(ce.FullExtends.Type);
}
}
@@ -60,12 +67,12 @@
/// needed by the classes in this resource.
/// </summary>
/// <returns>An <see cref="ISet"/> of <see cref="AssemblyQualifiedTypeName" /></returns>
- public ICollection RequiredClassNames
+ public ICollection<string> RequiredClassNames
{
get { return requiredClassNames; }
}
- public ICollection ContainedClassNames
+ public ICollection<string> ContainedClassNames
{
get { return containedClassNames; }
}
Modified: trunk/nhibernate/src/NHibernate/Util/AssemblyQualifiedTypeName.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Util/AssemblyQualifiedTypeName.cs 2008-09-18 18:41:18 UTC (rev 3763)
+++ trunk/nhibernate/src/NHibernate/Util/AssemblyQualifiedTypeName.cs 2008-09-18 18:44:37 UTC (rev 3764)
@@ -4,8 +4,9 @@
{
public class AssemblyQualifiedTypeName
{
- private string type;
- private string assembly;
+ private readonly string type;
+ private readonly string assembly;
+ private readonly int hashCode;
public AssemblyQualifiedTypeName(string type, string assembly)
{
@@ -15,6 +16,10 @@
}
this.type = type;
this.assembly = assembly;
+ unchecked
+ {
+ hashCode = (type.GetHashCode() * 397) ^ (assembly != null ? assembly.GetHashCode() : 0);
+ }
}
public string Type
@@ -30,40 +35,35 @@
public override bool Equals(object obj)
{
AssemblyQualifiedTypeName other = obj as AssemblyQualifiedTypeName;
-
- if (other == null) return false;
-
- return string.Equals(type, other.type)
- && string.Equals(assembly, other.assembly);
+ return Equals(other);
}
- public override int GetHashCode()
+ public override string ToString()
{
- unchecked
+ if (assembly == null)
{
- int hashCode = 0;
- if (type != null)
- {
- hashCode += type.GetHashCode();
- }
+ return type;
+ }
- if (assembly != null)
- {
- hashCode += assembly.GetHashCode();
- }
-
- return hashCode;
- }
+ return string.Concat(type, ", ", assembly);
}
- public override string ToString()
+ public bool Equals(AssemblyQualifiedTypeName obj)
{
- if (assembly == null)
+ if (obj == null)
{
- return type;
+ return false;
}
+ if (ReferenceEquals(this, obj))
+ {
+ return true;
+ }
+ return Equals(obj.type, type) && Equals(obj.assembly, assembly);
+ }
- return string.Concat(type, ", ", assembly);
+ public override int GetHashCode()
+ {
+ return hashCode;
}
}
}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/Extendshbm/Customer.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Extendshbm/Customer.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/Customer.cs 2008-09-18 18:44:37 UTC (rev 3764)
@@ -0,0 +1,20 @@
+namespace NHibernate.Test.Extendshbm
+{
+ public class Customer: Person
+ {
+ private Employee salesperson;
+ private string comments;
+
+ public virtual Employee Salesperson
+ {
+ get { return salesperson; }
+ set { salesperson = value; }
+ }
+
+ public virtual string Comments
+ {
+ get { return comments; }
+ set { comments = value; }
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/Extendshbm/Customer.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Extendshbm/Customer.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/Customer.hbm.xml 2008-09-18 18:44:37 UTC (rev 3764)
@@ -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"
+ default-access="field.camelcase">
+ <subclass name="Customer" extends="Person">
+ <property name="Comments"/>
+ <many-to-one name="Salesperson"/>
+ </subclass>
+</hibernate-mapping>
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/Extendshbm/Employee.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Extendshbm/Employee.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/Employee.cs 2008-09-18 18:44:37 UTC (rev 3764)
@@ -0,0 +1,27 @@
+namespace NHibernate.Test.Extendshbm
+{
+ public class Employee: Person
+ {
+ private string title;
+ private decimal salary;
+ private Employee manager;
+
+ public virtual string Title
+ {
+ get { return title; }
+ set { title = value; }
+ }
+
+ public virtual decimal Salary
+ {
+ get { return salary; }
+ set { salary = value; }
+ }
+
+ public virtual Employee Manager
+ {
+ get { return manager; }
+ set { manager = value; }
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/Extendshbm/Employee.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Extendshbm/Employee.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/Employee.hbm.xml 2008-09-18 18:44:37 UTC (rev 3764)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.Extendshbm"
+ default-access="field.camelcase">
+
+ <subclass name="Employee" extends="Person">
+ <property name="Title" length="20"/>
+ <property name="Salary" length="2"/>
+ <many-to-one name="Manager"/>
+ </subclass>
+</hibernate-mapping>
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/Extendshbm/ExtendsFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Extendshbm/ExtendsFixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/ExtendsFixture.cs 2008-09-18 18:44:37 UTC (rev 3764)
@@ -0,0 +1,132 @@
+using NHibernate.Cfg;
+using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
+
+namespace NHibernate.Test.Extendshbm
+{
+ [TestFixture]
+ public class ExtendsFixture
+ {
+ protected static string BaseForMappings
+ {
+ get { return "NHibernate.Test."; }
+ }
+
+ [Test]
+ public void AllInOne()
+ {
+ Configuration cfg = new Configuration();
+
+ cfg.AddResource(BaseForMappings + "Extendshbm.allinone.hbm.xml", typeof(ExtendsFixture).Assembly);
+ Assert.That(cfg.GetClassMapping(typeof (Customer).FullName), Is.Not.Null);
+ Assert.That(cfg.GetClassMapping(typeof(Person).FullName), Is.Not.Null);
+ Assert.That(cfg.GetClassMapping(typeof(Employee).FullName), Is.Not.Null);
+ }
+
+ [Test]
+ public void OutOfOrder()
+ {
+ Configuration cfg = new Configuration();
+
+ cfg.AddResource(BaseForMappings + "Extendshbm.Customer.hbm.xml", typeof (ExtendsFixture).Assembly);
+
+ Assert.That(cfg.GetClassMapping(typeof (Customer).FullName), Is.Null, "cannot be in the configuration yet!");
+
+ cfg.AddResource(BaseForMappings + "Extendshbm.Person.hbm.xml", typeof (ExtendsFixture).Assembly);
+ cfg.AddResource(BaseForMappings + "Extendshbm.Employee.hbm.xml", typeof (ExtendsFixture).Assembly);
+
+ cfg.BuildSessionFactory();
+
+ Assert.That(cfg.GetClassMapping(typeof (Customer).FullName), Is.Not.Null);
+ Assert.That(cfg.GetClassMapping(typeof (Person).FullName), Is.Not.Null);
+ Assert.That(cfg.GetClassMapping(typeof (Employee).FullName), Is.Not.Null);
+ }
+
+ [Test]
+ public void NwaitingForSuper()
+ {
+ Configuration cfg = new Configuration();
+
+ cfg.AddResource(BaseForMappings + "Extendshbm.Customer.hbm.xml", typeof (ExtendsFixture).Assembly);
+ Assert.That(cfg.GetClassMapping(typeof (Customer).FullName), Is.Null, "cannot be in the configuration yet!");
+
+ cfg.AddResource(BaseForMappings + "Extendshbm.Employee.hbm.xml", typeof (ExtendsFixture).Assembly);
+ Assert.That(cfg.GetClassMapping(typeof (Employee).FullName), Is.Null, "cannot be in the configuration yet!");
+
+ cfg.AddResource(BaseForMappings + "Extendshbm.Person.hbm.xml", typeof (ExtendsFixture).Assembly);
+
+ cfg.BuildMappings();
+ Assert.That(cfg.GetClassMapping(typeof (Customer).FullName), Is.Not.Null);
+ Assert.That(cfg.GetClassMapping(typeof (Person).FullName), Is.Not.Null);
+ Assert.That(cfg.GetClassMapping(typeof (Employee).FullName), Is.Not.Null);
+ }
+
+ [Test]
+ public void MissingSuper()
+ {
+ Configuration cfg = new Configuration();
+
+ try
+ {
+ cfg.AddResource(BaseForMappings + "Extendshbm.Customer.hbm.xml", typeof (ExtendsFixture).Assembly);
+ Assert.That(cfg.GetClassMapping(typeof (Customer).FullName), Is.Null, "cannot be in the configuration yet!");
+ cfg.AddResource(BaseForMappings + "Extendshbm.Employee.hbm.xml", typeof (ExtendsFixture).Assembly);
+
+ cfg.BuildSessionFactory();
+
+ Assert.Fail("Should not be able to build sessionfactory without a Person");
+ }
+ catch (HibernateException) {}
+ }
+
+ [Test]
+ public void AllSeparateInOne()
+ {
+ Configuration cfg = new Configuration();
+
+ cfg.AddResource(BaseForMappings + "Extendshbm.allseparateinone.hbm.xml", typeof (ExtendsFixture).Assembly);
+
+ cfg.BuildSessionFactory();
+ Assert.That(cfg.GetClassMapping(typeof (Customer).FullName), Is.Not.Null);
+ Assert.That(cfg.GetClassMapping(typeof (Person).FullName), Is.Not.Null);
+ Assert.That(cfg.GetClassMapping(typeof (Employee).FullName), Is.Not.Null);
+ }
+
+ [Test, Ignore("Not supported yet!")]
+ public void JoinedSubclassAndEntityNamesOnly()
+ {
+ Configuration cfg = new Configuration();
+
+ cfg.AddResource(BaseForMappings + "Extendshbm.entitynames.hbm.xml", typeof (ExtendsFixture).Assembly);
+
+ cfg.BuildMappings();
+ Assert.That(cfg.GetClassMapping("EntityHasName"), Is.Not.Null);
+ Assert.That(cfg.GetClassMapping("EntityCompany"), Is.Not.Null);
+ }
+
+ [Test, Ignore("Not supported yet!")]
+ public void EntityNamesWithPackageFailureExpected()
+ {
+ Configuration cfg = new Configuration();
+ cfg.AddResource(BaseForMappings + "Extendshbm.packageentitynames.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();
+
+ cfg.AddResource(BaseForMappings + "Extendshbm.unionsubclass.hbm.xml", typeof (ExtendsFixture).Assembly);
+
+ cfg.BuildMappings();
+
+ Assert.That(cfg.GetClassMapping(typeof (Person).FullName), Is.Not.Null);
+ Assert.That(cfg.GetClassMapping(typeof (Customer).FullName), Is.Not.Null);
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/Extendshbm/Person.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Extendshbm/Person.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/Person.cs 2008-09-18 18:44:37 UTC (rev 3764)
@@ -0,0 +1,27 @@
+namespace NHibernate.Test.Extendshbm
+{
+ public class Person
+ {
+ private long id;
+ private string name;
+ private char sex;
+
+ public virtual long Id
+ {
+ get { return id; }
+ set { id = value; }
+ }
+
+ public virtual string Name
+ {
+ get { return name; }
+ set { name = value; }
+ }
+
+ public virtual char Sex
+ {
+ get { return sex; }
+ set { sex = value; }
+ }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/Extendshbm/Person.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Extendshbm/Person.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/Person.hbm.xml 2008-09-18 18:44:37 UTC (rev 3764)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.Extendshbm"
+ default-access="field.camelcase">
+
+ <class name="Person">
+ <id name="Id" column="person_id" unsaved-value="0">
+ <generator class="native"/>
+ </id>
+
+ <discriminator type="string"/>
+ <property name="Name" not-null="true" length="80"/>
+ </class>
+</hibernate-mapping>
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/Extendshbm/allinone.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Extendshbm/allinone.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/allinone.hbm.xml 2008-09-18 18:44:37 UTC (rev 3764)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.Extendshbm"
+ default-access="field.camelcase">
+
+ <class name="Person">
+ <id name="Id" column="person_id" unsaved-value="0">
+ <generator class="native"/>
+ </id>
+
+ <discriminator type="string"/>
+ <property name="Name" not-null="true" length="80"/>
+
+ <subclass name="Employee">
+ <property name="Title" length="20"/>
+ <property name="Salary" length="2"/>
+ <many-to-one name="Manager"/>
+ </subclass>
+
+ <subclass name="Customer">
+ <property name="Comments"/>
+ <many-to-one name="Salesperson"/>
+ </subclass>
+ </class>
+
+</hibernate-mapping>
Added: trunk/nhibernate/src/NHibernate.Test/Extendshbm/allseparateinone.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Extendshbm/allseparateinone.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/allseparateinone.hbm.xml 2008-09-18 18:44:37 UTC (rev 3764)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.Extendshbm"
+ default-access="field.camelcase">
+
+ <class name="Person">
+
+ <id name="Id" column="person_id" unsaved-value="0">
+ <generator class="native"/>
+ </id>
+
+ <discriminator type="string"/>
+
+ <property name="Name" not-null="true" length="80"/>
+
+ <subclass name="Employee">
+ <property name="Title" length="20"/>
+ <property name="Salary" length="2"/>
+ <many-to-one name="Manager"/>
+ </subclass>
+
+
+
+ </class>
+
+
+ <subclass name="Customer" extends="Person">
+ <property name="comments"/>
+ <many-to-one name="salesperson"/>
+ </subclass>
+
+</hibernate-mapping>
Added: trunk/nhibernate/src/NHibernate.Test/Extendshbm/entitynames.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Extendshbm/entitynames.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/entitynames.hbm.xml 2008-09-18 18:44:37 UTC (rev 3764)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
+
+ <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>
+ <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
Added: trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynames.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynames.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/packageentitynames.hbm.xml 2008-09-18 18:44:37 UTC (rev 3764)
@@ -0,0 +1,18 @@
+<?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>
+ <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
Added: trunk/nhibernate/src/NHibernate.Test/Extendshbm/unionsubclass.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Extendshbm/unionsubclass.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/Extendshbm/unionsubclass.hbm.xml 2008-09-18 18:44:37 UTC (rev 3764)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.Extendshbm"
+ default-access="field.camelcase">
+
+ <class name="Person">
+ <id name="id" column="person_id" unsaved-value="0">
+ <generator class="native"/>
+ </id>
+
+ <discriminator type="string"/>
+
+ <property name="name" not-null="true" length="80"/>
+ </class>
+
+
+ <union-subclass name="Customer" extends="Person">
+ <property name="Comments"/>
+ <many-to-one name="Salesperson"/>
+ </union-subclass>
+
+ <subclass name="Employee" extends="Person">
+ <property name="Title" length="20"/>
+ <property name="Salary" length="2"/>
+ <many-to-one name="Manager"/>
+ </subclass>
+
+</hibernate-mapping>
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-09-18 18:41:18 UTC (rev 3763)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test-2.0.csproj 2008-09-18 18:44:37 UTC (rev 3764)
@@ -205,6 +205,10 @@
<Compile Include="ExpressionTest\SQLExpressionFixture.cs" />
<Compile Include="ExpressionTest\SubQueries\Classes.cs" />
<Compile Include="ExpressionTest\SubQueries\SubQueriesSqlFixture.cs" />
+ <Compile Include="Extendshbm\Customer.cs" />
+ <Compile Include="Extendshbm\Employee.cs" />
+ <Compile Include="Extendshbm\ExtendsFixture.cs" />
+ <Compile Include="Extendshbm\Person.cs" />
<Compile Include="Extralazy\Document.cs" />
<Compile Include="Extralazy\ExtraLazyFixture.cs" />
<Compile Include="Extralazy\Group.cs" />
@@ -1456,6 +1460,14 @@
<EmbeddedResource Include="Cascade\JobBatch.hbm.xml" />
<EmbeddedResource Include="Deletetransient\Person.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="Extendshbm\allinone.hbm.xml" />
+ <EmbeddedResource Include="Extendshbm\allseparateinone.hbm.xml" />
+ <EmbeddedResource Include="Extendshbm\Customer.hbm.xml" />
+ <EmbeddedResource Include="Extendshbm\Employee.hbm.xml" />
+ <EmbeddedResource Include="Extendshbm\entitynames.hbm.xml" />
+ <EmbeddedResource Include="Extendshbm\packageentitynames.hbm.xml" />
+ <EmbeddedResource Include="Extendshbm\Person.hbm.xml" />
+ <EmbeddedResource Include="Extendshbm\unionsubclass.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1483\Mappings.hbm.xml" />
<EmbeddedResource Include="TypesTest\EntityClass.hbm.xml" />
<EmbeddedResource Include="Events\Collections\Association\Bidirectional\ManyToMany\BidirectionalManyToManyBagToSetMapping.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|