Java 11 migrate c-d (remaining) (#1111)
* Moves converter pattern to Java 11 * Moves cqrs pattern to Java 11 * Moves dao pattern to Java 11 * Moves data-bus pattern to Java 11 * Moves data-locality pattern to Java 11 * Moves data-mapper pattern to Java 11 * Moves data-transfer-object pattern to Java 11 * Moves decorator pattern to Java 11 * Moves delegation pattern to Java 11 * Moves dependency-injection to Java 11 * Moves dirty-flag to Java 11 * Moves double-buffer to Java 11 * Moves double-checked-locking to Java 11 * Moves double-dispatch to Java 11 * Corrects with changes thats breaking test cases
This commit is contained in:
committed by
Ilkka Seppälä
parent
5681684157
commit
ea57934db6
@ -63,20 +63,26 @@ The specialized converters inherit from this base class as follows.
|
||||
public class UserConverter extends Converter<UserDto, User> {
|
||||
|
||||
public UserConverter() {
|
||||
super(userDto -> new User(userDto.getFirstName(), userDto.getLastName(), userDto.isActive(),
|
||||
userDto.getEmail()),
|
||||
user -> new UserDto(user.getFirstName(), user.getLastName(), user.isActive(),
|
||||
user.getUserId()));
|
||||
super(UserConverter::convertToEntity, UserConverter::convertToDto);
|
||||
}
|
||||
|
||||
private static UserDto convertToDto(User user) {
|
||||
return new UserDto(user.getFirstName(), user.getLastName(), user.isActive(), user.getUserId());
|
||||
}
|
||||
|
||||
private static User convertToEntity(UserDto dto) {
|
||||
return new User(dto.getFirstName(), dto.getLastName(), dto.isActive(), dto.getEmail());
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
Now mapping between User and UserDto becomes trivial.
|
||||
|
||||
```java
|
||||
Converter<UserDto, User> userConverter = new UserConverter();
|
||||
UserDto dtoUser = new UserDto("John", "Doe", true, "whatever[at]wherever.com");
|
||||
User user = userConverter.convertFromDto(dtoUser);
|
||||
var userConverter = new UserConverter();
|
||||
var dtoUser = new UserDto("John", "Doe", true, "whatever[at]wherever.com");
|
||||
var user = userConverter.convertFromDto(dtoUser);
|
||||
```
|
||||
|
||||
## Class diagram
|
||||
|
@ -49,8 +49,11 @@ public class App {
|
||||
User user = userConverter.convertFromDto(dtoUser);
|
||||
LOGGER.info("Entity converted from DTO:" + user);
|
||||
|
||||
var users = List.of(new User("Camile", "Tough", false, "124sad"),
|
||||
new User("Marti", "Luther", true, "42309fd"), new User("Kate", "Smith", true, "if0243"));
|
||||
var users = List.of(
|
||||
new User("Camile", "Tough", false, "124sad"),
|
||||
new User("Marti", "Luther", true, "42309fd"),
|
||||
new User("Kate", "Smith", true, "if0243")
|
||||
);
|
||||
LOGGER.info("Domain entities:");
|
||||
users.stream().map(User::toString).forEach(LOGGER::info);
|
||||
|
||||
|
@ -73,7 +73,7 @@ public class User {
|
||||
if (o == null || getClass() != o.getClass()) {
|
||||
return false;
|
||||
}
|
||||
User user = (User) o;
|
||||
var user = (User) o;
|
||||
return isActive == user.isActive && Objects.equals(firstName, user.firstName) && Objects
|
||||
.equals(lastName, user.lastName) && Objects.equals(userId, user.userId);
|
||||
}
|
||||
|
@ -28,13 +28,16 @@ package com.iluwatar.converter;
|
||||
*/
|
||||
public class UserConverter extends Converter<UserDto, User> {
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
public UserConverter() {
|
||||
super(userDto -> new User(userDto.getFirstName(), userDto.getLastName(), userDto.isActive(),
|
||||
userDto.getEmail()),
|
||||
user -> new UserDto(user.getFirstName(), user.getLastName(), user.isActive(),
|
||||
user.getUserId()));
|
||||
super(UserConverter::convertToEntity, UserConverter::convertToDto);
|
||||
}
|
||||
|
||||
private static UserDto convertToDto(User user) {
|
||||
return new UserDto(user.getFirstName(), user.getLastName(), user.isActive(), user.getUserId());
|
||||
}
|
||||
|
||||
private static User convertToEntity(UserDto dto) {
|
||||
return new User(dto.getFirstName(), dto.getLastName(), dto.isActive(), dto.getEmail());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -74,7 +74,7 @@ public class UserDto {
|
||||
if (o == null || getClass() != o.getClass()) {
|
||||
return false;
|
||||
}
|
||||
UserDto userDto = (UserDto) o;
|
||||
var userDto = (UserDto) o;
|
||||
return isActive == userDto.isActive && Objects.equals(firstName, userDto.firstName) && Objects
|
||||
.equals(lastName, userDto.lastName) && Objects.equals(email, userDto.email);
|
||||
}
|
||||
|
@ -32,8 +32,7 @@ public class AppTest {
|
||||
|
||||
@Test
|
||||
public void testMain() {
|
||||
String[] args = {};
|
||||
App.main(args);
|
||||
App.main(new String[]{});
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -23,12 +23,11 @@
|
||||
|
||||
package com.iluwatar.converter;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* Tests for {@link Converter}
|
||||
@ -42,8 +41,8 @@ public class ConverterTest {
|
||||
*/
|
||||
@Test
|
||||
public void testConversionsStartingFromDomain() {
|
||||
User u1 = new User("Tom", "Hanks", true, "tom@hanks.com");
|
||||
User u2 = userConverter.convertFromDto(userConverter.convertFromEntity(u1));
|
||||
var u1 = new User("Tom", "Hanks", true, "tom@hanks.com");
|
||||
var u2 = userConverter.convertFromDto(userConverter.convertFromEntity(u1));
|
||||
assertEquals(u1, u2);
|
||||
}
|
||||
|
||||
@ -52,37 +51,47 @@ public class ConverterTest {
|
||||
*/
|
||||
@Test
|
||||
public void testConversionsStartingFromDto() {
|
||||
UserDto u1 = new UserDto("Tom", "Hanks", true, "tom@hanks.com");
|
||||
UserDto u2 = userConverter.convertFromEntity(userConverter.convertFromDto(u1));
|
||||
var u1 = new UserDto("Tom", "Hanks", true, "tom@hanks.com");
|
||||
var u2 = userConverter.convertFromEntity(userConverter.convertFromDto(u1));
|
||||
assertEquals(u1, u2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the custom users converter. Thanks to Java8 lambdas, converter can be easily and
|
||||
* cleanly instantiated allowing various different conversion strategies to be implemented.
|
||||
* Tests the custom users converter. Thanks to Java8 lambdas, converter can be easily and cleanly
|
||||
* instantiated allowing various different conversion strategies to be implemented.
|
||||
*/
|
||||
@Test
|
||||
public void testCustomConverter() {
|
||||
Converter<UserDto, User> converter = new Converter<>(
|
||||
userDto -> new User(userDto.getFirstName(), userDto.getLastName(), userDto.isActive(),
|
||||
String.valueOf(new Random().nextInt())),
|
||||
user -> new UserDto(user.getFirstName(), user.getLastName(), user.isActive(),
|
||||
user.getFirstName().toLowerCase() + user.getLastName().toLowerCase() + "@whatever.com"));
|
||||
User u1 = new User("John", "Doe", false, "12324");
|
||||
UserDto userDto = converter.convertFromEntity(u1);
|
||||
var converter = new Converter<UserDto, User>(
|
||||
userDto -> new User(
|
||||
userDto.getFirstName(),
|
||||
userDto.getLastName(),
|
||||
userDto.isActive(),
|
||||
String.valueOf(new Random().nextInt())
|
||||
),
|
||||
user -> new UserDto(
|
||||
user.getFirstName(),
|
||||
user.getLastName(),
|
||||
user.isActive(),
|
||||
user.getFirstName().toLowerCase() + user.getLastName().toLowerCase() + "@whatever.com")
|
||||
);
|
||||
var u1 = new User("John", "Doe", false, "12324");
|
||||
var userDto = converter.convertFromEntity(u1);
|
||||
assertEquals("johndoe@whatever.com", userDto.getEmail());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test whether converting a collection of Users to DTO Users and then converting them back to domain
|
||||
* users returns an equal collection.
|
||||
* Test whether converting a collection of Users to DTO Users and then converting them back to
|
||||
* domain users returns an equal collection.
|
||||
*/
|
||||
@Test
|
||||
public void testCollectionConversion() {
|
||||
List<User> users = List.of(new User("Camile", "Tough", false, "124sad"),
|
||||
new User("Marti", "Luther", true, "42309fd"),
|
||||
new User("Kate", "Smith", true, "if0243"));
|
||||
List<User> fromDtos = userConverter.createFromDtos(userConverter.createFromEntities(users));
|
||||
var users = List.of(
|
||||
new User("Camile", "Tough", false, "124sad"),
|
||||
new User("Marti", "Luther", true, "42309fd"),
|
||||
new User("Kate", "Smith", true, "if0243")
|
||||
);
|
||||
var fromDtos = userConverter.createFromDtos(userConverter.createFromEntities(users));
|
||||
assertEquals(users, fromDtos);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user