diff --git a/java-collections-conversions-2/pom.xml b/java-collections-conversions-2/pom.xml
index b04d764719..ca4ed882dd 100644
--- a/java-collections-conversions-2/pom.xml
+++ b/java-collections-conversions-2/pom.xml
@@ -20,6 +20,23 @@
commons-lang3
${commons-lang3.version}
+
+ org.modelmapper
+ modelmapper
+ ${modelmapper.version}
+
+
+ junit
+ junit
+ ${junit.version}
+ test
+
+
+ org.hamcrest
+ hamcrest-all
+ ${hamcrest.version}
+ test
+
diff --git a/model-mapper/src/com/baeldung/util/MapperUtil.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java
similarity index 76%
rename from model-mapper/src/com/baeldung/util/MapperUtil.java
rename to java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java
index fe10b7777d..c02f012126 100644
--- a/model-mapper/src/com/baeldung/util/MapperUtil.java
+++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java
@@ -1,4 +1,4 @@
-package com.baeldung.util;
+package com.baeldung.modelmapper;
import org.modelmapper.ModelMapper;
import org.modelmapper.convention.MatchingStrategies;
@@ -8,7 +8,9 @@ import java.util.List;
/**
* @author sasam0320
- * @date 4/18/2020
+ * @description
+ * This is a helper class that contains methods for generic mapping of the users list.
+ * Initially, an instance of ModelMapper was created. In the static block we set the matching configuration to STRICT.
*/
public class MapperUtil {
@@ -28,16 +30,13 @@ public class MapperUtil {
}
public static T mapTo(final S source, final Class target) {
-
return modelMapper.map(source, target);
}
public static List mapList(final List sourceList, final Class target) {
-
List targetList = new ArrayList();
for (S source : sourceList) {
-
targetList.add(modelMapper.map(source, target));
}
diff --git a/model-mapper/src/com/baeldung/model/User.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java
similarity index 94%
rename from model-mapper/src/com/baeldung/model/User.java
rename to java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java
index 73e4baafb5..8f13b44894 100644
--- a/model-mapper/src/com/baeldung/model/User.java
+++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java
@@ -1,10 +1,8 @@
-package com.baeldung.model;
-
-import java.util.List;
+package com.baeldung.modelmapper;
/**
* @author sasam0320
- * @date 4/18/2020
+ * @description User model entity class
*/
public class User {
diff --git a/model-mapper/src/com/baeldung/model/UserDTO.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java
similarity index 68%
rename from model-mapper/src/com/baeldung/model/UserDTO.java
rename to java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java
index ed056ace8c..ce75eecefc 100644
--- a/model-mapper/src/com/baeldung/model/UserDTO.java
+++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java
@@ -1,17 +1,14 @@
-package com.baeldung.model;
-
-import java.util.List;
+package com.baeldung.modelmapper;
/**
* @author sasam0320
- * @date 4/18/2020
+ * @description UserDTO model class
*/
public class UserDTO {
private String userId;
private String userName;
private String email;
- private List usernames;
// getters and setters
@@ -39,11 +36,5 @@ public class UserDTO {
this.email = email;
}
- public List getUsernames() {
- return usernames;
- }
- public void setUsernames(List usernames) {
- this.usernames = usernames;
- }
}
diff --git a/model-mapper/src/com/baeldung/model/UserList.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserList.java
similarity index 74%
rename from model-mapper/src/com/baeldung/model/UserList.java
rename to java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserList.java
index b30d5507d5..02361da469 100644
--- a/model-mapper/src/com/baeldung/model/UserList.java
+++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserList.java
@@ -1,12 +1,11 @@
-package com.baeldung.model;
+package com.baeldung.modelmapper;
import java.util.Collection;
/**
* @author sasam0320
- * @date 4/18/2020
+ * @description UserList class that contain collection of users
*/
-
public class UserList {
private Collection users;
diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java
new file mode 100644
index 0000000000..fba311c1a3
--- /dev/null
+++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java
@@ -0,0 +1,20 @@
+package com.baeldung.modelmapper;
+
+import java.util.List;
+
+/**
+ * @author sasam0320
+ * @description UserListDTO class that contain list of username properties
+ */
+public class UserListDTO {
+
+ private List usernames;
+
+ public List getUsernames() {
+ return usernames;
+ }
+
+ public void setUsernames(List usernames) {
+ this.usernames = usernames;
+ }
+}
diff --git a/model-mapper/src/com/baeldung/util/UserPropertyMap.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java
similarity index 68%
rename from model-mapper/src/com/baeldung/util/UserPropertyMap.java
rename to java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java
index 4346174440..9fa945ce32 100644
--- a/model-mapper/src/com/baeldung/util/UserPropertyMap.java
+++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java
@@ -1,8 +1,5 @@
-package com.baeldung.util;
+package com.baeldung.modelmapper;
-import com.baeldung.model.User;
-import com.baeldung.model.UserDTO;
-import com.baeldung.model.UserList;
import org.modelmapper.AbstractConverter;
import org.modelmapper.Converter;
import org.modelmapper.PropertyMap;
@@ -11,10 +8,11 @@ import java.util.List;
/**
* @author sasam0320
- * @date 4/18/2020
+ * @description
+ * UserPropertyMap class instantiates the converter to map the data from the user list to the user name list.
+ * In the configuration method, we call a converter to do the mapping.
*/
-
-public class UserPropertyMap extends PropertyMap {
+public class UserPropertyMap extends PropertyMap {
Converter, List> converter = new AbstractConverter, List>() {
diff --git a/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UserMappingTest.java b/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UserMappingTest.java
new file mode 100644
index 0000000000..44a929621b
--- /dev/null
+++ b/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UserMappingTest.java
@@ -0,0 +1,85 @@
+package com.baeldung.modelmapper;
+
+import org.hamcrest.Matchers;
+import org.junit.Before;
+import org.junit.Test;
+import org.modelmapper.ModelMapper;
+import org.modelmapper.TypeToken;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.hasItems;
+import static org.hamcrest.Matchers.hasProperty;
+import static org.hamcrest.collection.IsCollectionWithSize.hasSize;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
+
+
+/**
+ * @sasam0320
+ * @description
+ * This class has test methods of mapping Integer to Character list,
+ * mapping user list to DTO list using MapperUtil generic methods and Converter
+ */
+public class UserMappingTest {
+
+ private ModelMapper mapper;
+ private List users;
+
+ @Before
+ public void init() {
+
+ mapper = new ModelMapper();
+ mapper.addMappings(new UserPropertyMap());
+ users = new ArrayList();
+ users.add(new User("b100", "user1", "user1@baeldung.com", "111-222", "USER"));
+ users.add(new User("b101", "user2", "user2@baeldung.com", "111-333", "USER"));
+ users.add(new User("b102", "user3", "user3@baeldung.com", "111-444", "ADMIN"));
+
+ }
+
+ @Test
+ public void testMapIntegerList() {
+
+ List integers = new ArrayList();
+
+ integers.add(1);
+ integers.add(2);
+ integers.add(3);
+
+ List characters = mapper.map(integers, new TypeToken>() {
+ }.getType());
+
+ assertThat(characters, hasItems('1','2','3'));
+
+ }
+
+ @Test
+ public void testMapGenericTypeLists() {
+
+ // Mapping lists using generic type methods
+
+ List userDtoList = MapperUtil.mapList(users, UserDTO.class);
+
+ assertThat(userDtoList, Matchers.hasItem(
+ Matchers.both(hasProperty("userId", equalTo("b100")))
+ .and(hasProperty("email", equalTo("user1@baeldung.com")))
+ .and(hasProperty("userName", equalTo("user1")))));
+
+ // Mapping lists using PropertyMap and Converter
+
+ UserList userList = new UserList();
+ userList.setUsers(users);
+ UserListDTO dto = new UserListDTO();
+ mapper.map(userList, dto);
+
+ assertNotNull(dto);
+ assertThat(dto, Matchers.hasProperty("usernames"));
+ assertThat(dto.getUsernames(), hasSize(3));
+
+ }
+
+}
\ No newline at end of file
diff --git a/model-mapper/src/Main.java b/model-mapper/src/Main.java
deleted file mode 100644
index a6deb49168..0000000000
--- a/model-mapper/src/Main.java
+++ /dev/null
@@ -1,58 +0,0 @@
-import com.baeldung.model.User;
-import com.baeldung.model.UserDTO;
-import com.baeldung.model.UserList;
-import com.baeldung.util.MapperUtil;
-import com.baeldung.util.UserPropertyMap;
-import org.modelmapper.ModelMapper;
-import org.modelmapper.TypeToken;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author sasam0320
- * @date 4/18/2020
- */
-
-public class Main {
-
- public static void main(String[] args) {
-
- //Instantiate ModelMapper
-
- ModelMapper mapper = new ModelMapper();
- mapper.addMappings(new UserPropertyMap());
-
- // Mapping lists using TypeToken generic class
-
- List integers = new ArrayList();
-
- integers.add(1);
- integers.add(2);
- integers.add(3);
-
- List characters = mapper.map(integers, new TypeToken>() {}.getType());
-
- System.out.println("Character list: " + characters);
-
- // Mapping lists using generic type methods
-
- List users = new ArrayList();
- users.add(new User("b100", "user1", "user1@baeldung.com", "111-222", "USER"));
- users.add(new User("b101", "user2", "user2@baeldung.com", "111-333", "USER"));
- users.add(new User("b102", "user3", "user3@baeldung.com", "111-444", "ADMIN"));
-
- List userDtoList = MapperUtil.mapList(users, UserDTO.class);
- userDtoList.stream().map(userDto -> userDto.getEmail()).forEachOrdered(System.out::println);
-
- // Mapping lists using PropertyMap and Converter
-
- UserList userList = new UserList();
- userList.setUsers(users);
- UserDTO dto = new UserDTO();
-
- mapper.map(userList, dto);
- dto.getUsernames().forEach(System.out::println);
-
- }
-}
diff --git a/parent-java/pom.xml b/parent-java/pom.xml
index 4828bc2abb..ba786d912c 100644
--- a/parent-java/pom.xml
+++ b/parent-java/pom.xml
@@ -45,6 +45,9 @@
23.0
2.6
1.19
+ 2.3.6
+ 4.12
+ 1.3