Package ma.glasnost.orika.test.generator

Source Code of ma.glasnost.orika.test.generator.BeanToMapGenerationTestCase$Name

package ma.glasnost.orika.test.generator;

import java.util.HashMap;
import java.util.Map;

import junit.framework.Assert;
import ma.glasnost.orika.MapperFacade;
import ma.glasnost.orika.MapperFactory;
import ma.glasnost.orika.impl.UtilityResolver;
import ma.glasnost.orika.impl.generator.VariableRef;
import ma.glasnost.orika.metadata.Property;
import ma.glasnost.orika.metadata.Type;
import ma.glasnost.orika.metadata.TypeBuilder;
import ma.glasnost.orika.metadata.TypeFactory;
import ma.glasnost.orika.property.PropertyResolverStrategy;
import ma.glasnost.orika.test.MappingUtil;

import org.junit.Test;

public class BeanToMapGenerationTestCase {

  @Test
  public void testBeanToMapGeneration() throws Exception {
   
   
    MapperFactory factory = MappingUtil.getMapperFactory();
 
    factory.classMap(Student.class, Map.class)
        .field("grade.letter", "letterGrade")
        .field("grade.point", "GPA")
        .field("grade.percentage", "gradePercentage")
        .field("name.first", "firstName")
        .field("name.last", "lastName")
        .byDefault()
        .register();
   
    MapperFacade mapper = factory.getMapperFacade();
   
    Student student = new Student();
    student.id = "1";
    student.email = "test@test.com";
    student.name = new Name();
    student.name.first = "Chuck";
    student.name.last = "Testa";
    student.grade = new Grade();
    student.grade.letter = "B-";
    student.grade.percentage = 81.5;
    student.grade.point = 2.7;
   
   
    @SuppressWarnings("unchecked")
        Map<String,Object> result = mapper.map(student, Map.class);
   
    Assert.assertEquals(student.id, result.get("id"));
    Assert.assertEquals(student.email, result.get("email"));
    Assert.assertEquals(student.name.first, result.get("firstName"));
    Assert.assertEquals(student.name.last, result.get("lastName"));
    Assert.assertEquals(student.grade.letter, result.get("letterGrade"));
    Assert.assertEquals(student.grade.percentage, result.get("gradePercentage"));
    Assert.assertEquals(student.grade.point, result.get("GPA"));
   
    Student mapBack = mapper.map(result, Student.class);
   
    Assert.assertEquals(student.id, mapBack.id);
        Assert.assertEquals(student.email, mapBack.email);
        Assert.assertEquals(student.name.first, mapBack.name.first);
        Assert.assertEquals(student.name.last, mapBack.name.last);
        Assert.assertEquals(student.grade.letter, mapBack.grade.letter);
        Assert.assertEquals(student.grade.percentage, mapBack.grade.percentage);
        Assert.assertEquals(student.grade.point, mapBack.grade.point);
   
  }
 
  @Test
    public void testBeanToCustomMapGeneration() throws Exception {
       
       
        MapperFactory factory = MappingUtil.getMapperFactory();
       
        Type<Map<String, String>> mapType = new TypeBuilder<Map<String, String>>(){}.build();
        Type<Student> studentType = TypeFactory.valueOf(Student.class);
       
        factory.classMap(Student.class, mapType)
                .field("grade.letter", "letterGrade")
                .field("grade.point", "GPA")
                .field("grade.percentage", "gradePercentage")
                .field("name.first", "firstName")
                .field("name.last", "lastName")
                .byDefault()
                .register();
       
        MapperFacade mapper = factory.getMapperFacade();
       
        Student student = new Student();
        student.id = "1";
        student.email = "test@test.com";
        student.name = new Name();
        student.name.first = "Chuck";
        student.name.last = "Testa";
        student.grade = new Grade();
        student.grade.letter = "B-";
        student.grade.percentage = 81.5;
        student.grade.point = 2.7;
       
        Map<String, String> result = mapper.map(student, studentType, mapType);
       
        Assert.assertEquals(student.id, result.get("id"));
        Assert.assertEquals(student.email, result.get("email"));
        Assert.assertEquals(student.name.first, result.get("firstName"));
        Assert.assertEquals(student.name.last, result.get("lastName"));
        Assert.assertEquals(student.grade.letter, result.get("letterGrade"));
        Assert.assertEquals("" + student.grade.percentage, result.get("gradePercentage"));
        Assert.assertEquals("" + student.grade.point, result.get("GPA"));
       
        Student mapBack = mapper.map(result, mapType, studentType);
       
        Assert.assertEquals(student.id, mapBack.id);
        Assert.assertEquals(student.email, mapBack.email);
        Assert.assertEquals(student.name.first, mapBack.name.first);
        Assert.assertEquals(student.name.last, mapBack.name.last);
        Assert.assertEquals(student.grade.letter, mapBack.grade.letter);
        Assert.assertEquals(student.grade.percentage, mapBack.grade.percentage);
        Assert.assertEquals(student.grade.point, mapBack.grade.point);
       
    }
 
  @Test
  public void testResolveMapKeys() {
     
      PropertyResolverStrategy propertyResolver = UtilityResolver.getDefaultPropertyResolverStrategy();
      Property namesFirst = propertyResolver.getProperty(PersonDto.class, "names['first']");
     
      Assert.assertNotNull(namesFirst);
      Assert.assertEquals(TypeFactory.valueOf(String.class), namesFirst.getType());
      Assert.assertNull(namesFirst.getContainer());
     
      VariableRef ref = new VariableRef(namesFirst, "destination");
      Assert.assertEquals("((java.lang.String)((java.util.Map)destination.names).get(\"first\"))", ref.toString());
  }
 
  @Test
  public void testMapElementProperties() {
     
        MapperFactory factory = MappingUtil.getMapperFactory();
       
        factory.classMap(Person.class, PersonDto.class)
                .field("name.first", "names['first']")
                .field("name.last", "names[\"last\"]")
                .register();
       
        MapperFacade mapper = factory.getMapperFacade();
       
        Person person = new Person();
        person.name = new Name();
        person.name.first = "Chuck";
        person.name.last = "Testa";
       
        PersonDto result = mapper.map(person, PersonDto.class);
       
        Assert.assertNotNull(result.names);
        Assert.assertEquals(person.name.first, result.names.get("first"));
        Assert.assertEquals(person.name.last, result.names.get("last"));
       
        Person mapBack = mapper.map(result, Person.class);
       
        Assert.assertNotNull(mapBack.name.first);
        Assert.assertEquals(person.name.first, mapBack.name.first);
        Assert.assertEquals(person.name.last, mapBack.name.last);
         
  }
 
  @Test
    public void testNestedMapElement() {
       
        MapperFactory factory = MappingUtil.getMapperFactory();
       
        factory.classMap(Person.class, PersonDto2.class)
                .field("name.first", "names['self'].first")
                .field("name.last", "names['self'].last")
                .field("father.first", "names['father'].first")
                .field("father.last", "names['father'].last")
                .register();
       
        MapperFacade mapper = factory.getMapperFacade();
       
        Person person = new Person();
        person.name = new Name();
        person.name.first = "Chuck";
        person.name.last = "Testa";
        person.father = new Name();
        person.father.first = "Buck";
        person.father.last = "Testa";
       
        PersonDto2 result = mapper.map(person, PersonDto2.class);
       
        Assert.assertNotNull(result.names);
        Assert.assertEquals(person.name.first, result.names.get("self").first);
        Assert.assertEquals(person.name.last, result.names.get("self").last);
        Assert.assertEquals(person.father.first, result.names.get("father").first);
        Assert.assertEquals(person.father.last, result.names.get("father").last);
       
        Person mapBack = mapper.map(result, Person.class);
       
        Assert.assertNotNull(mapBack.name.first);
        Assert.assertEquals(person.name.first, mapBack.name.first);
        Assert.assertEquals(person.name.last, mapBack.name.last);
        Assert.assertEquals(person.father.first, mapBack.father.first);
        Assert.assertEquals(person.father.last, mapBack.father.last);
           
    }
 
  public static class Person {
      public Name name;
      public Name father;
  }
 
  public static class PersonDto {
      public Map<String, String> names = new HashMap<String, String>();
  }
 
  public static class PersonDto2 {
      public Map<String, Name> names = new HashMap<String, Name>();
  }
 
  public static class Student {
      public Grade grade;
      public String id;
      public String email;
      public Name name;
  }
 
  public static class Name {
      public String first;
      public String last;
  }
 
  public static class Grade {
    public double point;
    public double percentage;
    public String letter;
  }

}
TOP

Related Classes of ma.glasnost.orika.test.generator.BeanToMapGenerationTestCase$Name

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.