protected override void Because_of() { var model = new ModelObject { Child = new SubChildModelObject {ChildProperty = "child property value"} }; _result = Mapper.Map<ModelObject, DtoObject>(model); }
protected override void Establish_context() { Mapper.Reset(); var model = new ModelObject { Child = new SubChildModelObject {ChildProperty = "child property value"} }; Mapper.CreateMap<ModelObject, DtoObject>(); Mapper.CreateMap<IChildModelObject, DtoChildObject>() .Include<SubChildModelObject, SubDtoChildObject>(); Mapper.CreateMap<SubChildModelObject, SubDtoChildObject>(); Mapper.AssertConfigurationIsValid(); _result = Mapper.Map<ModelObject, DtoObject>(model); }
protected override void Establish_context() { Mapper.Reset(); var model = new ModelObject { Child = new SubChildModelObject { ChildProperty = "child property value" } }; Mapper.CreateMap <ModelObject, DtoObject>(); Mapper.CreateMap <IChildModelObject, DtoChildObject>() .Include <SubChildModelObject, SubDtoChildObject>(); Mapper.CreateMap <SubChildModelObject, SubDtoChildObject>(); Mapper.AssertConfigurationIsValid(); _result = Mapper.Map <ModelObject, DtoObject>(model); }
public void InjectTo_Success() { var cls1 = DeclareClass(); var type1 = cls1.GetBuiltType(); dynamic dto = Activator.CreateInstance(type1); var tmp = new Source { Id = 10, Name = "test", EntityToDto = "2020", X = 95, Sample = new NestedSouce { Id = 50, X = 86, Description = "Hello" }, Alternation = new Source2 { Id = 46, Content = "Xin chao", PublishedDate = new DateTime(2030, 12, 22) }, Array = new Element[] { new Element { Token = 1, Des = "1" }, new Element { Token = 2, Des = "2" } }, List = new List <Element> { new Element { Token = 3, Des = "3" }, new Element { Token = 4, Des = "4" } } }; tmp.Middle = new Middle(); tmp.Middle.Nested = new NestedSource { Id = 11, Name = "test2", X = 99, Sample = new NestedSouce { Id = 50, X = 86, Description = "Hello" }, Alternation = new Source2 { Id = 46, Content = "Xin chao", PublishedDate = new DateTime(2030, 12, 22) }, Array = new Element[] { new Element { Token = 1, Des = "1" }, new Element { Token = 2, Des = "2" } }, List = new List <Element> { new Element { Token = 3, Des = "3" }, new Element { Token = 4, Des = "4" } } }; var date = new DateTime(2020, 12, 22); var entity2 = new Source { Id = 10, Name = "test", X = 95, Sample = null, Alternation = new Source2 { PublishedDate = date }, Array = null, List = null }; Mapper.MapFromEntityToDto(dto, tmp); dto.EntityToDto = "2020"; // End preparing data; var entity = new Source(); Mapper.MapFromDtoToEntity(dto, entity); // Test Mode OneWayToDto Assert.Null(entity.EntityToDto); Assert.True(entity.Id == dto.Id); Assert.True(entity.Name == dto.Name); Assert.True(entity.X == dto.Fields.X); Assert.True(entity.Sample.Id == dto.Sample.R.Id); Assert.True(entity.Sample.X == dto.Fields.Y); Assert.True(entity.Alternation.Content == dto.Alternation.Content); Assert.True(entity.Alternation.Id == dto.Alternation.Id); Assert.True(entity.Array[0].Token == dto.Array[0].Token); Assert.True(entity.Array[0].Des == dto.Array[0].Des); Assert.True(entity.Array[1].Token == dto.Array[1].Token); Assert.True(entity.Array[1].Des == dto.Array[1].Des); var index = 0; foreach (var item in dto.List) { Assert.True(entity.List[index].Token == item.Token); Assert.True(entity.List[index].Des == item.Des); ++index; } // nested prop Assert.True(entity.Middle.Nested.Id == dto.Middle.Nested.Id); Assert.True(entity.Middle.Nested.Name == dto.Middle.Nested.Name); Assert.True(entity.Middle.Nested.X == dto.Middle.Nested.Fields.X); Assert.True(entity.Middle.Nested.Sample.Id == dto.Middle.Nested.Sample.R.Id); Assert.True(entity.Middle.Nested.Sample.X == dto.Middle.Nested.Fields.Y); Assert.True(entity.Middle.Nested.Alternation.Content == dto.Middle.Nested.Alternation.Content); Assert.True(entity.Middle.Nested.Alternation.Id == dto.Middle.Nested.Alternation.Id); Assert.True(entity.Middle.Nested.Alternation.PublishedDate == dto.Middle.Nested.PublishedDate); Assert.True(entity.Middle.Nested.Array[0].Token == dto.Middle.Nested.Array[0].Token); Assert.True(entity.Middle.Nested.Array[0].Des == dto.Middle.Nested.Array[0].Des); Assert.True(entity.Middle.Nested.Array[1].Token == dto.Middle.Nested.Array[1].Token); Assert.True(entity.Middle.Nested.Array[1].Des == dto.Middle.Nested.Array[1].Des); index = 0; foreach (var item in dto.Middle.Nested.List) { Assert.True(entity.Middle.Nested.List[index].Token == item.Token); Assert.True(entity.Middle.Nested.List[index].Des == item.Des); ++index; } Assert.True(entity.Middle.Nested.Array[0].Token == dto.Middle2.Array[0].Token); Assert.True(entity.Middle.Nested.Array[0].Des == dto.Middle2.Array[0].Des); Assert.True(entity.Middle.Nested.Array[1].Token == dto.Middle2.Array[1].Token); Assert.True(entity.Middle.Nested.Array[1].Des == dto.Middle2.Array[1].Des); index = 0; foreach (var item in dto.Middle3.List) { Assert.True(entity.Middle.Nested.List[index].Token == item.Token); Assert.True(entity.Middle.Nested.List[index].Des == item.Des); ++index; } var keys = DtoObject.GetIds(dto); Assert.True(entity.Name == keys[0]); Assert.True(entity.Id == keys[1]); Mapper.MapFromDtoToEntity(dto, entity2); Assert.NotNull(entity2.Sample); Assert.NotNull(entity2.Sample); Assert.NotNull(entity2.Alternation); Assert.True(entity2.Alternation.PublishedDate == date); Assert.NotNull(entity2.List); Assert.NotNull(entity2.Array); var dtoObj = dto as IDtoObject; Assert.NotNull(dtoObj); var exp = cls1.BuildSelectorExpression(); Assert.NotNull(exp); }
public string ProcessRequest(string dtoString) { //The web service (xml) serializer/deserializer is removing the '\r' portion of our newlines during the data transfer. //Replacing the string is not the best solution but it works for now. The replacing happens here (server side) and after result is returned on the client side. //It's done server side for usage purposes within the methods being called (exampe: inserting into db) and then on the client side for displaying purposes. dtoString = dtoString.Replace("\n", "\r\n"); #if DEBUG //System.Threading.Thread.Sleep(100);//to test slowness issues with web service. #endif DataTransferObject dto = DataTransferObject.Deserialize(dtoString); //XmlSerializer serializer; try { Type type = dto.GetType(); if (type == typeof(DtoGetTable)) { DtoGetTable dtoGetTable = (DtoGetTable)dto; Userods.CheckCredentials(dtoGetTable.Credentials); //will throw exception if fails. string className = dtoGetTable.MethodName.Split('.')[0]; string methodName = dtoGetTable.MethodName.Split('.')[1]; string assemb = Assembly.GetAssembly(typeof(Db)).FullName; //any OpenDentBusiness class will do. Type classType = Type.GetType("OpenDentBusiness." + className + "," + assemb); DtoObject[] parameters = dtoGetTable.Params; Type[] paramTypes = DtoObject.GenerateTypes(parameters, assemb); MethodInfo methodInfo = classType.GetMethod(methodName, paramTypes); if (methodInfo == null) { throw new ApplicationException("Method not found with " + parameters.Length.ToString() + " parameters: " + dtoGetTable.MethodName); } object[] paramObjs = DtoObject.GenerateObjects(parameters); DataTable dt = (DataTable)methodInfo.Invoke(null, paramObjs); String response = XmlConverter.TableToXml(dt); return(response); } else if (type == typeof(DtoGetTableLow)) { DtoGetTableLow dtoGetTableLow = (DtoGetTableLow)dto; Userods.CheckCredentials(dtoGetTableLow.Credentials); //will throw exception if fails. DtoObject[] parameters = dtoGetTableLow.Params; object[] paramObjs = DtoObject.GenerateObjects(parameters); DataTable dt = Reports.GetTable((string)paramObjs[0]); String response = XmlConverter.TableToXml(dt); return(response); } else if (type == typeof(DtoGetDS)) { DtoGetDS dtoGetDS = (DtoGetDS)dto; Userods.CheckCredentials(dtoGetDS.Credentials); //will throw exception if fails. string className = dtoGetDS.MethodName.Split('.')[0]; string methodName = dtoGetDS.MethodName.Split('.')[1]; string assemb = Assembly.GetAssembly(typeof(Db)).FullName; //any OpenDentBusiness class will do. Type classType = Type.GetType("OpenDentBusiness." + className + "," + assemb); DtoObject[] parameters = dtoGetDS.Params; Type[] paramTypes = DtoObject.GenerateTypes(parameters, assemb); MethodInfo methodInfo = classType.GetMethod(methodName, paramTypes); if (methodInfo == null) { throw new ApplicationException("Method not found with " + parameters.Length.ToString() + " parameters: " + dtoGetDS.MethodName); } object[] paramObjs = DtoObject.GenerateObjects(parameters); DataSet ds = (DataSet)methodInfo.Invoke(null, paramObjs); String response = XmlConverter.DsToXml(ds); return(response); } else if (type == typeof(DtoGetLong)) { DtoGetLong dtoGetLong = (DtoGetLong)dto; Userods.CheckCredentials(dtoGetLong.Credentials); //will throw exception if fails. string className = dtoGetLong.MethodName.Split('.')[0]; string methodName = dtoGetLong.MethodName.Split('.')[1]; string assemb = Assembly.GetAssembly(typeof(Db)).FullName; //any OpenDentBusiness class will do. Type classType = Type.GetType("OpenDentBusiness." + className + "," + assemb); DtoObject[] parameters = dtoGetLong.Params; Type[] paramTypes = DtoObject.GenerateTypes(parameters, assemb); MethodInfo methodInfo = classType.GetMethod(methodName, paramTypes); if (methodInfo == null) { throw new ApplicationException("Method not found with " + parameters.Length.ToString() + " parameters: " + dtoGetLong.MethodName); } object[] paramObjs = DtoObject.GenerateObjects(parameters); long longResult = (long)methodInfo.Invoke(null, paramObjs); return(longResult.ToString()); } else if (type == typeof(DtoGetInt)) { DtoGetInt dtoGetInt = (DtoGetInt)dto; Userods.CheckCredentials(dtoGetInt.Credentials); //will throw exception if fails. string className = dtoGetInt.MethodName.Split('.')[0]; string methodName = dtoGetInt.MethodName.Split('.')[1]; string assemb = Assembly.GetAssembly(typeof(Db)).FullName; //any OpenDentBusiness class will do. Type classType = Type.GetType("OpenDentBusiness." + className + "," + assemb); DtoObject[] parameters = dtoGetInt.Params; Type[] paramTypes = DtoObject.GenerateTypes(parameters, assemb); MethodInfo methodInfo = classType.GetMethod(methodName, paramTypes); if (methodInfo == null) { throw new ApplicationException("Method not found with " + parameters.Length.ToString() + " parameters: " + dtoGetInt.MethodName); } object[] paramObjs = DtoObject.GenerateObjects(parameters); int intResult = (int)methodInfo.Invoke(null, paramObjs); return(intResult.ToString()); } else if (type == typeof(DtoGetVoid)) { DtoGetVoid dtoGetVoid = (DtoGetVoid)dto; Userods.CheckCredentials(dtoGetVoid.Credentials); //will throw exception if fails. string className = dtoGetVoid.MethodName.Split('.')[0]; string methodName = dtoGetVoid.MethodName.Split('.')[1]; string assemb = Assembly.GetAssembly(typeof(Db)).FullName; //any OpenDentBusiness class will do. Type classType = Type.GetType("OpenDentBusiness." + className + "," + assemb); DtoObject[] parameters = dtoGetVoid.Params; Type[] paramTypes = DtoObject.GenerateTypes(parameters, assemb); MethodInfo methodInfo = classType.GetMethod(methodName, paramTypes); if (methodInfo == null) { throw new ApplicationException("Method not found with " + parameters.Length.ToString() + " parameters: " + dtoGetVoid.MethodName); } object[] paramObjs = DtoObject.GenerateObjects(parameters); methodInfo.Invoke(null, paramObjs); return("0"); } else if (type == typeof(DtoGetObject)) { DtoGetObject dtoGetObject = (DtoGetObject)dto; string className = dtoGetObject.MethodName.Split('.')[0]; string methodName = dtoGetObject.MethodName.Split('.')[1]; if (className != "Security" || methodName != "LogInWeb") //because credentials will be checked inside that method { Userods.CheckCredentials(dtoGetObject.Credentials); //will throw exception if fails. } string assemb = Assembly.GetAssembly(typeof(Db)).FullName; //any OpenDentBusiness class will do. Type classType = Type.GetType("OpenDentBusiness." + className + "," + assemb); DtoObject[] parameters = dtoGetObject.Params; Type[] paramTypes = DtoObject.GenerateTypes(parameters, assemb); MethodInfo methodInfo = classType.GetMethod(methodName, paramTypes); if (methodInfo == null) { throw new ApplicationException("Method not found with " + parameters.Length.ToString() + " parameters: " + dtoGetObject.MethodName); } if (className == "Security" && methodName == "LogInWeb") { string mappedPath = Server.MapPath("."); parameters[2] = new DtoObject(mappedPath, typeof(string)); //because we can't access this variable from within OpenDentBusiness. RemotingClient.RemotingRole = RemotingRole.ServerWeb; } object[] paramObjs = DtoObject.GenerateObjects(parameters); Object objResult = methodInfo.Invoke(null, paramObjs); Type returnType = methodInfo.ReturnType; return(XmlConverter.Serialize(returnType, objResult)); } else if (type == typeof(DtoGetString)) { DtoGetString dtoGetString = (DtoGetString)dto; Userods.CheckCredentials(dtoGetString.Credentials); //will throw exception if fails. string className = dtoGetString.MethodName.Split('.')[0]; string methodName = dtoGetString.MethodName.Split('.')[1]; string assemb = Assembly.GetAssembly(typeof(Db)).FullName; //any OpenDentBusiness class will do. Type classType = Type.GetType("OpenDentBusiness." + className + "," + assemb); DtoObject[] parameters = dtoGetString.Params; Type[] paramTypes = DtoObject.GenerateTypes(parameters, assemb); MethodInfo methodInfo = classType.GetMethod(methodName, paramTypes); if (methodInfo == null) { throw new ApplicationException("Method not found with " + parameters.Length.ToString() + " parameters: " + dtoGetString.MethodName); } object[] paramObjs = DtoObject.GenerateObjects(parameters); string strResult = (string)methodInfo.Invoke(null, paramObjs); //strResult=strResult.Replace("\r","\\r"); //return XmlConverter.Serialize(typeof(string),strResult); return(strResult); } else if (type == typeof(DtoGetBool)) { DtoGetBool dtoGetBool = (DtoGetBool)dto; Userods.CheckCredentials(dtoGetBool.Credentials); //will throw exception if fails. string className = dtoGetBool.MethodName.Split('.')[0]; string methodName = dtoGetBool.MethodName.Split('.')[1]; string assemb = Assembly.GetAssembly(typeof(Db)).FullName; //any OpenDentBusiness class will do. Type classType = Type.GetType("OpenDentBusiness." + className + "," + assemb); DtoObject[] parameters = dtoGetBool.Params; Type[] paramTypes = DtoObject.GenerateTypes(parameters, assemb); MethodInfo methodInfo = classType.GetMethod(methodName, paramTypes); if (methodInfo == null) { throw new ApplicationException("Method not found with " + parameters.Length.ToString() + " parameters: " + dtoGetBool.MethodName); } object[] paramObjs = DtoObject.GenerateObjects(parameters); bool boolResult = (bool)methodInfo.Invoke(null, paramObjs); return(boolResult.ToString()); } else { throw new NotSupportedException("Dto type not supported: " + type.FullName); } } catch (Exception e) { DtoException exception = new DtoException(); if (e.InnerException == null) { exception.Message = e.Message; } else { exception.Message = e.InnerException.Message; } return(exception.Serialize()); } }
protected override void Because_of() { var model = new ModelSubObject { BaseString = "Base2", SubString = "Sub2" }; _result = Mapper.Map<ModelObject, DtoObject>(model); }