@Test public void shouldMapNestedElement() { // given MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build(); mapperFactory .classMap(BasicPerson.class, BasicPersonDto.class) .field("nestedElement.nip", "nip") .register(); BasicPerson bp = new BasicPerson(); NestedElement nestedElement = new NestedElement(); nestedElement.setNip(NIP); bp.setNestedElement(nestedElement); // when MapperFacade mapperFacade = mapperFactory.getMapperFacade(); BasicPersonDto result = mapperFacade.map(bp, BasicPersonDto.class); // then assertThat(result.getNip()).isNotNull(); assertThat(result.getNip()).isEqualTo(NIP); assertThat(result.getFirstName()).isNull(); assertThat(result.getLastName()).isNull(); assertThat(result.getBirthDate()).isNull(); assertThat(result.getCurrentAge()).isEqualTo(0); assertThat(result.getFullName()).isNull(); }
@Test public void shouldMapWithCustomizedClassMapBuilder() { // given MapperFactory mapperFactory = new DefaultMapperFactory.Builder() .classMapBuilderFactory(new ScoringClassMapBuilder.Factory()) .build(); mapperFactory.classMap(Source.class, Destination.class).byDefault().register(); MapperFacade mapperFacade = mapperFactory.getMapperFacade(); Source src = new Source(); src.firstName = "Jan"; src.postalAddress = new PostalAddress(); src.postalAddress.country = new Country(); src.postalAddress.country.alphaCode = "PL"; // when Destination result = mapperFacade.map(src, Destination.class); // then assertThat(result.name.first).isEqualTo("Jan"); assertThat(result.countryCode).isEqualTo("PL"); }
@Test public void shouldMapMapElements() { // given MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build(); mapperFactory .classMap(BasicPerson.class, BasicPersonDto.class) .field("namePartsMap[\"first\"]", "firstName") .field("namePartsMap['second']", "lastName") .register(); BasicPerson bp = new BasicPerson(); Map<String, String> nameParamsMap = new HashMap<String, String>(); nameParamsMap.put("first", "Jan"); nameParamsMap.put("second", "Kowalski"); bp.setNamePartsMap(nameParamsMap); // when MapperFacade mapperFacade = mapperFactory.getMapperFacade(); BasicPersonDto result = mapperFacade.map(bp, BasicPersonDto.class); // then assertThat(result.getFirstName()).isEqualTo("Jan"); assertThat(result.getLastName()).isEqualTo("Kowalski"); assertThat(result.getBirthDate()).isNull(); assertThat(result.getCurrentAge()).isEqualTo(0); assertThat(result.getFullName()).isNull(); }
@Test public void shouldMapListElements() { // given MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build(); mapperFactory .classMap(BasicPerson.class, BasicPersonDto.class) .field("nameParts[0]", "firstName") .field("nameParts[1]", "lastName") .register(); BasicPerson bp = new BasicPerson(); bp.setNameParts(Lists.asList("Jan", new String[] {"Kowalski"})); // when MapperFacade mapperFacade = mapperFactory.getMapperFacade(); BasicPersonDto result = mapperFacade.map(bp, BasicPersonDto.class); // then assertThat(result.getFirstName()).isEqualTo("Jan"); assertThat(result.getLastName()).isEqualTo("Kowalski"); assertThat(result.getBirthDate()).isNull(); assertThat(result.getCurrentAge()).isEqualTo(0); assertThat(result.getFullName()).isNull(); }
@Test public void shouldExplicitlySpecifyConstructor() { // given MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build(); mapperFactory .classMap(BasicPerson.class, BasicPersonDtoWithConstructor.class) .constructorB("birthDate") .fieldAToB("name", "fullName") // .field("age", "currentAge") .byDefault() .register(); BasicPerson bp = createBasicPerson("Jan", 20, Calendar.getInstance().getTime()); // when MapperFacade mapperFacade = mapperFactory.getMapperFacade(); BasicPersonDtoWithConstructor result = mapperFacade.map(bp, BasicPersonDtoWithConstructor.class); // then assertThat(result.getFullName()).isEqualTo(bp.getName()); assertThat(result.getCurrentAge()).isEqualTo(0); // !! assertThat(result.getBirthDate()).isNotNull(); }
@Test public void shouldCustomizeMapping() { // given MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build(); mapperFactory .classMap(BasicPerson.class, BasicPersonDto.class) .field("age", "currentAge") .byDefault() .customize( new CustomMapper<BasicPerson, BasicPersonDto>() { @Override public void mapAtoB( BasicPerson basicPerson, BasicPersonDto basicPersonDto, MappingContext context) { Joiner joiner = Joiner.on(" "); String fullName = joiner .appendTo( new StringBuilder(basicPerson.getName()).append(" "), basicPerson.getNameParts()) .toString(); basicPersonDto.setFullName(fullName); } }) .register(); BasicPerson bp = createBasicPerson("Jan", 20, Calendar.getInstance().getTime()); bp.setNameParts(Lists.asList("von", new String[] {"Kowalski"})); // when MapperFacade mapperFacade = mapperFactory.getMapperFacade(); BasicPersonDto result = mapperFacade.map(bp, BasicPersonDto.class); // then assertThat(result.getFullName()).isEqualTo("Jan von Kowalski"); assertThat(result.getCurrentAge()).isEqualTo(bp.getAge()); assertThat(result.getBirthDate()).isNotNull(); }
@Test public void shouldRegisterClassMap() { // given MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build(); mapperFactory .classMap(BasicPerson.class, BasicPersonDto.class) .field("name", "fullName") .field("age", "currentAge") .register(); BasicPerson bp = createBasicPerson("Jan", 20, Calendar.getInstance().getTime()); // when MapperFacade mapperFacade = mapperFactory.getMapperFacade(); BasicPersonDto result = mapperFacade.map(bp, BasicPersonDto.class); // then assertThat(result.getFullName()).isEqualTo(bp.getName()); assertThat(result.getCurrentAge()).isEqualTo(bp.getAge()); assertThat(result.getBirthDate()).isNull(); }