Skip to content

Commit ea57934

Browse files
anuragagarwal561994iluwatar
authored andcommitted
Java 11 migrate c-d (remaining) (iluwatar#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
1 parent 5681684 commit ea57934

File tree

75 files changed

+573
-710
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+573
-710
lines changed

converter/README.md

+13-7
Original file line numberDiff line numberDiff line change
@@ -63,20 +63,26 @@ The specialized converters inherit from this base class as follows.
6363
public class UserConverter extends Converter<UserDto, User> {
6464

6565
public UserConverter() {
66-
super(userDto -> new User(userDto.getFirstName(), userDto.getLastName(), userDto.isActive(),
67-
userDto.getEmail()),
68-
user -> new UserDto(user.getFirstName(), user.getLastName(), user.isActive(),
69-
user.getUserId()));
66+
super(UserConverter::convertToEntity, UserConverter::convertToDto);
7067
}
68+
69+
private static UserDto convertToDto(User user) {
70+
return new UserDto(user.getFirstName(), user.getLastName(), user.isActive(), user.getUserId());
71+
}
72+
73+
private static User convertToEntity(UserDto dto) {
74+
return new User(dto.getFirstName(), dto.getLastName(), dto.isActive(), dto.getEmail());
75+
}
76+
7177
}
7278
```
7379

7480
Now mapping between User and UserDto becomes trivial.
7581

7682
```java
77-
Converter<UserDto, User> userConverter = new UserConverter();
78-
UserDto dtoUser = new UserDto("John", "Doe", true, "whatever[at]wherever.com");
79-
User user = userConverter.convertFromDto(dtoUser);
83+
var userConverter = new UserConverter();
84+
var dtoUser = new UserDto("John", "Doe", true, "whatever[at]wherever.com");
85+
var user = userConverter.convertFromDto(dtoUser);
8086
```
8187

8288
## Class diagram

converter/src/main/java/com/iluwatar/converter/App.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,11 @@ public static void main(String[] args) {
4949
User user = userConverter.convertFromDto(dtoUser);
5050
LOGGER.info("Entity converted from DTO:" + user);
5151

52-
var users = List.of(new User("Camile", "Tough", false, "124sad"),
53-
new User("Marti", "Luther", true, "42309fd"), new User("Kate", "Smith", true, "if0243"));
52+
var users = List.of(
53+
new User("Camile", "Tough", false, "124sad"),
54+
new User("Marti", "Luther", true, "42309fd"),
55+
new User("Kate", "Smith", true, "if0243")
56+
);
5457
LOGGER.info("Domain entities:");
5558
users.stream().map(User::toString).forEach(LOGGER::info);
5659

converter/src/main/java/com/iluwatar/converter/User.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public boolean equals(Object o) {
7373
if (o == null || getClass() != o.getClass()) {
7474
return false;
7575
}
76-
User user = (User) o;
76+
var user = (User) o;
7777
return isActive == user.isActive && Objects.equals(firstName, user.firstName) && Objects
7878
.equals(lastName, user.lastName) && Objects.equals(userId, user.userId);
7979
}

converter/src/main/java/com/iluwatar/converter/UserConverter.java

+10-7
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,16 @@
2828
*/
2929
public class UserConverter extends Converter<UserDto, User> {
3030

31-
/**
32-
* Constructor.
33-
*/
3431
public UserConverter() {
35-
super(userDto -> new User(userDto.getFirstName(), userDto.getLastName(), userDto.isActive(),
36-
userDto.getEmail()),
37-
user -> new UserDto(user.getFirstName(), user.getLastName(), user.isActive(),
38-
user.getUserId()));
32+
super(UserConverter::convertToEntity, UserConverter::convertToDto);
3933
}
34+
35+
private static UserDto convertToDto(User user) {
36+
return new UserDto(user.getFirstName(), user.getLastName(), user.isActive(), user.getUserId());
37+
}
38+
39+
private static User convertToEntity(UserDto dto) {
40+
return new User(dto.getFirstName(), dto.getLastName(), dto.isActive(), dto.getEmail());
41+
}
42+
4043
}

converter/src/main/java/com/iluwatar/converter/UserDto.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public boolean equals(Object o) {
7474
if (o == null || getClass() != o.getClass()) {
7575
return false;
7676
}
77-
UserDto userDto = (UserDto) o;
77+
var userDto = (UserDto) o;
7878
return isActive == userDto.isActive && Objects.equals(firstName, userDto.firstName) && Objects
7979
.equals(lastName, userDto.lastName) && Objects.equals(email, userDto.email);
8080
}

converter/src/test/java/com/iluwatar/converter/AppTest.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@ public class AppTest {
3232

3333
@Test
3434
public void testMain() {
35-
String[] args = {};
36-
App.main(args);
35+
App.main(new String[]{});
3736
}
3837

3938
}

converter/src/test/java/com/iluwatar/converter/ConverterTest.java

+31-22
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,11 @@
2323

2424
package com.iluwatar.converter;
2525

26-
import org.junit.jupiter.api.Test;
26+
import static org.junit.jupiter.api.Assertions.assertEquals;
2727

2828
import java.util.List;
2929
import java.util.Random;
30-
31-
import static org.junit.jupiter.api.Assertions.assertEquals;
30+
import org.junit.jupiter.api.Test;
3231

3332
/**
3433
* Tests for {@link Converter}
@@ -42,8 +41,8 @@ public class ConverterTest {
4241
*/
4342
@Test
4443
public void testConversionsStartingFromDomain() {
45-
User u1 = new User("Tom", "Hanks", true, "[email protected]");
46-
User u2 = userConverter.convertFromDto(userConverter.convertFromEntity(u1));
44+
var u1 = new User("Tom", "Hanks", true, "[email protected]");
45+
var u2 = userConverter.convertFromDto(userConverter.convertFromEntity(u1));
4746
assertEquals(u1, u2);
4847
}
4948

@@ -52,37 +51,47 @@ public void testConversionsStartingFromDomain() {
5251
*/
5352
@Test
5453
public void testConversionsStartingFromDto() {
55-
UserDto u1 = new UserDto("Tom", "Hanks", true, "[email protected]");
56-
UserDto u2 = userConverter.convertFromEntity(userConverter.convertFromDto(u1));
54+
var u1 = new UserDto("Tom", "Hanks", true, "[email protected]");
55+
var u2 = userConverter.convertFromEntity(userConverter.convertFromDto(u1));
5756
assertEquals(u1, u2);
5857
}
5958

6059
/**
61-
* Tests the custom users converter. Thanks to Java8 lambdas, converter can be easily and
62-
* cleanly instantiated allowing various different conversion strategies to be implemented.
60+
* Tests the custom users converter. Thanks to Java8 lambdas, converter can be easily and cleanly
61+
* instantiated allowing various different conversion strategies to be implemented.
6362
*/
6463
@Test
6564
public void testCustomConverter() {
66-
Converter<UserDto, User> converter = new Converter<>(
67-
userDto -> new User(userDto.getFirstName(), userDto.getLastName(), userDto.isActive(),
68-
String.valueOf(new Random().nextInt())),
69-
user -> new UserDto(user.getFirstName(), user.getLastName(), user.isActive(),
70-
user.getFirstName().toLowerCase() + user.getLastName().toLowerCase() + "@whatever.com"));
71-
User u1 = new User("John", "Doe", false, "12324");
72-
UserDto userDto = converter.convertFromEntity(u1);
65+
var converter = new Converter<UserDto, User>(
66+
userDto -> new User(
67+
userDto.getFirstName(),
68+
userDto.getLastName(),
69+
userDto.isActive(),
70+
String.valueOf(new Random().nextInt())
71+
),
72+
user -> new UserDto(
73+
user.getFirstName(),
74+
user.getLastName(),
75+
user.isActive(),
76+
user.getFirstName().toLowerCase() + user.getLastName().toLowerCase() + "@whatever.com")
77+
);
78+
var u1 = new User("John", "Doe", false, "12324");
79+
var userDto = converter.convertFromEntity(u1);
7380
assertEquals("[email protected]", userDto.getEmail());
7481
}
7582

7683
/**
77-
* Test whether converting a collection of Users to DTO Users and then converting them back to domain
78-
* users returns an equal collection.
84+
* Test whether converting a collection of Users to DTO Users and then converting them back to
85+
* domain users returns an equal collection.
7986
*/
8087
@Test
8188
public void testCollectionConversion() {
82-
List<User> users = List.of(new User("Camile", "Tough", false, "124sad"),
83-
new User("Marti", "Luther", true, "42309fd"),
84-
new User("Kate", "Smith", true, "if0243"));
85-
List<User> fromDtos = userConverter.createFromDtos(userConverter.createFromEntities(users));
89+
var users = List.of(
90+
new User("Camile", "Tough", false, "124sad"),
91+
new User("Marti", "Luther", true, "42309fd"),
92+
new User("Kate", "Smith", true, "if0243")
93+
);
94+
var fromDtos = userConverter.createFromDtos(userConverter.createFromEntities(users));
8695
assertEquals(users, fromDtos);
8796
}
8897
}

cqrs/src/main/java/com/iluwatar/cqrs/app/App.java

+8-14
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,9 @@
2424
package com.iluwatar.cqrs.app;
2525

2626
import com.iluwatar.cqrs.commandes.CommandServiceImpl;
27-
import com.iluwatar.cqrs.commandes.ICommandService;
2827
import com.iluwatar.cqrs.constants.AppConstants;
29-
import com.iluwatar.cqrs.dto.Author;
30-
import com.iluwatar.cqrs.dto.Book;
31-
import com.iluwatar.cqrs.queries.IQueryService;
3228
import com.iluwatar.cqrs.queries.QueryServiceImpl;
3329
import com.iluwatar.cqrs.util.HibernateUtil;
34-
import java.math.BigInteger;
35-
import java.util.List;
3630
import org.slf4j.Logger;
3731
import org.slf4j.LoggerFactory;
3832

@@ -56,7 +50,7 @@ public class App {
5650
* @param args command line args
5751
*/
5852
public static void main(String[] args) {
59-
ICommandService commands = new CommandServiceImpl();
53+
var commands = new CommandServiceImpl();
6054

6155
// Create Authors and Books using CommandService
6256
commands.authorCreated(AppConstants.E_EVANS, "Eric Evans", "[email protected]");
@@ -72,15 +66,15 @@ public static void main(String[] args) {
7266
commands.bookAddedToAuthor("Domain Specific Languages", 48.89, AppConstants.M_FOWLER);
7367
commands.authorNameUpdated(AppConstants.E_EVANS, "Eric J. Evans");
7468

75-
IQueryService queries = new QueryServiceImpl();
69+
var queries = new QueryServiceImpl();
7670

7771
// Query the database using QueryService
78-
Author nullAuthor = queries.getAuthorByUsername("username");
79-
Author evans = queries.getAuthorByUsername(AppConstants.E_EVANS);
80-
BigInteger blochBooksCount = queries.getAuthorBooksCount(AppConstants.J_BLOCH);
81-
BigInteger authorsCount = queries.getAuthorsCount();
82-
Book dddBook = queries.getBook("Domain-Driven Design");
83-
List<Book> blochBooks = queries.getAuthorBooks(AppConstants.J_BLOCH);
72+
var nullAuthor = queries.getAuthorByUsername("username");
73+
var evans = queries.getAuthorByUsername(AppConstants.E_EVANS);
74+
var blochBooksCount = queries.getAuthorBooksCount(AppConstants.J_BLOCH);
75+
var authorsCount = queries.getAuthorsCount();
76+
var dddBook = queries.getBook("Domain-Driven Design");
77+
var blochBooks = queries.getAuthorBooks(AppConstants.J_BLOCH);
8478

8579
LOGGER.info("Author username : {}", nullAuthor);
8680
LOGGER.info("Author evans : {}", evans);

cqrs/src/main/java/com/iluwatar/cqrs/commandes/CommandServiceImpl.java

+21-23
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@
2626
import com.iluwatar.cqrs.domain.model.Author;
2727
import com.iluwatar.cqrs.domain.model.Book;
2828
import com.iluwatar.cqrs.util.HibernateUtil;
29-
import org.hibernate.Query;
30-
import org.hibernate.Session;
3129
import org.hibernate.SessionFactory;
3230

3331
/**
@@ -39,9 +37,9 @@ public class CommandServiceImpl implements ICommandService {
3937
private SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
4038

4139
private Author getAuthorByUsername(String username) {
42-
Author author = null;
43-
try (Session session = sessionFactory.openSession()) {
44-
Query query = session.createQuery("from Author where username=:username");
40+
Author author;
41+
try (var session = sessionFactory.openSession()) {
42+
var query = session.createQuery("from Author where username=:username");
4543
query.setParameter("username", username);
4644
author = (Author) query.uniqueResult();
4745
}
@@ -53,9 +51,9 @@ private Author getAuthorByUsername(String username) {
5351
}
5452

5553
private Book getBookByTitle(String title) {
56-
Book book = null;
57-
try (Session session = sessionFactory.openSession()) {
58-
Query query = session.createQuery("from Book where title=:title");
54+
Book book;
55+
try (var session = sessionFactory.openSession()) {
56+
var query = session.createQuery("from Book where title=:title");
5957
query.setParameter("title", title);
6058
book = (Book) query.uniqueResult();
6159
}
@@ -68,8 +66,8 @@ private Book getBookByTitle(String title) {
6866

6967
@Override
7068
public void authorCreated(String username, String name, String email) {
71-
Author author = new Author(username, name, email);
72-
try (Session session = sessionFactory.openSession()) {
69+
var author = new Author(username, name, email);
70+
try (var session = sessionFactory.openSession()) {
7371
session.beginTransaction();
7472
session.save(author);
7573
session.getTransaction().commit();
@@ -78,9 +76,9 @@ public void authorCreated(String username, String name, String email) {
7876

7977
@Override
8078
public void bookAddedToAuthor(String title, double price, String username) {
81-
Author author = getAuthorByUsername(username);
82-
Book book = new Book(title, price, author);
83-
try (Session session = sessionFactory.openSession()) {
79+
var author = getAuthorByUsername(username);
80+
var book = new Book(title, price, author);
81+
try (var session = sessionFactory.openSession()) {
8482
session.beginTransaction();
8583
session.save(book);
8684
session.getTransaction().commit();
@@ -89,9 +87,9 @@ public void bookAddedToAuthor(String title, double price, String username) {
8987

9088
@Override
9189
public void authorNameUpdated(String username, String name) {
92-
Author author = getAuthorByUsername(username);
90+
var author = getAuthorByUsername(username);
9391
author.setName(name);
94-
try (Session session = sessionFactory.openSession()) {
92+
try (var session = sessionFactory.openSession()) {
9593
session.beginTransaction();
9694
session.update(author);
9795
session.getTransaction().commit();
@@ -100,9 +98,9 @@ public void authorNameUpdated(String username, String name) {
10098

10199
@Override
102100
public void authorUsernameUpdated(String oldUsername, String newUsername) {
103-
Author author = getAuthorByUsername(oldUsername);
101+
var author = getAuthorByUsername(oldUsername);
104102
author.setUsername(newUsername);
105-
try (Session session = sessionFactory.openSession()) {
103+
try (var session = sessionFactory.openSession()) {
106104
session.beginTransaction();
107105
session.update(author);
108106
session.getTransaction().commit();
@@ -111,9 +109,9 @@ public void authorUsernameUpdated(String oldUsername, String newUsername) {
111109

112110
@Override
113111
public void authorEmailUpdated(String username, String email) {
114-
Author author = getAuthorByUsername(username);
112+
var author = getAuthorByUsername(username);
115113
author.setEmail(email);
116-
try (Session session = sessionFactory.openSession()) {
114+
try (var session = sessionFactory.openSession()) {
117115
session.beginTransaction();
118116
session.update(author);
119117
session.getTransaction().commit();
@@ -122,9 +120,9 @@ public void authorEmailUpdated(String username, String email) {
122120

123121
@Override
124122
public void bookTitleUpdated(String oldTitle, String newTitle) {
125-
Book book = getBookByTitle(oldTitle);
123+
var book = getBookByTitle(oldTitle);
126124
book.setTitle(newTitle);
127-
try (Session session = sessionFactory.openSession()) {
125+
try (var session = sessionFactory.openSession()) {
128126
session.beginTransaction();
129127
session.update(book);
130128
session.getTransaction().commit();
@@ -133,9 +131,9 @@ public void bookTitleUpdated(String oldTitle, String newTitle) {
133131

134132
@Override
135133
public void bookPriceUpdated(String title, double price) {
136-
Book book = getBookByTitle(title);
134+
var book = getBookByTitle(title);
137135
book.setPrice(price);
138-
try (Session session = sessionFactory.openSession()) {
136+
try (var session = sessionFactory.openSession()) {
139137
session.beginTransaction();
140138
session.update(book);
141139
session.getTransaction().commit();

cqrs/src/main/java/com/iluwatar/cqrs/dto/Author.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public boolean equals(Object obj) {
8080
if (!(obj instanceof Author)) {
8181
return false;
8282
}
83-
Author other = (Author) obj;
83+
var other = (Author) obj;
8484
return username.equals(other.getUsername()) && email.equals(other.getEmail()) && name
8585
.equals(other.getName());
8686

cqrs/src/main/java/com/iluwatar/cqrs/dto/Book.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public boolean equals(Object obj) {
7373
if (!(obj instanceof Book)) {
7474
return false;
7575
}
76-
Book book = (Book) obj;
76+
var book = (Book) obj;
7777
return title.equals(book.getTitle()) && price == book.getPrice();
7878
}
7979

0 commit comments

Comments
 (0)