From: <fab...@us...> - 2009-11-28 12:30:19
|
Revision: 4863 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4863&view=rev Author: fabiomaulo Date: 2009-11-28 12:30:08 +0000 (Sat, 28 Nov 2009) Log Message: ----------- Binders refactoring (the main binders working only with deserialized obj) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/MappingRootBinder.cs Modified: trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs 2009-11-28 12:00:44 UTC (rev 4862) +++ trunk/nhibernate/src/NHibernate/Cfg/Configuration.cs 2009-11-28 12:30:08 UTC (rev 4863) @@ -8,11 +8,13 @@ using System.Text; using System.Xml; using System.Xml.Schema; +using System.Xml.Serialization; using Iesi.Collections; using Iesi.Collections.Generic; using log4net; using NHibernate.Bytecode; using NHibernate.Cfg.ConfigurationSchema; +using NHibernate.Cfg.MappingSchema; using NHibernate.Cfg.XmlHbmBinding; using NHibernate.Dialect; using NHibernate.Dialect.Function; @@ -507,7 +509,15 @@ Dialect.Dialect dialect = Dialect.Dialect.GetDialect(properties); Mappings mappings = CreateMappings(dialect); - new MappingRootBinder(mappings, namespaceManager, dialect).Bind(doc.Document.DocumentElement); + // TODO : The mappingMeta should be the property of NamedXmlDocument + // A validated document IS a deserialized doc and we don't need to deserialize it more than one time. + HbmMapping mappingMeta; + using (var reader = new StringReader(doc.Document.DocumentElement.OuterXml)) + { + mappingMeta= (HbmMapping) new XmlSerializer(typeof (HbmMapping)).Deserialize(reader); + } + + new MappingRootBinder(mappings, namespaceManager, dialect).Bind(mappingMeta); } catch (Exception e) { Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/MappingRootBinder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/MappingRootBinder.cs 2009-11-28 12:00:44 UTC (rev 4862) +++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/MappingRootBinder.cs 2009-11-28 12:30:08 UTC (rev 4863) @@ -22,10 +22,9 @@ this.dialect = dialect; } - public void Bind(XmlNode node) + public void Bind(HbmMapping mappingSchema) { IDictionary<string, MetaAttribute> inheritedMetas = EmptyMeta; - var mappingSchema = Deserialize<HbmMapping>(node); // get meta's from <hibernate-mapping> inheritedMetas = GetMetas(mappingSchema, inheritedMetas, true); @@ -33,7 +32,7 @@ AddFilterDefinitions(mappingSchema); AddTypeDefs(mappingSchema); - AddEntitiesMappings(node, mappingSchema, inheritedMetas); + AddEntitiesMappings(mappingSchema, inheritedMetas); AddQueries(mappingSchema); AddSqlQueries(mappingSchema); @@ -42,7 +41,7 @@ AddResultSetMappingDefinitions(mappingSchema); } - private void AddEntitiesMappings(XmlNode node, HbmMapping mappingSchema, IDictionary<string, MetaAttribute> inheritedMetas) + private void AddEntitiesMappings(HbmMapping mappingSchema, IDictionary<string, MetaAttribute> inheritedMetas) { foreach (var rootClass in mappingSchema.RootClasses) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |