Skip to content

Commit f04fc3c

Browse files
anuragagarwal561994iluwatar
authored andcommitted
Java 11 migration: patterns starting with a (iluwatar#1084)
* Moves abstract-factory pattern to java 11 * Moves abstract-document pattern to java 11 * Moves acyclic-visitor pattern to java 11 * Moves adapter pattern to java 11 * Moves aggregator-microservices pattern to java 11 * Moves api-gateway pattern to java 11
1 parent 3c57bf7 commit f04fc3c

File tree

26 files changed

+150
-171
lines changed

26 files changed

+150
-171
lines changed

abstract-document/src/main/java/com/iluwatar/abstractdocument/AbstractDocument.java

+8-4
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@
2323

2424
package com.iluwatar.abstractdocument;
2525

26+
import java.util.Collection;
2627
import java.util.List;
2728
import java.util.Map;
2829
import java.util.Objects;
29-
import java.util.Optional;
3030
import java.util.function.Function;
3131
import java.util.stream.Stream;
3232

@@ -55,9 +55,13 @@ public Object get(String key) {
5555

5656
@Override
5757
public <T> Stream<T> children(String key, Function<Map<String, Object>, T> constructor) {
58-
Optional<List<Map<String, Object>>> any = Stream.of(get(key)).filter(Objects::nonNull)
59-
.map(el -> (List<Map<String, Object>>) el).findAny();
60-
return any.map(maps -> maps.stream().map(constructor)).orElseGet(Stream::empty);
58+
return Stream.ofNullable(get(key))
59+
.filter(Objects::nonNull)
60+
.map(el -> (List<Map<String, Object>>) el)
61+
.findAny()
62+
.stream()
63+
.flatMap(Collection::stream)
64+
.map(constructor);
6165
}
6266

6367
@Override

abstract-document/src/main/java/com/iluwatar/abstractdocument/App.java

+7-4
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,14 @@ public App() {
6666
var car = new Car(carProperties);
6767

6868
LOGGER.info("Here is our car:");
69-
LOGGER.info("-> model: {}", car.getModel().get());
70-
LOGGER.info("-> price: {}", car.getPrice().get());
69+
LOGGER.info("-> model: {}", car.getModel().orElseThrow());
70+
LOGGER.info("-> price: {}", car.getPrice().orElseThrow());
7171
LOGGER.info("-> parts: ");
72-
car.getParts().forEach(p -> LOGGER
73-
.info("\t{}/{}/{}", p.getType().get(), p.getModel().get(), p.getPrice().get()));
72+
car.getParts().forEach(p -> LOGGER.info("\t{}/{}/{}",
73+
p.getType().orElse(null),
74+
p.getModel().orElse(null),
75+
p.getPrice().orElse(null))
76+
);
7477
}
7578

7679
/**

abstract-document/src/test/java/com/iluwatar/abstractdocument/AbstractDocumentTest.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@
2323

2424
package com.iluwatar.abstractdocument;
2525

26-
import org.junit.jupiter.api.Test;
26+
import static org.junit.jupiter.api.Assertions.assertEquals;
27+
import static org.junit.jupiter.api.Assertions.assertNotNull;
28+
import static org.junit.jupiter.api.Assertions.assertTrue;
2729

2830
import java.util.HashMap;
2931
import java.util.List;
3032
import java.util.Map;
31-
import java.util.stream.Stream;
32-
33-
import static org.junit.jupiter.api.Assertions.*;
33+
import org.junit.jupiter.api.Test;
3434

3535
/**
3636
* AbstractDocument test class
@@ -61,22 +61,22 @@ public void shouldRetrieveChildren() {
6161

6262
document.put(KEY, children);
6363

64-
Stream<DocumentImplementation> childrenStream = document.children(KEY, DocumentImplementation::new);
64+
var childrenStream = document.children(KEY, DocumentImplementation::new);
6565
assertNotNull(children);
6666
assertEquals(2, childrenStream.count());
6767
}
6868

6969
@Test
7070
public void shouldRetrieveEmptyStreamForNonExistingChildren() {
71-
Stream<DocumentImplementation> children = document.children(KEY, DocumentImplementation::new);
71+
var children = document.children(KEY, DocumentImplementation::new);
7272
assertNotNull(children);
7373
assertEquals(0, children.count());
7474
}
7575

7676
@Test
7777
public void shouldIncludePropsInToString() {
78-
Map<String, Object> props = Map.of(KEY, VALUE);
79-
DocumentImplementation document = new DocumentImplementation(props);
78+
var props = Map.of(KEY, (Object) VALUE);
79+
var document = new DocumentImplementation(props);
8080
assertTrue(document.toString().contains(KEY));
8181
assertTrue(document.toString().contains(VALUE));
8282
}

abstract-document/src/test/java/com/iluwatar/abstractdocument/DomainTest.java

+20-21
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,14 @@
2323

2424
package com.iluwatar.abstractdocument;
2525

26+
import static org.junit.jupiter.api.Assertions.assertEquals;
27+
2628
import com.iluwatar.abstractdocument.domain.Car;
2729
import com.iluwatar.abstractdocument.domain.Part;
2830
import com.iluwatar.abstractdocument.domain.enums.Property;
29-
import org.junit.jupiter.api.Test;
30-
3131
import java.util.List;
3232
import java.util.Map;
33-
34-
import static org.junit.jupiter.api.Assertions.assertEquals;
33+
import org.junit.jupiter.api.Test;
3534

3635
/**
3736
* Test for Part and Car
@@ -47,27 +46,27 @@ public class DomainTest {
4746

4847
@Test
4948
public void shouldConstructPart() {
50-
Map<String, Object> partProperties = Map.of(
51-
Property.TYPE.toString(), TEST_PART_TYPE,
52-
Property.MODEL.toString(), TEST_PART_MODEL,
53-
Property.PRICE.toString(), TEST_PART_PRICE);
54-
Part part = new Part(partProperties);
55-
56-
assertEquals(TEST_PART_TYPE, part.getType().get());
57-
assertEquals(TEST_PART_MODEL, part.getModel().get());
58-
assertEquals(TEST_PART_PRICE, part.getPrice().get());
49+
var partProperties = Map.of(
50+
Property.TYPE.toString(), TEST_PART_TYPE,
51+
Property.MODEL.toString(), TEST_PART_MODEL,
52+
Property.PRICE.toString(), (Object) TEST_PART_PRICE
53+
);
54+
var part = new Part(partProperties);
55+
assertEquals(TEST_PART_TYPE, part.getType().orElseThrow());
56+
assertEquals(TEST_PART_MODEL, part.getModel().orElseThrow());
57+
assertEquals(TEST_PART_PRICE, part.getPrice().orElseThrow());
5958
}
6059

6160
@Test
6261
public void shouldConstructCar() {
63-
Map<String, Object> carProperties = Map.of(
64-
Property.MODEL.toString(), TEST_CAR_MODEL,
65-
Property.PRICE.toString(), TEST_CAR_PRICE,
66-
Property.PARTS.toString(), List.of(Map.of(), Map.of()));
67-
Car car = new Car(carProperties);
68-
69-
assertEquals(TEST_CAR_MODEL, car.getModel().get());
70-
assertEquals(TEST_CAR_PRICE, car.getPrice().get());
62+
var carProperties = Map.of(
63+
Property.MODEL.toString(), TEST_CAR_MODEL,
64+
Property.PRICE.toString(), TEST_CAR_PRICE,
65+
Property.PARTS.toString(), List.of(Map.of(), Map.of())
66+
);
67+
var car = new Car(carProperties);
68+
assertEquals(TEST_CAR_MODEL, car.getModel().orElseThrow());
69+
assertEquals(TEST_CAR_PRICE, car.getPrice().orElseThrow());
7170
assertEquals(2, car.getParts().count());
7271
}
7372

abstract-factory/README.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,10 @@ public class OrcKingdomFactory implements KingdomFactory {
109109
Now we have our abstract factory that lets us make family of related objects i.e. Elven kingdom factory creates Elven castle, king and army etc.
110110

111111
```java
112-
KingdomFactory factory = new ElfKingdomFactory();
113-
Castle castle = factory.createCastle();
114-
King king = factory.createKing();
115-
Army army = factory.createArmy();
112+
var factory = new ElfKingdomFactory();
113+
var castle = factory.createCastle();
114+
var king = factory.createKing();
115+
var army = factory.createArmy();
116116

117117
castle.getDescription(); // Output: This is the Elven castle!
118118
king.getDescription(); // Output: This is the Elven king!
@@ -143,7 +143,7 @@ public static class FactoryMaker {
143143
}
144144

145145
public static void main(String[] args) {
146-
App app = new App();
146+
var app = new App();
147147

148148
LOGGER.info("Elf Kingdom");
149149
app.createKingdom(FactoryMaker.makeFactory(KingdomType.ELF));

abstract-factory/src/main/java/com/iluwatar/abstractfactory/App.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ public static KingdomFactory makeFactory(KingdomType type) {
128128
*/
129129
public static void main(String[] args) {
130130

131-
App app = new App();
131+
var app = new App();
132132

133133
LOGGER.info("Elf Kingdom");
134134
app.createKingdom(FactoryMaker.makeFactory(KingdomType.ELF));

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

+12-13
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828

2929
import com.iluwatar.abstractfactory.App.FactoryMaker;
3030
import com.iluwatar.abstractfactory.App.FactoryMaker.KingdomType;
31-
3231
import org.junit.jupiter.api.BeforeEach;
3332
import org.junit.jupiter.api.Test;
3433

@@ -49,40 +48,40 @@ public void setUp() {
4948

5049
@Test
5150
public void king() {
52-
final King elfKing = app.getKing(elfFactory);
51+
final var elfKing = app.getKing(elfFactory);
5352
assertTrue(elfKing instanceof ElfKing);
5453
assertEquals(ElfKing.DESCRIPTION, elfKing.getDescription());
55-
final King orcKing = app.getKing(orcFactory);
54+
final var orcKing = app.getKing(orcFactory);
5655
assertTrue(orcKing instanceof OrcKing);
5756
assertEquals(OrcKing.DESCRIPTION, orcKing.getDescription());
5857
}
5958

6059
@Test
6160
public void castle() {
62-
final Castle elfCastle = app.getCastle(elfFactory);
61+
final var elfCastle = app.getCastle(elfFactory);
6362
assertTrue(elfCastle instanceof ElfCastle);
6463
assertEquals(ElfCastle.DESCRIPTION, elfCastle.getDescription());
65-
final Castle orcCastle = app.getCastle(orcFactory);
64+
final var orcCastle = app.getCastle(orcFactory);
6665
assertTrue(orcCastle instanceof OrcCastle);
6766
assertEquals(OrcCastle.DESCRIPTION, orcCastle.getDescription());
6867
}
6968

7069
@Test
7170
public void army() {
72-
final Army elfArmy = app.getArmy(elfFactory);
71+
final var elfArmy = app.getArmy(elfFactory);
7372
assertTrue(elfArmy instanceof ElfArmy);
7473
assertEquals(ElfArmy.DESCRIPTION, elfArmy.getDescription());
75-
final Army orcArmy = app.getArmy(orcFactory);
74+
final var orcArmy = app.getArmy(orcFactory);
7675
assertTrue(orcArmy instanceof OrcArmy);
7776
assertEquals(OrcArmy.DESCRIPTION, orcArmy.getDescription());
7877
}
7978

8079
@Test
8180
public void createElfKingdom() {
8281
app.createKingdom(elfFactory);
83-
final King king = app.getKing();
84-
final Castle castle = app.getCastle();
85-
final Army army = app.getArmy();
82+
final var king = app.getKing();
83+
final var castle = app.getCastle();
84+
final var army = app.getArmy();
8685
assertTrue(king instanceof ElfKing);
8786
assertEquals(ElfKing.DESCRIPTION, king.getDescription());
8887
assertTrue(castle instanceof ElfCastle);
@@ -94,9 +93,9 @@ public void createElfKingdom() {
9493
@Test
9594
public void createOrcKingdom() {
9695
app.createKingdom(orcFactory);
97-
final King king = app.getKing();
98-
final Castle castle = app.getCastle();
99-
final Army army = app.getArmy();
96+
final var king = app.getKing();
97+
final var castle = app.getCastle();
98+
final var army = app.getArmy();
10099
assertTrue(king instanceof OrcKing);
101100
assertEquals(OrcKing.DESCRIPTION, king.getDescription());
102101
assertTrue(castle instanceof OrcCastle);

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

+2-5
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,12 @@
2525

2626
import org.junit.jupiter.api.Test;
2727

28-
import java.io.IOException;
29-
3028
/**
3129
* Tests that Abstract Factory example runs without errors.
3230
*/
3331
public class AppTest {
3432
@Test
35-
public void test() throws IOException {
36-
String[] args = {};
37-
App.main(args);
33+
public void test() {
34+
App.main(new String[]{});
3835
}
3936
}

acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/AppTest.java

+2-5
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,13 @@
2525

2626
import org.junit.jupiter.api.Test;
2727

28-
import com.iluwatar.acyclicvisitor.App;
29-
3028
/**
3129
* Tests that the Acyclic Visitor example runs without errors.
3230
*/
3331
public class AppTest {
34-
32+
3533
@Test
3634
public void test() {
37-
String[] args = {};
38-
App.main(args);
35+
App.main(new String[]{});
3936
}
4037
}

acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ConfigureForDosVisitorTest.java

+9-7
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
*/
3838
public class ConfigureForDosVisitorTest {
3939

40-
TestLogger logger = TestLoggerFactory.getTestLogger(ConfigureForDosVisitor.class);
40+
private TestLogger logger = TestLoggerFactory.getTestLogger(ConfigureForDosVisitor.class);
4141

4242
@Test
4343
public void testVisitForZoom() {
@@ -46,19 +46,21 @@ public void testVisitForZoom() {
4646

4747
conDos.visit(zoom);
4848

49-
assertThat(logger.getLoggingEvents()).extracting("level", "message").contains(
50-
tuple(INFO, zoom + " used with Dos configurator."));
49+
assertThat(logger.getLoggingEvents())
50+
.extracting("level", "message")
51+
.contains(tuple(INFO, zoom + " used with Dos configurator."));
5152
}
5253

5354
@Test
5455
public void testVisitForHayes() {
55-
ConfigureForDosVisitor conDos = new ConfigureForDosVisitor();
56-
Hayes hayes = new Hayes();
56+
var conDos = new ConfigureForDosVisitor();
57+
var hayes = new Hayes();
5758

5859
conDos.visit(hayes);
5960

60-
assertThat(logger.getLoggingEvents()).extracting("level", "message").contains(
61-
tuple(INFO, hayes + " used with Dos configurator."));
61+
assertThat(logger.getLoggingEvents())
62+
.extracting("level", "message")
63+
.contains(tuple(INFO, hayes + " used with Dos configurator."));
6264
}
6365

6466
@AfterEach

acyclic-visitor/src/test/java/com/iluwatar/acyclicvisitor/ConfigureForUnixVisitorTest.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ public void testVisitForZoom() {
5252

5353
conUnix.visit(zoom);
5454

55-
assertThat(LOGGER.getLoggingEvents()).extracting("level", "message").contains(
56-
tuple(INFO, zoom + " used with Unix configurator."));
55+
assertThat(LOGGER.getLoggingEvents())
56+
.extracting("level", "message")
57+
.contains(tuple(INFO, zoom + " used with Unix configurator."));
5758
}
5859
}

adapter/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public class FishingBoatAdapter implements RowingBoat {
9393
And now the `Captain` can use the `FishingBoat` to escape the pirates.
9494

9595
```java
96-
Captain captain = new Captain(new FishingBoatAdapter());
96+
var captain = new Captain(new FishingBoatAdapter());
9797
captain.row();
9898
```
9999

0 commit comments

Comments
 (0)