public override bool MapToEntityFromMap(object obj, IDictionary data) { if (data == null || obj == null) { return(false); } var objType = obj.GetType(); var getter = ReflectionTools.GetGetter(objType, _idPropertyData); var setter = ReflectionTools.GetSetter(objType, _idPropertyData); try { var subObj = ReflectionTools.CreateInstanceByDefaultConstructor(getter.ReturnType); var ret = true; foreach (var idMapper in Ids.Values) { ret &= idMapper.MapToEntityFromMap(subObj, data); } if (ret) { setter.Set(obj, subObj); } return(ret); } catch (Exception e) { throw new AuditException("Cannot create instance of type " + getter.ReturnType, e); } }
public object MapToObjectFromFullMap(EntityInstantiator entityInstantiator, IDictionary data, object dataObject, long revision) { var componentInstance = dataObject ?? ReflectionTools.CreateInstanceByDefaultConstructor(_componentClass); _delegate.MapToEntityFromMap(entityInstantiator.AuditConfiguration, componentInstance, data, null, entityInstantiator.AuditReaderImplementor, revision); return(componentInstance); }
public void MapToEntityFromMap(AuditConfiguration verCfg, object obj, IDictionary data, object primaryKey, IAuditReaderImplementor versionsReader, long revision) { if (data == null || obj == null) { return; } if (_propertyData.BeanName == null) { // If properties are not encapsulated in a component but placed directly in a class // (e.g. by applying <properties> tag). _delegate.MapToEntityFromMap(verCfg, obj, data, primaryKey, versionsReader, revision); return; } var setter = ReflectionTools.GetSetter(obj.GetType(), _propertyData); // If all properties are null and single, then the component has to be null also. var allNullAndSingle = true; foreach (var property in _delegate.Properties) { if (data[property.Key.Name] != null || !(property.Value is SinglePropertyMapper)) { allNullAndSingle = false; break; } } if (allNullAndSingle) { // single property, but default value need not be null, so we'll set it to null anyway setter.Set(obj, null); } else { var componentType = Toolz.ResolveDotnetType(_componentClassName); var subObj = ReflectionTools.CreateInstanceByDefaultConstructor(componentType); _delegate.MapToEntityFromMap(verCfg, subObj, data, primaryKey, versionsReader, revision); setter.Set(obj, subObj); } }
public object Instantiate(System.Type entityType) { return(ReflectionTools.CreateInstanceByDefaultConstructor(entityType)); }