Skip to content

Commit 1f3c6b1

Browse files
authored
Merge pull request #5 from iluwatar/master
Resync to remove conflicts
2 parents 4acdfe3 + 8037495 commit 1f3c6b1

File tree

330 files changed

+2798
-1163
lines changed

Some content is hidden

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

330 files changed

+2798
-1163
lines changed

abstract-document/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>java-design-patterns</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>abstract-document</artifactId>
3535
<dependencies>

abstract-factory/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>abstract-factory</artifactId>
3535
<dependencies>

abstract-factory/src/test/java/com/iluwatar/abstractfactory/AbstractFactoryTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
import org.junit.jupiter.api.Test;
3333

3434
/**
35-
* Test for abstract factory
35+
* Test for abstract factory.
3636
*/
3737
public class AbstractFactoryTest {
3838

acyclic-visitor/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
<parent>
3131
<groupId>com.iluwatar</groupId>
3232
<artifactId>java-design-patterns</artifactId>
33-
<version>1.22.0-SNAPSHOT</version>
33+
<version>1.23.0-SNAPSHOT</version>
3434
</parent>
3535

3636
<artifactId>acyclic-visitor</artifactId>

adapter/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>adapter</artifactId>
3535
<dependencies>

aggregator-microservices/aggregator-service/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>aggregator-microservices</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<modelVersion>4.0.0</modelVersion>
3535
<artifactId>aggregator-service</artifactId>

aggregator-microservices/information-microservice/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>aggregator-microservices</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<modelVersion>4.0.0</modelVersion>
3535

aggregator-microservices/inventory-microservice/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>aggregator-microservices</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<modelVersion>4.0.0</modelVersion>
3535
<artifactId>inventory-microservice</artifactId>

aggregator-microservices/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>java-design-patterns</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<modelVersion>4.0.0</modelVersion>
3535
<artifactId>aggregator-microservices</artifactId>

ambassador/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>java-design-patterns</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<modelVersion>4.0.0</modelVersion>
3535
<artifactId>ambassador</artifactId>

api-gateway/api-gateway-service/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>api-gateway</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<modelVersion>4.0.0</modelVersion>
3535
<artifactId>api-gateway-service</artifactId>

api-gateway/image-microservice/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>api-gateway</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<modelVersion>4.0.0</modelVersion>
3535
<artifactId>image-microservice</artifactId>

api-gateway/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>java-design-patterns</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<modelVersion>4.0.0</modelVersion>
3535
<artifactId>api-gateway</artifactId>

api-gateway/price-microservice/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>api-gateway</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434

3535
<modelVersion>4.0.0</modelVersion>

async-method-invocation/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>async-method-invocation</artifactId>
3535
<dependencies>

balking/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>java-design-patterns</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<modelVersion>4.0.0</modelVersion>
3535

bridge/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>bridge</artifactId>
3535
<dependencies>

builder/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>builder</artifactId>
3535
<dependencies>

business-delegate/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
<parent>
3131
<groupId>com.iluwatar</groupId>
3232
<artifactId>java-design-patterns</artifactId>
33-
<version>1.22.0-SNAPSHOT</version>
33+
<version>1.23.0-SNAPSHOT</version>
3434
</parent>
3535
<artifactId>business-delegate</artifactId>
3636
<dependencies>

bytecode/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>java-design-patterns</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<modelVersion>4.0.0</modelVersion>
3535

caching/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>caching</artifactId>
3535
<dependencies>

callback/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>callback</artifactId>
3535
<dependencies>

chain/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>chain</artifactId>
3535
<dependencies>

circuit-breaker/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
layout: pattern
3-
title: CircuitBreaker
3+
title: Circuit Breaker
44
folder: circuit-breaker
55
permalink: /patterns/circuit-breaker/
66
categories: Other

circuit-breaker/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
<parent>
2828
<groupId>com.iluwatar</groupId>
2929
<artifactId>java-design-patterns</artifactId>
30-
<version>1.22.0-SNAPSHOT</version>
30+
<version>1.23.0-SNAPSHOT</version>
3131
</parent>
3232
<artifactId>circuit-breaker</artifactId>
3333
<dependencies>

collection-pipeline/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout: pattern
33
title: Collection Pipeline
44
folder: collection-pipeline
55
permalink: /patterns/collection-pipeline/
6-
categories: Functional
6+
categories: Other
77
tags:
88
- Java
99
- Difficulty-Beginner

collection-pipeline/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
<parent>
2828
<groupId>com.iluwatar</groupId>
2929
<artifactId>java-design-patterns</artifactId>
30-
<version>1.22.0-SNAPSHOT</version>
30+
<version>1.23.0-SNAPSHOT</version>
3131
</parent>
3232
<artifactId>collection-pipeline</artifactId>
3333
<dependencies>

command/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>command</artifactId>
3535
<dependencies>

commander/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout: pattern
33
title: Commander
44
folder: commander
55
permalink: /patterns/commander/
6-
categories:
6+
categories: Other
77
tags:
88
- Java
99
- Difficulty-Intermediate

commander/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
<parent>
2828
<groupId>com.iluwatar</groupId>
2929
<artifactId>java-design-patterns</artifactId>
30-
<version>1.22.0-SNAPSHOT</version>
30+
<version>1.23.0-SNAPSHOT</version>
3131
</parent>
3232
<artifactId>commander</artifactId>
3333
<dependencies>

composite/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<groupId>com.iluwatar</groupId>
3131
<artifactId>java-design-patterns</artifactId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<artifactId>composite</artifactId>
3535
<dependencies>

composite/src/main/java/com/iluwatar/composite/Word.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ public Word(List<Letter> letters) {
3737
letters.forEach(this::add);
3838
}
3939

40+
/**
41+
* Constructor.
42+
* @param letters to include
43+
*/
4044
public Word(char... letters) {
4145
for (char letter : letters) {
4246
this.add(new Letter(letter));

converter/README.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,71 @@ mapping, reducing a boilerplate code to minimum.
1717

1818
![alt text](./etc/converter.png "Converter Pattern")
1919

20+
## Explanation
21+
22+
Real world example
23+
24+
> In real world applications it is often the case that database layer consists of entities that need to be mapped into DTOs for use on the business logic layer. Similar mapping is done for potentially huge amount of classes and we need a generic way to achieve this.
25+
26+
In plain words
27+
28+
> Converter pattern makes it easy to map instances of one class into instances of another class.
29+
30+
**Programmatic Example**
31+
32+
We need a generic solution for the mapping problem. To achieve this, let's introduce a generic converter.
33+
34+
```java
35+
public class Converter<T, U> {
36+
37+
private final Function<T, U> fromDto;
38+
private final Function<U, T> fromEntity;
39+
40+
public Converter(final Function<T, U> fromDto, final Function<U, T> fromEntity) {
41+
this.fromDto = fromDto;
42+
this.fromEntity = fromEntity;
43+
}
44+
45+
public final U convertFromDto(final T dto) {
46+
return fromDto.apply(dto);
47+
}
48+
49+
public final T convertFromEntity(final U entity) {
50+
return fromEntity.apply(entity);
51+
}
52+
53+
public final List<U> createFromDtos(final Collection<T> dtos) {
54+
return dtos.stream().map(this::convertFromDto).collect(Collectors.toList());
55+
}
56+
57+
public final List<T> createFromEntities(final Collection<U> entities) {
58+
return entities.stream().map(this::convertFromEntity).collect(Collectors.toList());
59+
}
60+
}
61+
```
62+
63+
The specialized converters inherit from this base class as follows.
64+
65+
```java
66+
public class UserConverter extends Converter<UserDto, User> {
67+
68+
public UserConverter() {
69+
super(userDto -> new User(userDto.getFirstName(), userDto.getLastName(), userDto.isActive(),
70+
userDto.getEmail()),
71+
user -> new UserDto(user.getFirstName(), user.getLastName(), user.isActive(),
72+
user.getUserId()));
73+
}
74+
}
75+
```
76+
77+
Now mapping between User and UserDto becomes trivial.
78+
79+
```java
80+
Converter<UserDto, User> userConverter = new UserConverter();
81+
UserDto dtoUser = new UserDto("John", "Doe", true, "whatever[at]wherever.com");
82+
User user = userConverter.convertFromDto(dtoUser);
83+
```
84+
2085
## Applicability
2186
Use the Converter Pattern in the following situations:
2287

converter/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<parent>
3030
<artifactId>java-design-patterns</artifactId>
3131
<groupId>com.iluwatar</groupId>
32-
<version>1.22.0-SNAPSHOT</version>
32+
<version>1.23.0-SNAPSHOT</version>
3333
</parent>
3434
<modelVersion>4.0.0</modelVersion>
3535
<dependencies>

cqrs/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
<parent>
3131
<groupId>com.iluwatar</groupId>
3232
<artifactId>java-design-patterns</artifactId>
33-
<version>1.22.0-SNAPSHOT</version>
33+
<version>1.23.0-SNAPSHOT</version>
3434
</parent>
3535
<artifactId>cqrs</artifactId>
3636
<dependencies>

dao/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
<parent>
3131
<groupId>com.iluwatar</groupId>
3232
<artifactId>java-design-patterns</artifactId>
33-
<version>1.22.0-SNAPSHOT</version>
33+
<version>1.23.0-SNAPSHOT</version>
3434
</parent>
3535
<artifactId>dao</artifactId>
3636

data-bus/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
<parent>
3434
<groupId>com.iluwatar</groupId>
3535
<artifactId>java-design-patterns</artifactId>
36-
<version>1.22.0-SNAPSHOT</version>
36+
<version>1.23.0-SNAPSHOT</version>
3737
</parent>
3838
<artifactId>data-bus</artifactId>
3939
<dependencies>

0 commit comments

Comments
 (0)