Merge pull request #573 from egimaben/master
added project for orika tutorial
This commit is contained in:
commit
14d33019b7
|
@ -0,0 +1,50 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.baeldung</groupId>
|
||||
<artifactId>orika</artifactId>
|
||||
<version>1.0</version>
|
||||
<name>Orika</name>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.3</version>
|
||||
<configuration>
|
||||
<source>7</source>
|
||||
<target>7</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
<version>1.7.5</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>jcl-over-slf4j</artifactId>
|
||||
<version>1.7.5</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>ma.glasnost.orika</groupId>
|
||||
<artifactId>orika-core</artifactId>
|
||||
<version>1.4.6</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.3</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</project>
|
|
@ -0,0 +1,38 @@
|
|||
package com.baeldung.orika;
|
||||
|
||||
public class Dest {
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Dest [name=" + name + ", age=" + age + "]";
|
||||
}
|
||||
|
||||
private String name;
|
||||
private int age;
|
||||
|
||||
public Dest() {
|
||||
|
||||
}
|
||||
|
||||
public Dest(String name, int age) {
|
||||
super();
|
||||
this.name = name;
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public int getAge() {
|
||||
return age;
|
||||
}
|
||||
|
||||
public void setAge(int age) {
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package com.baeldung.orika;
|
||||
|
||||
public class Name {
|
||||
private String firstName;
|
||||
private String lastName;
|
||||
|
||||
public Name(String firstName, String lastName) {
|
||||
super();
|
||||
this.firstName = firstName;
|
||||
this.lastName = lastName;
|
||||
}
|
||||
|
||||
public String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
|
||||
public void setFirstName(String firstName) {
|
||||
this.firstName = firstName;
|
||||
}
|
||||
|
||||
public String getLastName() {
|
||||
return lastName;
|
||||
}
|
||||
|
||||
public void setLastName(String lastName) {
|
||||
this.lastName = lastName;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
package com.baeldung.orika;
|
||||
|
||||
public class Person {
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Person [name=" + name + ", nickname=" + nickname + ", age="
|
||||
+ age + "]";
|
||||
}
|
||||
|
||||
private String name;
|
||||
private String nickname;
|
||||
private int age;
|
||||
|
||||
public Person() {
|
||||
|
||||
}
|
||||
|
||||
public Person(String name, String nickname, int age) {
|
||||
super();
|
||||
this.name = name;
|
||||
this.nickname = nickname;
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getNickname() {
|
||||
return nickname;
|
||||
}
|
||||
|
||||
public void setNickname(String nickname) {
|
||||
this.nickname = nickname;
|
||||
}
|
||||
|
||||
public int getAge() {
|
||||
return age;
|
||||
}
|
||||
|
||||
public void setAge(int age) {
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
package com.baeldung.orika;
|
||||
|
||||
public class Person3 {
|
||||
private String name;
|
||||
private String dtob;
|
||||
|
||||
public Person3() {
|
||||
|
||||
}
|
||||
|
||||
public Person3(String name, String dtob) {
|
||||
super();
|
||||
this.name = name;
|
||||
this.dtob = dtob;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getDtob() {
|
||||
return dtob;
|
||||
}
|
||||
|
||||
public void setDtob(String dtob) {
|
||||
this.dtob = dtob;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Person3 [name=" + name + ", dtob=" + dtob + "]";
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package com.baeldung.orika;
|
||||
|
||||
public class PersonContainer {
|
||||
private Name name;
|
||||
|
||||
public PersonContainer(Name name) {
|
||||
super();
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Name getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(Name name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package com.baeldung.orika;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class PersonListContainer {
|
||||
private List<Name> names;
|
||||
|
||||
public PersonListContainer(List<Name> names) {
|
||||
super();
|
||||
this.names = names;
|
||||
}
|
||||
|
||||
public List<Name> getNames() {
|
||||
return names;
|
||||
}
|
||||
|
||||
public void setNames(List<Name> names) {
|
||||
this.names = names;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package com.baeldung.orika;
|
||||
|
||||
public class PersonNameArray {
|
||||
private String[] nameArray;
|
||||
|
||||
public PersonNameArray(String[] nameArray) {
|
||||
super();
|
||||
this.nameArray = nameArray;
|
||||
}
|
||||
|
||||
public String[] getNameArray() {
|
||||
return nameArray;
|
||||
}
|
||||
|
||||
public void setNameArray(String[] nameArray) {
|
||||
this.nameArray = nameArray;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package com.baeldung.orika;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class PersonNameList {
|
||||
private List<String> nameList;
|
||||
|
||||
public PersonNameList(List<String> nameList) {
|
||||
super();
|
||||
this.nameList = nameList;
|
||||
}
|
||||
|
||||
public List<String> getNameList() {
|
||||
return nameList;
|
||||
}
|
||||
|
||||
public void setNameList(List<String> nameList) {
|
||||
this.nameList = nameList;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package com.baeldung.orika;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class PersonNameMap {
|
||||
private Map<String, String> nameMap;
|
||||
|
||||
public PersonNameMap(Map<String, String> nameMap) {
|
||||
super();
|
||||
this.nameMap = nameMap;
|
||||
}
|
||||
|
||||
public PersonNameMap() {
|
||||
super();
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
public Map<String, String> getNameMap() {
|
||||
return nameMap;
|
||||
}
|
||||
|
||||
public void setNameMap(Map<String, String> nameList) {
|
||||
this.nameMap = nameList;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package com.baeldung.orika;
|
||||
|
||||
public class PersonNameParts {
|
||||
private String firstName;
|
||||
private String lastName;
|
||||
|
||||
public PersonNameParts(String firstName, String lastName) {
|
||||
super();
|
||||
this.firstName = firstName;
|
||||
this.lastName = lastName;
|
||||
}
|
||||
|
||||
public String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
|
||||
public void setFirstName(String firstName) {
|
||||
this.firstName = firstName;
|
||||
}
|
||||
|
||||
public String getLastName() {
|
||||
return lastName;
|
||||
}
|
||||
|
||||
public void setLastName(String lastName) {
|
||||
this.lastName = lastName;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
package com.baeldung.orika;
|
||||
|
||||
public class Personne {
|
||||
private String nom;
|
||||
private String surnom;
|
||||
private int age;
|
||||
|
||||
public Personne() {
|
||||
|
||||
}
|
||||
|
||||
public Personne(String nom, String surnom, int age) {
|
||||
super();
|
||||
this.nom = nom;
|
||||
this.surnom = surnom;
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
public String getNom() {
|
||||
return nom;
|
||||
}
|
||||
|
||||
public void setNom(String nom) {
|
||||
this.nom = nom;
|
||||
}
|
||||
|
||||
public String getSurnom() {
|
||||
return surnom;
|
||||
}
|
||||
|
||||
public void setSurnom(String surnom) {
|
||||
this.surnom = surnom;
|
||||
}
|
||||
|
||||
public int getAge() {
|
||||
return age;
|
||||
}
|
||||
|
||||
public void setAge(int age) {
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Personne [nom=" + nom + ", surnom=" + surnom + ", age=" + age
|
||||
+ "]";
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
package com.baeldung.orika;
|
||||
|
||||
public class Personne3 {
|
||||
private String name;
|
||||
private long dtob;
|
||||
|
||||
public Personne3() {
|
||||
|
||||
}
|
||||
|
||||
public Personne3(String name, long dtob) {
|
||||
super();
|
||||
this.name = name;
|
||||
this.dtob = dtob;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public long getDtob() {
|
||||
return dtob;
|
||||
}
|
||||
|
||||
public void setDtob(long dtob) {
|
||||
this.dtob = dtob;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Personne3 [name=" + name + ", dtob=" + dtob + "]";
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
package com.baeldung.orika;
|
||||
|
||||
public class Source {
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Source [name=" + name + ", age=" + age + "]";
|
||||
}
|
||||
|
||||
private String name;
|
||||
private int age;
|
||||
|
||||
public Source() {
|
||||
}
|
||||
|
||||
public Source(String name, int age) {
|
||||
super();
|
||||
this.name = name;
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public int getAge() {
|
||||
return age;
|
||||
}
|
||||
|
||||
public void setAge(int age) {
|
||||
this.age = age;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,394 @@
|
|||
package com.baeldung.orika;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import ma.glasnost.orika.BoundMapperFacade;
|
||||
import ma.glasnost.orika.CustomMapper;
|
||||
import ma.glasnost.orika.MapperFacade;
|
||||
import ma.glasnost.orika.MapperFactory;
|
||||
import ma.glasnost.orika.MappingContext;
|
||||
import ma.glasnost.orika.impl.DefaultMapperFactory;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
public class OrikaTest {
|
||||
MapperFactory mapperFactory;
|
||||
CustomMapper<Personne3, Person3> customMapper;
|
||||
// constant to help us cover time zone differences
|
||||
private final long GMT_DIFFERENCE = 46800000;
|
||||
|
||||
@Before
|
||||
public void before() {
|
||||
mapperFactory = new DefaultMapperFactory.Builder().build();
|
||||
customMapper = new CustomMapper<Personne3, Person3>() {
|
||||
|
||||
@Override
|
||||
public void mapAtoB(Personne3 a, Person3 b, MappingContext context) {
|
||||
Date date = new Date(a.getDtob());
|
||||
DateFormat format = new SimpleDateFormat(
|
||||
"yyyy-MM-dd'T'HH:mm:ss'Z'");
|
||||
String isoDate = format.format(date);
|
||||
b.setDtob(isoDate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mapBtoA(Person3 b, Personne3 a, MappingContext context) {
|
||||
DateFormat format = new SimpleDateFormat(
|
||||
"yyyy-MM-dd'T'HH:mm:ss'Z'");
|
||||
Date date = null;
|
||||
try {
|
||||
date = format.parse(b.getDtob());
|
||||
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
long timestamp = date.getTime();
|
||||
a.setDtob(timestamp);
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSrcAndDest_whenMaps_thenCorrect() {
|
||||
mapperFactory.classMap(Source.class, Dest.class);
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
Source src = new Source("Baeldung", 10);
|
||||
Dest dest = mapper.map(src, Dest.class);
|
||||
assertEquals(dest.getAge(), src.getAge());
|
||||
assertEquals(dest.getName(), src.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSrcAndDest_whenMapsReverse_thenCorrect() {
|
||||
mapperFactory.classMap(Source.class, Dest.class).byDefault();
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
Dest src = new Dest("Baeldung", 10);
|
||||
Source dest = mapper.map(src, Source.class);
|
||||
assertEquals(dest.getAge(), src.getAge());
|
||||
assertEquals(dest.getName(), src.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSrcAndDest_whenMapsByObject_thenCorrect() {
|
||||
mapperFactory.classMap(Source.class, Dest.class).byDefault();
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
Source src = new Source("Baeldung", 10);
|
||||
Dest dest = new Dest();
|
||||
mapper.map(src, dest);
|
||||
assertEquals(dest.getAge(), src.getAge());
|
||||
assertEquals(dest.getName(), src.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSrcAndDest_whenMapsUsingBoundMapper_thenCorrect() {
|
||||
BoundMapperFacade<Source, Dest> boundMapper = mapperFactory
|
||||
.getMapperFacade(Source.class, Dest.class);
|
||||
Source src = new Source("baeldung", 10);
|
||||
Dest dest = boundMapper.map(src);
|
||||
assertEquals(dest.getAge(), src.getAge());
|
||||
assertEquals(dest.getName(), src.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSrcAndDest_whenMapsUsingBoundMapperInReverse_thenCorrect() {
|
||||
BoundMapperFacade<Source, Dest> boundMapper = mapperFactory
|
||||
.getMapperFacade(Source.class, Dest.class);
|
||||
Dest src = new Dest("baeldung", 10);
|
||||
Source dest = boundMapper.mapReverse(src);
|
||||
assertEquals(dest.getAge(), src.getAge());
|
||||
assertEquals(dest.getName(), src.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSrcAndDest_whenMapsUsingBoundMapperByObject_thenCorrect() {
|
||||
BoundMapperFacade<Source, Dest> boundMapper = mapperFactory
|
||||
.getMapperFacade(Source.class, Dest.class);
|
||||
Source src = new Source("baeldung", 10);
|
||||
Dest dest = new Dest();
|
||||
boundMapper.map(src, dest);
|
||||
assertEquals(dest.getAge(), src.getAge());
|
||||
assertEquals(dest.getName(), src.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSrcAndDest_whenMapsUsingBoundMapperByObjectInReverse_thenCorrect() {
|
||||
BoundMapperFacade<Source, Dest> boundMapper = mapperFactory
|
||||
.getMapperFacade(Source.class, Dest.class);
|
||||
Dest src = new Dest("baeldung", 10);
|
||||
Source dest = new Source();
|
||||
boundMapper.mapReverse(src, dest);
|
||||
assertEquals(dest.getAge(), src.getAge());
|
||||
assertEquals(dest.getName(), src.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSrcAndDestWithDifferentFieldNames_whenMaps_thenCorrect() {
|
||||
mapperFactory.classMap(Personne.class, Person.class)
|
||||
.field("nom", "name").field("surnom", "nickname")
|
||||
.field("age", "age").register();
|
||||
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
|
||||
Personne frenchPerson = new Personne("Claire", "cla", 25);
|
||||
Person englishPerson = mapper.map(frenchPerson, Person.class);
|
||||
|
||||
assertEquals(englishPerson.getName(), frenchPerson.getNom());
|
||||
assertEquals(englishPerson.getNickname(), frenchPerson.getSurnom());
|
||||
assertEquals(englishPerson.getAge(), frenchPerson.getAge());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenBothDifferentAndSameFieldNames_whenFailsToMapSameNameFieldAutomatically_thenCorrect() {
|
||||
mapperFactory.classMap(Personne.class, Person.class)
|
||||
.field("nom", "name").field("surnom", "nickname").register();
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
Personne frenchPerson = new Personne("Claire", "cla", 25);
|
||||
|
||||
Person englishPerson = mapper.map(frenchPerson, Person.class);
|
||||
assertFalse(englishPerson.getAge() == frenchPerson.getAge());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenBothDifferentAndSameFieldNames_whenMapsSameNameFieldByDefault_thenCorrect() {
|
||||
mapperFactory.classMap(Personne.class, Person.class)
|
||||
.field("nom", "name").field("surnom", "nickname").byDefault()
|
||||
.register();
|
||||
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
Personne frenchPerson = new Personne("Claire", "cla", 25);
|
||||
|
||||
Person englishPerson = mapper.map(frenchPerson, Person.class);
|
||||
assertEquals(englishPerson.getName(), frenchPerson.getNom());
|
||||
assertEquals(englishPerson.getNickname(), frenchPerson.getSurnom());
|
||||
assertEquals(englishPerson.getAge(), frenchPerson.getAge());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenUnidirectionalMappingSetup_whenMapsUnidirectionally_thenCorrect() {
|
||||
mapperFactory.classMap(Personne.class, Person.class)
|
||||
.fieldAToB("nom", "name").fieldAToB("surnom", "nickname")
|
||||
.fieldAToB("age", "age").register();
|
||||
;
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
Personne frenchPerson = new Personne("Claire", "cla", 25);
|
||||
|
||||
Person englishPerson = mapper.map(frenchPerson, Person.class);
|
||||
assertEquals(englishPerson.getName(), frenchPerson.getNom());
|
||||
assertEquals(englishPerson.getNickname(), frenchPerson.getSurnom());
|
||||
assertEquals(englishPerson.getAge(), frenchPerson.getAge());
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void givenSrcAndDest_whenCanExcludeField_thenCorrect() {
|
||||
mapperFactory.classMap(Personne.class, Person.class).exclude("nom")
|
||||
.field("surnom", "nickname").field("age", "age").register();
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
|
||||
Personne frenchPerson = new Personne("Claire", "cla", 25);
|
||||
Person englishPerson = mapper.map(frenchPerson, Person.class);
|
||||
|
||||
assertEquals(null, englishPerson.getName());
|
||||
assertEquals(englishPerson.getNickname(), frenchPerson.getSurnom());
|
||||
assertEquals(englishPerson.getAge(), frenchPerson.getAge());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSpecificConstructorToUse_whenMaps_thenCorrect() {
|
||||
mapperFactory.classMap(Personne.class, Person.class).constructorB()
|
||||
.field("nom", "name").field("surnom", "nickname")
|
||||
.field("age", "age").register();
|
||||
;
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
Personne frenchPerson = new Personne("Claire", "cla", 25);
|
||||
|
||||
Person englishPerson = mapper.map(frenchPerson, Person.class);
|
||||
assertEquals(englishPerson.getName(), frenchPerson.getNom());
|
||||
assertEquals(englishPerson.getNickname(), frenchPerson.getSurnom());
|
||||
assertEquals(englishPerson.getAge(), frenchPerson.getAge());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSrcWithListAndDestWithPrimitiveAttributes_whenMaps_thenCorrect() {
|
||||
mapperFactory.classMap(PersonNameList.class, PersonNameParts.class)
|
||||
.field("nameList[0]", "firstName")
|
||||
.field("nameList[1]", "lastName").register();
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
List<String> nameList = Arrays.asList(new String[] { "Sylvester",
|
||||
"Stallone" });
|
||||
PersonNameList src = new PersonNameList(nameList);
|
||||
PersonNameParts dest = mapper.map(src, PersonNameParts.class);
|
||||
assertEquals(dest.getFirstName(), "Sylvester");
|
||||
assertEquals(dest.getLastName(), "Stallone");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSrcWithArrayAndDestWithPrimitiveAttributes_whenMaps_thenCorrect() {
|
||||
mapperFactory.classMap(PersonNameArray.class, PersonNameParts.class)
|
||||
.field("nameArray[0]", "firstName")
|
||||
.field("nameArray[1]", "lastName").register();
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
String[] nameArray = new String[] { "Vin", "Diesel" };
|
||||
PersonNameArray src = new PersonNameArray(nameArray);
|
||||
PersonNameParts dest = mapper.map(src, PersonNameParts.class);
|
||||
assertEquals(dest.getFirstName(), "Vin");
|
||||
assertEquals(dest.getLastName(), "Diesel");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSrcWithMapAndDestWithPrimitiveAttributes_whenMaps_thenCorrect() {
|
||||
mapperFactory.classMap(PersonNameMap.class, PersonNameParts.class)
|
||||
.field("nameMap['first']", "firstName")
|
||||
.field("nameMap[\"last\"]", "lastName").register();
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
Map<String, String> nameMap = new HashMap<>();
|
||||
nameMap.put("first", "Leornado");
|
||||
nameMap.put("last", "DiCaprio");
|
||||
PersonNameMap src = new PersonNameMap(nameMap);
|
||||
PersonNameParts dest = mapper.map(src, PersonNameParts.class);
|
||||
assertEquals(dest.getFirstName(), "Leornado");
|
||||
assertEquals(dest.getLastName(), "DiCaprio");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSrcWithNestedFields_whenMaps_thenCorrect() {
|
||||
mapperFactory.classMap(PersonContainer.class, PersonNameParts.class)
|
||||
.field("name.firstName", "firstName")
|
||||
.field("name.lastName", "lastName").register();
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
PersonContainer src = new PersonContainer(new Name("Nick", "Canon"));
|
||||
PersonNameParts dest = mapper.map(src, PersonNameParts.class);
|
||||
assertEquals(dest.getFirstName(), "Nick");
|
||||
assertEquals(dest.getLastName(), "Canon");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSrcWithNullField_whenMapsThenCorrect() {
|
||||
mapperFactory.classMap(Source.class, Dest.class).byDefault();
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
Source src = new Source(null, 10);
|
||||
Dest dest = mapper.map(src, Dest.class);
|
||||
assertEquals(dest.getAge(), src.getAge());
|
||||
assertEquals(dest.getName(), src.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSrcWithNullAndGlobalConfigForNoNull_whenFailsToMap_ThenCorrect() {
|
||||
MapperFactory mapperFactory = new DefaultMapperFactory.Builder()
|
||||
.mapNulls(false).build();
|
||||
mapperFactory.classMap(Source.class, Dest.class);
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
Source src = new Source(null, 10);
|
||||
Dest dest = new Dest("Clinton", 55);
|
||||
mapper.map(src, dest);
|
||||
assertEquals(dest.getAge(), src.getAge());
|
||||
assertEquals(dest.getName(), "Clinton");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSrcWithNullAndLocalConfigForNoNull_whenFailsToMap_ThenCorrect() {
|
||||
mapperFactory.classMap(Source.class, Dest.class).field("age", "age")
|
||||
.mapNulls(false).field("name", "name").byDefault().register();
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
Source src = new Source(null, 10);
|
||||
Dest dest = new Dest("Clinton", 55);
|
||||
mapper.map(src, dest);
|
||||
assertEquals(dest.getAge(), src.getAge());
|
||||
assertEquals(dest.getName(), "Clinton");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenDestWithNullReverseMappedToSource_whenMapsByDefault_thenCorrect() {
|
||||
mapperFactory.classMap(Source.class, Dest.class).byDefault();
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
Dest src = new Dest(null, 10);
|
||||
Source dest = new Source("Vin", 44);
|
||||
mapper.map(src, dest);
|
||||
assertEquals(dest.getAge(), src.getAge());
|
||||
assertEquals(dest.getName(), src.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenDestWithNullReverseMappedToSourceAndLocalConfigForNoNull_whenFailsToMap_thenCorrect() {
|
||||
mapperFactory.classMap(Source.class, Dest.class).field("age", "age")
|
||||
.mapNullsInReverse(false).field("name", "name").byDefault()
|
||||
.register();
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
Dest src = new Dest(null, 10);
|
||||
Source dest = new Source("Vin", 44);
|
||||
mapper.map(src, dest);
|
||||
assertEquals(dest.getAge(), src.getAge());
|
||||
assertEquals(dest.getName(), "Vin");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSrcWithNullAndFieldLevelConfigForNoNull_whenFailsToMap_ThenCorrect() {
|
||||
mapperFactory.classMap(Source.class, Dest.class).field("age", "age")
|
||||
.fieldMap("name", "name").mapNulls(false).add().byDefault()
|
||||
.register();
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
Source src = new Source(null, 10);
|
||||
Dest dest = new Dest("Clinton", 55);
|
||||
mapper.map(src, dest);
|
||||
assertEquals(dest.getAge(), src.getAge());
|
||||
assertEquals(dest.getName(), "Clinton");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSrcAndDest_whenCustomMapperWorks_thenCorrect() {
|
||||
mapperFactory.classMap(Personne3.class, Person3.class)
|
||||
.customize(customMapper).register();
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
long timestamp = new Long("1182882159000");
|
||||
Personne3 person0 = new Personne3("Leornardo", timestamp);
|
||||
Person3 person = mapper.map(person0, Person3.class);
|
||||
|
||||
String timestampTest = person.getDtob();
|
||||
// since different timezones will resolve the timestamp to a different
|
||||
// datetime string, it suffices to check only for format rather than
|
||||
// specific date
|
||||
assertTrue(timestampTest.charAt(10) == 'T'
|
||||
&& timestampTest.charAt(19) == 'Z');
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenSrcAndDest_whenCustomMapperWorksBidirectionally_thenCorrect() {
|
||||
mapperFactory.classMap(Personne3.class, Person3.class)
|
||||
.customize(customMapper).register();
|
||||
MapperFacade mapper = mapperFactory.getMapperFacade();
|
||||
|
||||
String dateTime = "2007-06-26T21:22:39Z";
|
||||
long timestamp = new Long("1182882159000");
|
||||
Person3 person0 = new Person3("Leornardo", dateTime);
|
||||
Personne3 person = mapper.map(person0, Personne3.class);
|
||||
long timestampToTest = person.getDtob();
|
||||
/*
|
||||
* since different timezones will resolve the datetime to a different
|
||||
* unix timestamp, we must provide a range of tolerance
|
||||
*/
|
||||
assertTrue(timestampToTest == timestamp
|
||||
|| timestampToTest >= timestamp - GMT_DIFFERENCE
|
||||
|| timestampToTest <= timestamp + GMT_DIFFERENCE);
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue