Skip to content

Commit 67edeb8

Browse files
authored
Java 11 support for iluwatar#984 iluwatar#987 (l) (iluwatar#1190)
* Java 11 support: lazy-loading pattern * Java 11 support: layers pattern * Java 11 support: leader-election/lazy-loading patterns
1 parent 0ad67c8 commit 67edeb8

File tree

23 files changed

+238
-243
lines changed

23 files changed

+238
-243
lines changed

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

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public class App {
8484

8585
/**
8686
* Application entry point.
87-
*
87+
*
8888
* @param args Command line parameters
8989
*/
9090
public static void main(String[] args) {
@@ -93,7 +93,7 @@ public static void main(String[] args) {
9393
initializeData(cakeBakingService);
9494

9595
// create view and render it
96-
CakeViewImpl cakeView = new CakeViewImpl(cakeBakingService);
96+
var cakeView = new CakeViewImpl(cakeBakingService);
9797
cakeView.render();
9898
}
9999

@@ -111,17 +111,16 @@ private static void initializeData(CakeBakingService cakeBakingService) {
111111
cakeBakingService.saveNewTopping(new CakeToppingInfo("candies", 350));
112112
cakeBakingService.saveNewTopping(new CakeToppingInfo("cherry", 350));
113113

114-
CakeInfo cake1 =
115-
new CakeInfo(new CakeToppingInfo("candies", 0), List.of(
116-
new CakeLayerInfo("chocolate", 0),
117-
new CakeLayerInfo("banana", 0),
118-
new CakeLayerInfo("strawberry", 0)));
114+
var cake1 = new CakeInfo(new CakeToppingInfo("candies", 0), List.of(
115+
new CakeLayerInfo("chocolate", 0),
116+
new CakeLayerInfo("banana", 0),
117+
new CakeLayerInfo("strawberry", 0)));
119118
try {
120119
cakeBakingService.bakeNewCake(cake1);
121120
} catch (CakeBakingException e) {
122121
e.printStackTrace();
123122
}
124-
CakeInfo cake2 = new CakeInfo(new CakeToppingInfo("cherry", 0), List.of(
123+
var cake2 = new CakeInfo(new CakeToppingInfo("cherry", 0), List.of(
125124
new CakeLayerInfo("vanilla", 0),
126125
new CakeLayerInfo("lemon", 0),
127126
new CakeLayerInfo("strawberry", 0)));

layers/src/main/java/com/iluwatar/layers/dto/CakeInfo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public CakeInfo(CakeToppingInfo cakeToppingInfo, List<CakeLayerInfo> cakeLayerIn
5757
* Calculate calories.
5858
*/
5959
public int calculateTotalCalories() {
60-
int total = cakeToppingInfo != null ? cakeToppingInfo.calories : 0;
60+
var total = cakeToppingInfo != null ? cakeToppingInfo.calories : 0;
6161
total += cakeLayerInfos.stream().mapToInt(c -> c.calories).sum();
6262
return total;
6363
}

layers/src/main/java/com/iluwatar/layers/service/CakeBakingServiceImpl.java

Lines changed: 32 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -60,65 +60,63 @@ public CakeBakingServiceImpl() {
6060

6161
@Override
6262
public void bakeNewCake(CakeInfo cakeInfo) throws CakeBakingException {
63-
List<CakeTopping> allToppings = getAvailableToppingEntities();
64-
List<CakeTopping> matchingToppings =
63+
var allToppings = getAvailableToppingEntities();
64+
var matchingToppings =
6565
allToppings.stream().filter(t -> t.getName().equals(cakeInfo.cakeToppingInfo.name))
6666
.collect(Collectors.toList());
6767
if (matchingToppings.isEmpty()) {
6868
throw new CakeBakingException(String.format("Topping %s is not available",
6969
cakeInfo.cakeToppingInfo.name));
7070
}
71-
List<CakeLayer> allLayers = getAvailableLayerEntities();
71+
var allLayers = getAvailableLayerEntities();
7272
Set<CakeLayer> foundLayers = new HashSet<>();
73-
for (CakeLayerInfo info : cakeInfo.cakeLayerInfos) {
74-
Optional<CakeLayer> found =
75-
allLayers.stream().filter(layer -> layer.getName().equals(info.name)).findFirst();
73+
for (var info : cakeInfo.cakeLayerInfos) {
74+
var found = allLayers.stream().filter(layer -> layer.getName().equals(info.name)).findFirst();
7675
if (!found.isPresent()) {
7776
throw new CakeBakingException(String.format("Layer %s is not available", info.name));
7877
} else {
7978
foundLayers.add(found.get());
8079
}
8180
}
82-
CakeToppingDao toppingBean = context.getBean(CakeToppingDao.class);
83-
Optional<CakeTopping> topping = toppingBean.findById(
84-
matchingToppings.iterator().next().getId());
85-
CakeDao cakeBean = context.getBean(CakeDao.class);
81+
var toppingBean = context.getBean(CakeToppingDao.class);
82+
var topping = toppingBean.findById(matchingToppings.iterator().next().getId());
83+
var cakeBean = context.getBean(CakeDao.class);
8684
if (topping.isPresent()) {
87-
Cake cake = new Cake();
85+
var cake = new Cake();
8886
cake.setTopping(topping.get());
8987
cake.setLayers(foundLayers);
9088
cakeBean.save(cake);
9189
topping.get().setCake(cake);
9290
toppingBean.save(topping.get());
93-
CakeLayerDao layerBean = context.getBean(CakeLayerDao.class);
94-
for (CakeLayer layer : foundLayers) {
91+
var layerBean = context.getBean(CakeLayerDao.class);
92+
for (var layer : foundLayers) {
9593
layer.setCake(cake);
9694
layerBean.save(layer);
9795
}
9896
} else {
9997
throw new CakeBakingException(String.format("Topping %s is not available",
100-
cakeInfo.cakeToppingInfo.name));
98+
cakeInfo.cakeToppingInfo.name));
10199
}
102100
}
103101

104102
@Override
105103
public void saveNewTopping(CakeToppingInfo toppingInfo) {
106-
CakeToppingDao bean = context.getBean(CakeToppingDao.class);
104+
var bean = context.getBean(CakeToppingDao.class);
107105
bean.save(new CakeTopping(toppingInfo.name, toppingInfo.calories));
108106
}
109107

110108
@Override
111109
public void saveNewLayer(CakeLayerInfo layerInfo) {
112-
CakeLayerDao bean = context.getBean(CakeLayerDao.class);
110+
var bean = context.getBean(CakeLayerDao.class);
113111
bean.save(new CakeLayer(layerInfo.name, layerInfo.calories));
114112
}
115113

116114
private List<CakeTopping> getAvailableToppingEntities() {
117-
CakeToppingDao bean = context.getBean(CakeToppingDao.class);
115+
var bean = context.getBean(CakeToppingDao.class);
118116
List<CakeTopping> result = new ArrayList<>();
119-
Iterator<CakeTopping> iterator = bean.findAll().iterator();
117+
var iterator = bean.findAll().iterator();
120118
while (iterator.hasNext()) {
121-
CakeTopping topping = iterator.next();
119+
var topping = iterator.next();
122120
if (topping.getCake() == null) {
123121
result.add(topping);
124122
}
@@ -128,11 +126,11 @@ private List<CakeTopping> getAvailableToppingEntities() {
128126

129127
@Override
130128
public List<CakeToppingInfo> getAvailableToppings() {
131-
CakeToppingDao bean = context.getBean(CakeToppingDao.class);
129+
var bean = context.getBean(CakeToppingDao.class);
132130
List<CakeToppingInfo> result = new ArrayList<>();
133-
Iterator<CakeTopping> iterator = bean.findAll().iterator();
131+
var iterator = bean.findAll().iterator();
134132
while (iterator.hasNext()) {
135-
CakeTopping next = iterator.next();
133+
var next = iterator.next();
136134
if (next.getCake() == null) {
137135
result.add(new CakeToppingInfo(next.getId(), next.getName(), next.getCalories()));
138136
}
@@ -141,11 +139,11 @@ public List<CakeToppingInfo> getAvailableToppings() {
141139
}
142140

143141
private List<CakeLayer> getAvailableLayerEntities() {
144-
CakeLayerDao bean = context.getBean(CakeLayerDao.class);
142+
var bean = context.getBean(CakeLayerDao.class);
145143
List<CakeLayer> result = new ArrayList<>();
146-
Iterator<CakeLayer> iterator = bean.findAll().iterator();
144+
var iterator = bean.findAll().iterator();
147145
while (iterator.hasNext()) {
148-
CakeLayer next = iterator.next();
146+
var next = iterator.next();
149147
if (next.getCake() == null) {
150148
result.add(next);
151149
}
@@ -155,11 +153,11 @@ private List<CakeLayer> getAvailableLayerEntities() {
155153

156154
@Override
157155
public List<CakeLayerInfo> getAvailableLayers() {
158-
CakeLayerDao bean = context.getBean(CakeLayerDao.class);
156+
var bean = context.getBean(CakeLayerDao.class);
159157
List<CakeLayerInfo> result = new ArrayList<>();
160-
Iterator<CakeLayer> iterator = bean.findAll().iterator();
158+
var iterator = bean.findAll().iterator();
161159
while (iterator.hasNext()) {
162-
CakeLayer next = iterator.next();
160+
var next = iterator.next();
163161
if (next.getCake() == null) {
164162
result.add(new CakeLayerInfo(next.getId(), next.getName(), next.getCalories()));
165163
}
@@ -169,19 +167,19 @@ public List<CakeLayerInfo> getAvailableLayers() {
169167

170168
@Override
171169
public List<CakeInfo> getAllCakes() {
172-
CakeDao cakeBean = context.getBean(CakeDao.class);
170+
var cakeBean = context.getBean(CakeDao.class);
173171
List<CakeInfo> result = new ArrayList<>();
174-
Iterator<Cake> iterator = cakeBean.findAll().iterator();
172+
var iterator = cakeBean.findAll().iterator();
175173
while (iterator.hasNext()) {
176-
Cake cake = iterator.next();
177-
CakeToppingInfo cakeToppingInfo =
174+
var cake = iterator.next();
175+
var cakeToppingInfo =
178176
new CakeToppingInfo(cake.getTopping().getId(), cake.getTopping().getName(), cake
179177
.getTopping().getCalories());
180178
List<CakeLayerInfo> cakeLayerInfos = new ArrayList<>();
181-
for (CakeLayer layer : cake.getLayers()) {
179+
for (var layer : cake.getLayers()) {
182180
cakeLayerInfos.add(new CakeLayerInfo(layer.getId(), layer.getName(), layer.getCalories()));
183181
}
184-
CakeInfo cakeInfo = new CakeInfo(cake.getId(), cakeToppingInfo, cakeLayerInfos);
182+
var cakeInfo = new CakeInfo(cake.getId(), cakeToppingInfo, cakeLayerInfos);
185183
result.add(cakeInfo);
186184
}
187185
return result;

layers/src/test/java/com/iluwatar/layers/entity/CakeTest.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,31 +45,31 @@ public class CakeTest {
4545

4646
@Test
4747
public void testSetId() {
48-
final Cake cake = new Cake();
48+
final var cake = new Cake();
4949
assertNull(cake.getId());
5050

51-
final Long expectedId = 1234L;
51+
final var expectedId = 1234L;
5252
cake.setId(expectedId);
5353
assertEquals(expectedId, cake.getId());
5454
}
5555

5656
@Test
5757
public void testSetTopping() {
58-
final Cake cake = new Cake();
58+
final var cake = new Cake();
5959
assertNull(cake.getTopping());
6060

61-
final CakeTopping expectedTopping = new CakeTopping("DummyTopping", 1000);
61+
final var expectedTopping = new CakeTopping("DummyTopping", 1000);
6262
cake.setTopping(expectedTopping);
6363
assertEquals(expectedTopping, cake.getTopping());
6464
}
6565

6666
@Test
6767
public void testSetLayers() {
68-
final Cake cake = new Cake();
68+
final var cake = new Cake();
6969
assertNotNull(cake.getLayers());
7070
assertTrue(cake.getLayers().isEmpty());
7171

72-
final Set<CakeLayer> expectedLayers = Set.of(
72+
final var expectedLayers = Set.of(
7373
new CakeLayer("layer1", 1000),
7474
new CakeLayer("layer2", 2000),
7575
new CakeLayer("layer3", 3000));
@@ -79,7 +79,7 @@ public void testSetLayers() {
7979

8080
@Test
8181
public void testAddLayer() {
82-
final Cake cake = new Cake();
82+
final var cake = new Cake();
8383
assertNotNull(cake.getLayers());
8484
assertTrue(cake.getLayers().isEmpty());
8585

@@ -90,7 +90,7 @@ public void testAddLayer() {
9090
cake.setLayers(initialLayers);
9191
assertEquals(initialLayers, cake.getLayers());
9292

93-
final CakeLayer newLayer = new CakeLayer("layer3", 3000);
93+
final var newLayer = new CakeLayer("layer3", 3000);
9494
cake.addLayer(newLayer);
9595

9696
final Set<CakeLayer> expectedLayers = new HashSet<>();
@@ -102,18 +102,18 @@ public void testAddLayer() {
102102

103103
@Test
104104
public void testToString() {
105-
final CakeTopping topping = new CakeTopping("topping", 20);
105+
final var topping = new CakeTopping("topping", 20);
106106
topping.setId(2345L);
107107

108-
final CakeLayer layer = new CakeLayer("layer", 100);
108+
final var layer = new CakeLayer("layer", 100);
109109
layer.setId(3456L);
110110

111-
final Cake cake = new Cake();
111+
final var cake = new Cake();
112112
cake.setId(1234L);
113113
cake.setTopping(topping);
114114
cake.addLayer(layer);
115115

116-
final String expected = "id=1234 topping=id=2345 name=topping calories=20 "
116+
final var expected = "id=1234 topping=id=2345 name=topping calories=20 "
117117
+ "layers=[id=3456 name=layer calories=100]";
118118
assertEquals(expected, cake.toString());
119119

layers/src/test/java/com/iluwatar/layers/exception/CakeBakingExceptionTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,15 @@ public class CakeBakingExceptionTest {
3838

3939
@Test
4040
public void testConstructor() {
41-
final CakeBakingException exception = new CakeBakingException();
41+
final var exception = new CakeBakingException();
4242
assertNull(exception.getMessage());
4343
assertNull(exception.getCause());
4444
}
4545

4646
@Test
4747
public void testConstructorWithMessage() {
48-
final String expectedMessage = "message";
49-
final CakeBakingException exception = new CakeBakingException(expectedMessage);
48+
final var expectedMessage = "message";
49+
final var exception = new CakeBakingException(expectedMessage);
5050
assertEquals(expectedMessage, exception.getMessage());
5151
assertNull(exception.getCause());
5252
}

0 commit comments

Comments
 (0)