Example #1
0
 protected override void Because_of()
 {
     var model = new ModelObject
     {
         Child = new SubChildModelObject {ChildProperty = "child property value"}
     };
     _result = Mapper.Map<ModelObject, DtoObject>(model);
 }
Example #2
0
            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);
            }
Example #3
0
            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);
            }
Example #4
0
        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);
        }
Example #5
0
 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());
     }
 }
Example #6
0
            protected override void Because_of()
            {
                var model = new ModelSubObject { BaseString = "Base2", SubString = "Sub2" };

                _result = Mapper.Map<ModelObject, DtoObject>(model);
            }