From: Michael D. <mik...@us...> - 2004-08-22 06:24:42
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Cfg In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31809/NHibernate/Cfg Modified Files: Binder.cs Mappings.cs Log Message: Added code to use IGetter and ISetter Index: Mappings.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Cfg/Mappings.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Mappings.cs 16 Aug 2004 05:07:45 -0000 1.7 --- Mappings.cs 22 Aug 2004 06:24:26 -0000 1.8 *************** *** 21,24 **** --- 21,25 ---- private string defaultCascade; private bool autoImport; + private string defaultAccess; internal Mappings(IDictionary classes, IDictionary collections, IDictionary tables, IDictionary queries, IDictionary imports, IList secondPasses) *************** *** 94,119 **** public string SchemaName { ! get ! { ! return schemaName; ! } ! set ! { ! schemaName = value; ! } } public string DefaultCascade { ! get ! { ! return defaultCascade; ! } ! set ! { ! defaultCascade = value; ! } } public void AddQuery(string name, string query) { --- 95,113 ---- public string SchemaName { ! get { return schemaName; } ! set { schemaName = value; } } public string DefaultCascade { ! get { return defaultCascade; } ! set { defaultCascade = value; } } + public string DefaultAccess + { + get { return defaultAccess; } + set { defaultAccess = value; } + } public void AddQuery(string name, string query) { Index: Binder.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Cfg/Binder.cs,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** Binder.cs 19 Aug 2004 17:41:18 -0000 1.28 --- Binder.cs 22 Aug 2004 06:24:26 -0000 1.29 *************** *** 212,216 **** BindValue(subnode, id, false, propertyName); id.SetTypeByReflection( model.PersistentClazz, propertyName); ! Property prop = new Property(id); BindProperty(subnode, prop, mappings); model.IdentifierProperty = prop; --- 212,216 ---- BindValue(subnode, id, false, propertyName); id.SetTypeByReflection( model.PersistentClazz, propertyName); ! Mapping.Property prop = new Mapping.Property(id); BindProperty(subnode, prop, mappings); model.IdentifierProperty = prop; *************** *** 236,240 **** System.Type reflectedClass = ReflectHelper.GetGetter( model.PersistentClazz, propertyName ).ReturnType; BindComponent(subnode, compId, reflectedClass, model.Name + StringHelper.Dot + propertyName, false, mappings); ! Property prop = new Property(compId); BindProperty(subnode, prop, mappings); model.IdentifierProperty = prop; --- 236,240 ---- System.Type reflectedClass = ReflectHelper.GetGetter( model.PersistentClazz, propertyName ).ReturnType; BindComponent(subnode, compId, reflectedClass, model.Name + StringHelper.Dot + propertyName, false, mappings); ! Mapping.Property prop = new Mapping.Property(compId); BindProperty(subnode, prop, mappings); model.IdentifierProperty = prop; *************** *** 249,253 **** BindValue(subnode, val, false, propertyName); if ( val.Type==null ) val.Type = ( ("version".Equals(name)) ? NHibernate.Int32 : NHibernate.Timestamp ); ! Property timestampProp = new Property(val); BindProperty(subnode, timestampProp, mappings); model.Version = timestampProp; --- 249,253 ---- BindValue(subnode, val, false, propertyName); if ( val.Type==null ) val.Type = ( ("version".Equals(name)) ? NHibernate.Int32 : NHibernate.Timestamp ); ! Mapping.Property timestampProp = new Mapping.Property(val); BindProperty(subnode, timestampProp, mappings); model.Version = timestampProp; *************** *** 368,372 **** } ! public static void BindProperty(XmlNode node, Property model, Mappings mappings) { model.Name = GetPropertyName(node); --- 368,372 ---- } ! public static void BindProperty(XmlNode node, Mapping.Property model, Mappings mappings) { model.Name = GetPropertyName(node); *************** *** 374,377 **** --- 374,386 ---- if (type==null) throw new MappingException("could not determine a property type for: " + model.Name ); + XmlAttribute accessNode = node.Attributes["access"]; + if( accessNode!=null) + { + model.PropertyAccessorName = accessNode.Value; + } + else + { + model.PropertyAccessorName = mappings.DefaultAccess; + } XmlAttribute cascadeNode = node.Attributes["cascade"]; model.Cascade = (cascadeNode==null) ? mappings.DefaultCascade : cascadeNode.Value; *************** *** 784,788 **** if (componentClass!=null) value.SetTypeByReflection(componentClass, propertyName); value.CreateForeignKey(); ! Property prop = new Property(value); BindProperty(subnode, prop, mappings); model.AddProperty(prop); --- 793,797 ---- if (componentClass!=null) value.SetTypeByReflection(componentClass, propertyName); value.CreateForeignKey(); ! Mapping.Property prop = new Mapping.Property(value); BindProperty(subnode, prop, mappings); model.AddProperty(prop); *************** *** 795,801 **** Cascades.CascadeStyle[] cascade = new Cascades.CascadeStyle[span]; OuterJoinLoaderType[] joinedFetch = new OuterJoinLoaderType[span]; int i=0; ! foreach(Property prop in model.PropertyCollection) { names[i] = prop.Name; --- 804,813 ---- Cascades.CascadeStyle[] cascade = new Cascades.CascadeStyle[span]; OuterJoinLoaderType[] joinedFetch = new OuterJoinLoaderType[span]; + Property.IGetter[] getters = new Property.IGetter[span]; + Property.ISetter[] setters = new Property.ISetter[span]; + bool foundCustomAccessor = false; int i=0; ! foreach(Mapping.Property prop in model.PropertyCollection) { names[i] = prop.Name; *************** *** 805,814 **** //skiping dynaprops //TODO: Dynaprops i++; } - model.Type = ! (IType) new ComponentType( model.ComponentClass, names, types, joinedFetch, cascade, model.ParentProperty, model.IsEmbedded ); } --- 817,831 ---- //skiping dynaprops //TODO: Dynaprops + + // the setters is new code added for field access + setters[i] = prop.GetSetter( model.ComponentClass ); + getters[i] = prop.GetGetter( model.ComponentClass ); + if( !prop.IsBasicPropertyAccessor ) foundCustomAccessor = true; i++; } + //TODO: resume here with adding setters and getters model.Type = ! (IType) new ComponentType( model.ComponentClass, names, getters, setters, foundCustomAccessor, types, joinedFetch, cascade, model.ParentProperty, model.IsEmbedded ); } *************** *** 970,974 **** value.SetTypeByReflection( model.PersistentClazz, propertyName ); value.CreateForeignKey(); ! Property prop = new Property(value); BindProperty(subnode, prop, mappings); model.AddProperty(prop); --- 987,991 ---- value.SetTypeByReflection( model.PersistentClazz, propertyName ); value.CreateForeignKey(); ! Mapping.Property prop = new Mapping.Property(value); BindProperty(subnode, prop, mappings); model.AddProperty(prop); *************** *** 1147,1151 **** XmlAttribute dcNode = hmNode.Attributes["default-cascade"]; model.DefaultCascade = (dcNode==null) ? "none" : dcNode.Value ; ! XmlAttribute aiNode = hmNode.Attributes["auto-import"]; model.IsAutoImport = (aiNode==null) ? true : "true".Equals( aiNode.Value ); --- 1164,1169 ---- XmlAttribute dcNode = hmNode.Attributes["default-cascade"]; model.DefaultCascade = (dcNode==null) ? "none" : dcNode.Value ; ! XmlAttribute daNode = hmNode.Attributes["default-access"]; ! model.DefaultAccess = (daNode==null) ? "property" : daNode.Value; XmlAttribute aiNode = hmNode.Attributes["auto-import"]; model.IsAutoImport = (aiNode==null) ? true : "true".Equals( aiNode.Value ); |