Date: Sun, 12 Apr 2020 22:45:54 +0000
Subject: [PATCH 08/18] Java 11 migraiton: monad
---
.../src/main/java/com/iluwatar/monad/App.java | 9 ++---
.../main/java/com/iluwatar/monad/User.java | 8 ++--
.../java/com/iluwatar/monad/Validator.java | 19 +++++----
.../test/java/com/iluwatar/monad/AppTest.java | 3 +-
.../java/com/iluwatar/monad/MonadTest.java | 39 +++++++++++--------
5 files changed, 42 insertions(+), 36 deletions(-)
diff --git a/monad/src/main/java/com/iluwatar/monad/App.java b/monad/src/main/java/com/iluwatar/monad/App.java
index ccb42edd0..bb3315064 100644
--- a/monad/src/main/java/com/iluwatar/monad/App.java
+++ b/monad/src/main/java/com/iluwatar/monad/App.java
@@ -41,9 +41,8 @@ import org.slf4j.LoggerFactory;
* instance of a plain object with {@link Validator#of(Object)} and validates it {@link
* Validator#validate(Function, Predicate, String)} against given predicates.
*
- * As a validation result {@link Validator#get()} it either returns valid object {@link
- * Validator#t} or throws a list of exceptions {@link Validator#exceptions} collected during
- * validation.
+ *
As a validation result {@link Validator#get()} either returns valid object
+ * or throws {@link IllegalStateException} with list of exceptions collected during validation.
*/
public class App {
@@ -55,10 +54,10 @@ public class App {
* @param args command line args
*/
public static void main(String[] args) {
- User user = new User("user", 24, Sex.FEMALE, "foobar.com");
+ var user = new User("user", 24, Sex.FEMALE, "foobar.com");
LOGGER.info(Validator.of(user).validate(User::getName, Objects::nonNull, "name is null")
.validate(User::getName, name -> !name.isEmpty(), "name is empty")
- .validate(User::getEmail, email -> !email.contains("@"), "email doesn't containt '@'")
+ .validate(User::getEmail, email -> !email.contains("@"), "email doesn't contains '@'")
.validate(User::getAge, age -> age > 20 && age < 30, "age isn't between...").get()
.toString());
}
diff --git a/monad/src/main/java/com/iluwatar/monad/User.java b/monad/src/main/java/com/iluwatar/monad/User.java
index 77766d1aa..f67009bc3 100644
--- a/monad/src/main/java/com/iluwatar/monad/User.java
+++ b/monad/src/main/java/com/iluwatar/monad/User.java
@@ -28,10 +28,10 @@ package com.iluwatar.monad;
*/
public class User {
- private String name;
- private int age;
- private Sex sex;
- private String email;
+ private final String name;
+ private final int age;
+ private final Sex sex;
+ private final String email;
/**
* Constructor.
diff --git a/monad/src/main/java/com/iluwatar/monad/Validator.java b/monad/src/main/java/com/iluwatar/monad/Validator.java
index 2d1f1bdab..47acc8a42 100644
--- a/monad/src/main/java/com/iluwatar/monad/Validator.java
+++ b/monad/src/main/java/com/iluwatar/monad/Validator.java
@@ -85,18 +85,21 @@ public class Validator {
}
/**
- * Extension for the {@link Validator#validate(Function, Predicate, String)} method, dedicated for
- * objects, that need to be projected before requested validation.
+ * Extension for the {@link Validator#validate(Predicate, String)} method, dedicated for objects,
+ * that need to be projected before requested validation.
*
* @param projection function that gets an objects, and returns projection representing element to
* be validated.
- * @param validation see {@link Validator#validate(Function, Predicate, String)}
- * @param message see {@link Validator#validate(Function, Predicate, String)}
- * @param see {@link Validator#validate(Function, Predicate, String)}
+ * @param validation see {@link Validator#validate(Predicate, String)}
+ * @param message see {@link Validator#validate(Predicate, String)}
+ * @param see {@link Validator#validate(Predicate, String)}
* @return this
*/
- public Validator validate(Function projection, Predicate validation,
- String message) {
+ public Validator validate(
+ Function projection,
+ Predicate validation,
+ String message
+ ) {
return validate(projection.andThen(validation::test)::apply, message);
}
@@ -110,7 +113,7 @@ public class Validator {
if (exceptions.isEmpty()) {
return obj;
}
- IllegalStateException e = new IllegalStateException();
+ var e = new IllegalStateException();
exceptions.forEach(e::addSuppressed);
throw e;
}
diff --git a/monad/src/test/java/com/iluwatar/monad/AppTest.java b/monad/src/test/java/com/iluwatar/monad/AppTest.java
index f4d89a7cd..d56270173 100644
--- a/monad/src/test/java/com/iluwatar/monad/AppTest.java
+++ b/monad/src/test/java/com/iluwatar/monad/AppTest.java
@@ -32,8 +32,7 @@ public class AppTest {
@Test
public void testMain() {
- String[] args = {};
- App.main(args);
+ App.main(new String[]{});
}
}
diff --git a/monad/src/test/java/com/iluwatar/monad/MonadTest.java b/monad/src/test/java/com/iluwatar/monad/MonadTest.java
index d1bdd7487..afd5b50f8 100644
--- a/monad/src/test/java/com/iluwatar/monad/MonadTest.java
+++ b/monad/src/test/java/com/iluwatar/monad/MonadTest.java
@@ -23,13 +23,12 @@
package com.iluwatar.monad;
-import org.junit.jupiter.api.Test;
-
-import java.util.Objects;
-
import static org.junit.jupiter.api.Assertions.assertSame;
import static org.junit.jupiter.api.Assertions.assertThrows;
+import java.util.Objects;
+import org.junit.jupiter.api.Test;
+
/**
* Test for Monad Pattern
*/
@@ -37,27 +36,33 @@ public class MonadTest {
@Test
public void testForInvalidName() {
- User tom = new User(null, 21, Sex.MALE, "tom@foo.bar");
- assertThrows(IllegalStateException.class, () -> {
- Validator.of(tom).validate(User::getName, Objects::nonNull, "name cannot be null").get();
- });
+ var tom = new User(null, 21, Sex.MALE, "tom@foo.bar");
+ assertThrows(
+ IllegalStateException.class,
+ () -> Validator.of(tom)
+ .validate(User::getName, Objects::nonNull, "name cannot be null")
+ .get()
+ );
}
@Test
public void testForInvalidAge() {
- User john = new User("John", 17, Sex.MALE, "john@qwe.bar");
- assertThrows(IllegalStateException.class, () -> {
- Validator.of(john).validate(User::getName, Objects::nonNull, "name cannot be null")
- .validate(User::getAge, age -> age > 21, "user is underaged")
- .get();
- });
+ var john = new User("John", 17, Sex.MALE, "john@qwe.bar");
+ assertThrows(
+ IllegalStateException.class,
+ () -> Validator.of(john)
+ .validate(User::getName, Objects::nonNull, "name cannot be null")
+ .validate(User::getAge, age -> age > 21, "user is underage")
+ .get()
+ );
}
@Test
public void testForValid() {
- User sarah = new User("Sarah", 42, Sex.FEMALE, "sarah@det.org");
- User validated = Validator.of(sarah).validate(User::getName, Objects::nonNull, "name cannot be null")
- .validate(User::getAge, age -> age > 21, "user is underaged")
+ var sarah = new User("Sarah", 42, Sex.FEMALE, "sarah@det.org");
+ var validated = Validator.of(sarah)
+ .validate(User::getName, Objects::nonNull, "name cannot be null")
+ .validate(User::getAge, age -> age > 21, "user is underage")
.validate(User::getSex, sex -> sex == Sex.FEMALE, "user is not female")
.validate(User::getEmail, email -> email.contains("@"), "email does not contain @ sign")
.get();
From 109d33c710fbb1db43bf2ecf6354682041f141b5 Mon Sep 17 00:00:00 2001
From: Anurag Agarwal
Date: Sun, 12 Apr 2020 22:49:00 +0000
Subject: [PATCH 09/18] Java 11 migraiton: monostate
---
.../src/main/java/com/iluwatar/monostate/App.java | 6 +++---
.../java/com/iluwatar/monostate/LoadBalancer.java | 6 +++---
.../test/java/com/iluwatar/monostate/AppTest.java | 3 +--
.../com/iluwatar/monostate/LoadBalancerTest.java | 12 ++++++------
4 files changed, 13 insertions(+), 14 deletions(-)
diff --git a/monostate/src/main/java/com/iluwatar/monostate/App.java b/monostate/src/main/java/com/iluwatar/monostate/App.java
index 64cb38461..9f5b2c173 100644
--- a/monostate/src/main/java/com/iluwatar/monostate/App.java
+++ b/monostate/src/main/java/com/iluwatar/monostate/App.java
@@ -30,7 +30,7 @@ package com.iluwatar.monostate;
*
* In the following example, The {@link LoadBalancer} class represents the app's logic. It
* contains a series of Servers, which can handle requests of type {@link Request}. Two instances of
- * LoadBalacer are created. When a request is made to a server via the first LoadBalancer the state
+ * LoadBalancer are created. When a request is made to a server via the first LoadBalancer the state
* change in the first load balancer affects the second. So if the first LoadBalancer selects the
* Server 1, the second LoadBalancer on a new request will select the Second server. If a third
* LoadBalancer is created and a new request is made to it, then it will select the third server as
@@ -43,8 +43,8 @@ public class App {
* @param args command line args
*/
public static void main(String[] args) {
- LoadBalancer loadBalancer1 = new LoadBalancer();
- LoadBalancer loadBalancer2 = new LoadBalancer();
+ var loadBalancer1 = new LoadBalancer();
+ var loadBalancer2 = new LoadBalancer();
loadBalancer1.serverRequest(new Request("Hello"));
loadBalancer2.serverRequest(new Request("Hello World"));
}
diff --git a/monostate/src/main/java/com/iluwatar/monostate/LoadBalancer.java b/monostate/src/main/java/com/iluwatar/monostate/LoadBalancer.java
index 8546ae177..7a784f514 100644
--- a/monostate/src/main/java/com/iluwatar/monostate/LoadBalancer.java
+++ b/monostate/src/main/java/com/iluwatar/monostate/LoadBalancer.java
@@ -38,8 +38,8 @@ public class LoadBalancer {
private static int lastServedId;
static {
- int id = 0;
- for (int port : new int[]{8080, 8081, 8082, 8083, 8084}) {
+ var id = 0;
+ for (var port : new int[]{8080, 8081, 8082, 8083, 8084}) {
SERVERS.add(new Server("localhost", port, ++id));
}
}
@@ -69,7 +69,7 @@ public class LoadBalancer {
if (lastServedId >= SERVERS.size()) {
lastServedId = 0;
}
- Server server = SERVERS.get(lastServedId++);
+ var server = SERVERS.get(lastServedId++);
server.serve(request);
}
diff --git a/monostate/src/test/java/com/iluwatar/monostate/AppTest.java b/monostate/src/test/java/com/iluwatar/monostate/AppTest.java
index c914f136e..d17a56bb9 100644
--- a/monostate/src/test/java/com/iluwatar/monostate/AppTest.java
+++ b/monostate/src/test/java/com/iluwatar/monostate/AppTest.java
@@ -32,8 +32,7 @@ public class AppTest {
@Test
public void testMain() {
- String[] args = {};
- App.main(args);
+ App.main(new String[]{});
}
}
diff --git a/monostate/src/test/java/com/iluwatar/monostate/LoadBalancerTest.java b/monostate/src/test/java/com/iluwatar/monostate/LoadBalancerTest.java
index 736bf6ea6..d62c029e2 100644
--- a/monostate/src/test/java/com/iluwatar/monostate/LoadBalancerTest.java
+++ b/monostate/src/test/java/com/iluwatar/monostate/LoadBalancerTest.java
@@ -44,8 +44,8 @@ public class LoadBalancerTest {
@Test
public void testSameStateAmongstAllInstances() {
- final LoadBalancer firstBalancer = new LoadBalancer();
- final LoadBalancer secondBalancer = new LoadBalancer();
+ final var firstBalancer = new LoadBalancer();
+ final var secondBalancer = new LoadBalancer();
firstBalancer.addServer(new Server("localhost", 8085, 6));
// Both should have the same number of servers.
assertEquals(firstBalancer.getNoOfServers(), secondBalancer.getNoOfServers());
@@ -55,18 +55,18 @@ public class LoadBalancerTest {
@Test
public void testServe() {
- final Server server = mock(Server.class);
+ final var server = mock(Server.class);
when(server.getHost()).thenReturn("testhost");
when(server.getPort()).thenReturn(1234);
doNothing().when(server).serve(any(Request.class));
- final LoadBalancer loadBalancer = new LoadBalancer();
+ final var loadBalancer = new LoadBalancer();
loadBalancer.addServer(server);
verifyZeroInteractions(server);
- final Request request = new Request("test");
- for (int i = 0; i < loadBalancer.getNoOfServers() * 2; i++) {
+ final var request = new Request("test");
+ for (var i = 0; i < loadBalancer.getNoOfServers() * 2; i++) {
loadBalancer.serverRequest(request);
}
From 9b105d770df2ca56ffd725e88fdbf17666e7cd1b Mon Sep 17 00:00:00 2001
From: Anurag Agarwal
Date: Sun, 12 Apr 2020 22:51:37 +0000
Subject: [PATCH 10/18] Java 11 migraiton: multiton
---
.../src/main/java/com/iluwatar/multiton/Nazgul.java | 2 +-
.../main/java/com/iluwatar/multiton/NazgulEnum.java | 12 +++++++++---
.../main/java/com/iluwatar/multiton/NazgulName.java | 12 +++++++++---
.../src/test/java/com/iluwatar/multiton/AppTest.java | 5 +----
.../java/com/iluwatar/multiton/NazgulEnumTest.java | 8 ++++----
.../test/java/com/iluwatar/multiton/NazgulTest.java | 4 ++--
6 files changed, 26 insertions(+), 17 deletions(-)
diff --git a/multiton/src/main/java/com/iluwatar/multiton/Nazgul.java b/multiton/src/main/java/com/iluwatar/multiton/Nazgul.java
index f55f85aca..bd1fc70ef 100644
--- a/multiton/src/main/java/com/iluwatar/multiton/Nazgul.java
+++ b/multiton/src/main/java/com/iluwatar/multiton/Nazgul.java
@@ -31,7 +31,7 @@ import java.util.concurrent.ConcurrentHashMap;
*/
public final class Nazgul {
- private static Map nazguls;
+ private static final Map nazguls;
private NazgulName name;
diff --git a/multiton/src/main/java/com/iluwatar/multiton/NazgulEnum.java b/multiton/src/main/java/com/iluwatar/multiton/NazgulEnum.java
index 5b5c48d66..bb1454b9f 100644
--- a/multiton/src/main/java/com/iluwatar/multiton/NazgulEnum.java
+++ b/multiton/src/main/java/com/iluwatar/multiton/NazgulEnum.java
@@ -27,7 +27,13 @@ package com.iluwatar.multiton;
* enum based multiton implementation.
*/
public enum NazgulEnum {
-
- KHAMUL, MURAZOR, DWAR, JI_INDUR, AKHORAHIL, HOARMURATH, ADUNAPHEL, REN, UVATHA;
-
+ KHAMUL,
+ MURAZOR,
+ DWAR,
+ JI_INDUR,
+ AKHORAHIL,
+ HOARMURATH,
+ ADUNAPHEL,
+ REN,
+ UVATHA
}
diff --git a/multiton/src/main/java/com/iluwatar/multiton/NazgulName.java b/multiton/src/main/java/com/iluwatar/multiton/NazgulName.java
index c7865dceb..cce19c6ff 100644
--- a/multiton/src/main/java/com/iluwatar/multiton/NazgulName.java
+++ b/multiton/src/main/java/com/iluwatar/multiton/NazgulName.java
@@ -27,7 +27,13 @@ package com.iluwatar.multiton;
* Each Nazgul has different {@link NazgulName}.
*/
public enum NazgulName {
-
- KHAMUL, MURAZOR, DWAR, JI_INDUR, AKHORAHIL, HOARMURATH, ADUNAPHEL, REN, UVATHA;
-
+ KHAMUL,
+ MURAZOR,
+ DWAR,
+ JI_INDUR,
+ AKHORAHIL,
+ HOARMURATH,
+ ADUNAPHEL,
+ REN,
+ UVATHA
}
diff --git a/multiton/src/test/java/com/iluwatar/multiton/AppTest.java b/multiton/src/test/java/com/iluwatar/multiton/AppTest.java
index f577b7f07..0496ebdaf 100644
--- a/multiton/src/test/java/com/iluwatar/multiton/AppTest.java
+++ b/multiton/src/test/java/com/iluwatar/multiton/AppTest.java
@@ -26,15 +26,12 @@ package com.iluwatar.multiton;
import org.junit.jupiter.api.Test;
/**
- *
* Application test
- *
*/
public class AppTest {
@Test
public void test() {
- String[] args = {};
- App.main(args);
+ App.main(new String[]{});
}
}
diff --git a/multiton/src/test/java/com/iluwatar/multiton/NazgulEnumTest.java b/multiton/src/test/java/com/iluwatar/multiton/NazgulEnumTest.java
index 6668874f4..4d107a181 100644
--- a/multiton/src/test/java/com/iluwatar/multiton/NazgulEnumTest.java
+++ b/multiton/src/test/java/com/iluwatar/multiton/NazgulEnumTest.java
@@ -39,10 +39,10 @@ class NazgulEnumTest {
*/
@Test
public void testTheSameObjectIsReturnedWithMultipleCalls() {
- for (int i = 0; i < NazgulEnum.values().length; i++) {
- NazgulEnum instance1 = NazgulEnum.values()[i];
- NazgulEnum instance2 = NazgulEnum.values()[i];
- NazgulEnum instance3 = NazgulEnum.values()[i];
+ for (var i = 0; i < NazgulEnum.values().length; i++) {
+ var instance1 = NazgulEnum.values()[i];
+ var instance2 = NazgulEnum.values()[i];
+ var instance3 = NazgulEnum.values()[i];
assertSame(instance1, instance2);
assertSame(instance1, instance3);
assertSame(instance2, instance3);
diff --git a/multiton/src/test/java/com/iluwatar/multiton/NazgulTest.java b/multiton/src/test/java/com/iluwatar/multiton/NazgulTest.java
index 0429f8e29..f900659a8 100644
--- a/multiton/src/test/java/com/iluwatar/multiton/NazgulTest.java
+++ b/multiton/src/test/java/com/iluwatar/multiton/NazgulTest.java
@@ -41,8 +41,8 @@ public class NazgulTest {
*/
@Test
public void testGetInstance() {
- for (final NazgulName name : NazgulName.values()) {
- final Nazgul nazgul = Nazgul.getInstance(name);
+ for (final var name : NazgulName.values()) {
+ final var nazgul = Nazgul.getInstance(name);
assertNotNull(nazgul);
assertSame(nazgul, Nazgul.getInstance(name));
assertEquals(name, nazgul.getName());
From 2fa938c02d64edff93757f631fa36fd445624113 Mon Sep 17 00:00:00 2001
From: Anurag Agarwal
Date: Sun, 12 Apr 2020 22:58:50 +0000
Subject: [PATCH 11/18] Java 11 migraiton: mute-idiom
---
.../src/main/java/com/iluwatar/mute/App.java | 23 +++++++++----------
.../test/java/com/iluwatar/mute/AppTest.java | 5 ++--
.../test/java/com/iluwatar/mute/MuteTest.java | 18 ++++++---------
3 files changed, 20 insertions(+), 26 deletions(-)
diff --git a/mute-idiom/src/main/java/com/iluwatar/mute/App.java b/mute-idiom/src/main/java/com/iluwatar/mute/App.java
index d4f140bf0..eca345014 100644
--- a/mute-idiom/src/main/java/com/iluwatar/mute/App.java
+++ b/mute-idiom/src/main/java/com/iluwatar/mute/App.java
@@ -25,7 +25,7 @@ package com.iluwatar.mute;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import java.sql.SQLException;
+import java.util.Optional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -52,9 +52,8 @@ public class App {
* Program entry point.
*
* @param args command line args.
- * @throws Exception if any exception occurs
*/
- public static void main(String[] args) throws Exception {
+ public static void main(String[] args) {
useOfLoggedMute();
@@ -68,17 +67,17 @@ public class App {
* exception occurs.
*/
private static void useOfMute() {
- ByteArrayOutputStream out = new ByteArrayOutputStream();
+ var out = new ByteArrayOutputStream();
Mute.mute(() -> out.write("Hello".getBytes()));
}
- private static void useOfLoggedMute() throws SQLException {
- Resource resource = null;
+ private static void useOfLoggedMute() {
+ Optional resource = Optional.empty();
try {
- resource = acquireResource();
- utilizeResource(resource);
+ resource = Optional.of(acquireResource());
+ utilizeResource(resource.get());
} finally {
- closeResource(resource);
+ resource.ifPresent(App::closeResource);
}
}
@@ -86,14 +85,14 @@ public class App {
* All we can do while failed close of a resource is to log it.
*/
private static void closeResource(Resource resource) {
- Mute.loggedMute(() -> resource.close());
+ Mute.loggedMute(resource::close);
}
- private static void utilizeResource(Resource resource) throws SQLException {
+ private static void utilizeResource(Resource resource) {
LOGGER.info("Utilizing acquired resource: {}", resource);
}
- private static Resource acquireResource() throws SQLException {
+ private static Resource acquireResource() {
return new Resource() {
@Override
diff --git a/mute-idiom/src/test/java/com/iluwatar/mute/AppTest.java b/mute-idiom/src/test/java/com/iluwatar/mute/AppTest.java
index 5ca525a9d..5883812c7 100644
--- a/mute-idiom/src/test/java/com/iluwatar/mute/AppTest.java
+++ b/mute-idiom/src/test/java/com/iluwatar/mute/AppTest.java
@@ -27,12 +27,11 @@ import org.junit.jupiter.api.Test;
/**
* Tests that Mute idiom example runs without errors.
- *
*/
public class AppTest {
@Test
- public void test() throws Exception {
- App.main(null);
+ public void test() {
+ App.main(new String[]{});
}
}
diff --git a/mute-idiom/src/test/java/com/iluwatar/mute/MuteTest.java b/mute-idiom/src/test/java/com/iluwatar/mute/MuteTest.java
index f2743113b..33d104ffc 100644
--- a/mute-idiom/src/test/java/com/iluwatar/mute/MuteTest.java
+++ b/mute-idiom/src/test/java/com/iluwatar/mute/MuteTest.java
@@ -23,17 +23,15 @@
package com.iluwatar.mute;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
/**
* Test for the mute-idiom pattern
*/
@@ -50,9 +48,7 @@ public class MuteTest {
@Test
public void muteShouldRethrowUnexpectedExceptionAsAssertionError() {
- assertThrows(AssertionError.class, () -> {
- Mute.mute(this::methodThrowingException);
- });
+ assertThrows(AssertionError.class, () -> Mute.mute(this::methodThrowingException));
}
@Test
@@ -62,7 +58,7 @@ public class MuteTest {
@Test
public void loggedMuteShouldLogExceptionTraceBeforeSwallowingIt() {
- ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ var stream = new ByteArrayOutputStream();
System.setErr(new PrintStream(stream));
Mute.loggedMute(this::methodThrowingException);
From d733122e7ac0ee6d169acae38734d6c0a95d6a03 Mon Sep 17 00:00:00 2001
From: Anurag Agarwal
Date: Sun, 12 Apr 2020 23:00:49 +0000
Subject: [PATCH 12/18] Java 11 migraiton: mutex
---
mutex/src/main/java/com/iluwatar/mutex/App.java | 8 ++++----
mutex/src/main/java/com/iluwatar/mutex/Jar.java | 2 +-
.../src/main/java/com/iluwatar/mutex/Thief.java | 2 +-
.../test/java/com/iluwatar/mutex/AppTest.java | 7 ++-----
.../test/java/com/iluwatar/mutex/JarTest.java | 17 ++++++++---------
.../test/java/com/iluwatar/mutex/MutexTest.java | 6 +++---
6 files changed, 19 insertions(+), 23 deletions(-)
diff --git a/mutex/src/main/java/com/iluwatar/mutex/App.java b/mutex/src/main/java/com/iluwatar/mutex/App.java
index e4a952ef9..c50acc65a 100644
--- a/mutex/src/main/java/com/iluwatar/mutex/App.java
+++ b/mutex/src/main/java/com/iluwatar/mutex/App.java
@@ -38,10 +38,10 @@ public class App {
* main method.
*/
public static void main(String[] args) {
- Mutex mutex = new Mutex();
- Jar jar = new Jar(1000, mutex);
- Thief peter = new Thief("Peter", jar);
- Thief john = new Thief("John", jar);
+ var mutex = new Mutex();
+ var jar = new Jar(1000, mutex);
+ var peter = new Thief("Peter", jar);
+ var john = new Thief("John", jar);
peter.start();
john.start();
}
diff --git a/mutex/src/main/java/com/iluwatar/mutex/Jar.java b/mutex/src/main/java/com/iluwatar/mutex/Jar.java
index f68b266ad..4a0861e1a 100644
--- a/mutex/src/main/java/com/iluwatar/mutex/Jar.java
+++ b/mutex/src/main/java/com/iluwatar/mutex/Jar.java
@@ -48,7 +48,7 @@ public class Jar {
* Method for a thief to take a bean.
*/
public boolean takeBean() {
- boolean success = false;
+ var success = false;
try {
lock.acquire();
success = beans > 0;
diff --git a/mutex/src/main/java/com/iluwatar/mutex/Thief.java b/mutex/src/main/java/com/iluwatar/mutex/Thief.java
index 29caba540..a9a715970 100644
--- a/mutex/src/main/java/com/iluwatar/mutex/Thief.java
+++ b/mutex/src/main/java/com/iluwatar/mutex/Thief.java
@@ -54,7 +54,7 @@ public class Thief extends Thread {
*/
@Override
public void run() {
- int beans = 0;
+ var beans = 0;
while (jar.takeBean()) {
beans = beans + 1;
diff --git a/mutex/src/test/java/com/iluwatar/mutex/AppTest.java b/mutex/src/test/java/com/iluwatar/mutex/AppTest.java
index 1793bf90b..0bee249a6 100644
--- a/mutex/src/test/java/com/iluwatar/mutex/AppTest.java
+++ b/mutex/src/test/java/com/iluwatar/mutex/AppTest.java
@@ -25,15 +25,12 @@ package com.iluwatar.mutex;
import org.junit.jupiter.api.Test;
-import java.io.IOException;
-
/**
* Application Test Entrypoint
*/
public class AppTest {
@Test
- public void test() throws IOException {
- String[] args = {};
- App.main(args);
+ public void test() {
+ App.main(new String[]{});
}
}
diff --git a/mutex/src/test/java/com/iluwatar/mutex/JarTest.java b/mutex/src/test/java/com/iluwatar/mutex/JarTest.java
index e0a316072..786f96e44 100644
--- a/mutex/src/test/java/com/iluwatar/mutex/JarTest.java
+++ b/mutex/src/test/java/com/iluwatar/mutex/JarTest.java
@@ -23,10 +23,11 @@
package com.iluwatar.mutex;
-import org.junit.jupiter.api.Test;
-
import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import java.util.stream.IntStream;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
/**
* Test case for taking beans from a Jar
@@ -35,12 +36,10 @@ public class JarTest {
@Test
public void testTakeBeans() {
- Mutex mutex = new Mutex();
- Jar jar = new Jar(10, mutex);
- for (int i = 0; i < 10; i++) {
- assertTrue(jar.takeBean());
- }
+ var mutex = new Mutex();
+ var jar = new Jar(10, mutex);
+ IntStream.range(0, 10).mapToObj(i -> jar.takeBean()).forEach(Assertions::assertTrue);
assertFalse(jar.takeBean());
}
-}
\ No newline at end of file
+}
diff --git a/mutex/src/test/java/com/iluwatar/mutex/MutexTest.java b/mutex/src/test/java/com/iluwatar/mutex/MutexTest.java
index 2e3184c51..d6d0cc1d7 100644
--- a/mutex/src/test/java/com/iluwatar/mutex/MutexTest.java
+++ b/mutex/src/test/java/com/iluwatar/mutex/MutexTest.java
@@ -23,12 +23,12 @@
package com.iluwatar.mutex;
-import org.junit.jupiter.api.Test;
-
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.fail;
+import org.junit.jupiter.api.Test;
+
/**
* Test case for acquiring and releasing a Mutex
*/
@@ -36,7 +36,7 @@ public class MutexTest {
@Test
public void acquireReleaseTest() {
- Mutex mutex = new Mutex();
+ var mutex = new Mutex();
assertNull(mutex.getOwner());
try {
mutex.acquire();
From daf53225d8977f2a8998e54e4d5001a3d15a8a03 Mon Sep 17 00:00:00 2001
From: Anurag Agarwal
Date: Fri, 1 May 2020 08:04:45 +0000
Subject: [PATCH 13/18] Resolves CR comments
---
marker/src/main/java/App.java | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/marker/src/main/java/App.java b/marker/src/main/java/App.java
index c7b4530c6..8a08a8f70 100644
--- a/marker/src/main/java/App.java
+++ b/marker/src/main/java/App.java
@@ -21,6 +21,9 @@
* THE SOFTWARE.
*/
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
/**
* Created by Alexis on 28-Apr-17. With Marker interface idea is to make empty interface and extend
* it. Basically it is just to identify the special objects from normal objects. Like in case of
@@ -43,10 +46,23 @@ public class App {
* @param args command line args
*/
public static void main(String[] args) {
+ final Logger logger = LoggerFactory.getLogger(App.class);
var guard = new Guard();
var thief = new Thief();
- guard.enter();
- thief.doNothing();
+
+ //noinspection ConstantConditions
+ if (guard instanceof Permission) {
+ guard.enter();
+ } else {
+ logger.info("You have no permission to enter, please leave this area");
+ }
+
+ //noinspection ConstantConditions
+ if (thief instanceof Permission) {
+ thief.doNothing();
+ } else {
+ thief.doNothing();
+ }
}
}
From 44a654a2e31507cca2be00f86054dca7ac3cbf9e Mon Sep 17 00:00:00 2001
From: Anurag Agarwal
Date: Mon, 3 Aug 2020 15:45:29 +0000
Subject: [PATCH 14/18] Resolves CR comments
---
marker/src/main/java/App.java | 4 ++--
marker/src/main/java/Guard.java | 1 -
marker/src/main/java/Thief.java | 3 +--
3 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/marker/src/main/java/App.java b/marker/src/main/java/App.java
index 8a08a8f70..0908503e5 100644
--- a/marker/src/main/java/App.java
+++ b/marker/src/main/java/App.java
@@ -46,7 +46,7 @@ public class App {
* @param args command line args
*/
public static void main(String[] args) {
- final Logger logger = LoggerFactory.getLogger(App.class);
+ final var logger = LoggerFactory.getLogger(App.class);
var guard = new Guard();
var thief = new Thief();
@@ -59,7 +59,7 @@ public class App {
//noinspection ConstantConditions
if (thief instanceof Permission) {
- thief.doNothing();
+ thief.steal();
} else {
thief.doNothing();
}
diff --git a/marker/src/main/java/Guard.java b/marker/src/main/java/Guard.java
index 54443603c..9e7b731b6 100644
--- a/marker/src/main/java/Guard.java
+++ b/marker/src/main/java/Guard.java
@@ -28,7 +28,6 @@ import org.slf4j.LoggerFactory;
* Class defining Guard.
*/
public class Guard implements Permission {
-
private static final Logger LOGGER = LoggerFactory.getLogger(Guard.class);
protected void enter() {
diff --git a/marker/src/main/java/Thief.java b/marker/src/main/java/Thief.java
index 22155ef7b..0e4cf92e3 100644
--- a/marker/src/main/java/Thief.java
+++ b/marker/src/main/java/Thief.java
@@ -28,10 +28,9 @@ import org.slf4j.LoggerFactory;
* Class defining Thief.
*/
public class Thief {
-
private static final Logger LOGGER = LoggerFactory.getLogger(Thief.class);
- protected static void steal() {
+ protected void steal() {
LOGGER.info("Steal valuable items");
}
From 054b1eaac6e79ac9bf43babca0a3521a0e4a5c04 Mon Sep 17 00:00:00 2001
From: Anurag Agarwal
Date: Mon, 3 Aug 2020 15:59:28 +0000
Subject: [PATCH 15/18] Resolves test failures
---
.../model/view/controller/Fatigue.java | 5 +++--
.../iluwatar/model/view/controller/Health.java | 5 +++--
.../model/view/controller/Nourishment.java | 5 +++--
.../model/view/controller/GiantModelTest.java | 18 +++++++++---------
4 files changed, 18 insertions(+), 15 deletions(-)
diff --git a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Fatigue.java b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Fatigue.java
index 2b7ca3999..64bae6e51 100644
--- a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Fatigue.java
+++ b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Fatigue.java
@@ -27,8 +27,9 @@ package com.iluwatar.model.view.controller;
* Fatigue enumeration.
*/
public enum Fatigue {
-
- ALERT("alert"), TIRED("tired"), SLEEPING("sleeping");
+ ALERT("alert"),
+ TIRED("tired"),
+ SLEEPING("sleeping");
private final String title;
diff --git a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Health.java b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Health.java
index a8346b9c7..f15585cdd 100644
--- a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Health.java
+++ b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Health.java
@@ -27,8 +27,9 @@ package com.iluwatar.model.view.controller;
* Health enumeration.
*/
public enum Health {
-
- HEALTHY("healthy"), WOUNDED("wounded"), DEAD("dead");
+ HEALTHY("healthy"),
+ WOUNDED("wounded"),
+ DEAD("dead");
private final String title;
diff --git a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Nourishment.java b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Nourishment.java
index c61d2de79..ba00c38c5 100644
--- a/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Nourishment.java
+++ b/model-view-controller/src/main/java/com/iluwatar/model/view/controller/Nourishment.java
@@ -27,8 +27,9 @@ package com.iluwatar.model.view.controller;
* Nourishment enumeration.
*/
public enum Nourishment {
-
- SATURATED("saturated"), HUNGRY("hungry"), STARVING("starving");
+ SATURATED("saturated"),
+ HUNGRY("hungry"),
+ STARVING("starving");
private final String title;
diff --git a/model-view-controller/src/test/java/com/iluwatar/model/view/controller/GiantModelTest.java b/model-view-controller/src/test/java/com/iluwatar/model/view/controller/GiantModelTest.java
index c1a86b750..677ab436e 100644
--- a/model-view-controller/src/test/java/com/iluwatar/model/view/controller/GiantModelTest.java
+++ b/model-view-controller/src/test/java/com/iluwatar/model/view/controller/GiantModelTest.java
@@ -39,13 +39,13 @@ public class GiantModelTest {
*/
@Test
public void testSetHealth() {
- final var model = new GiantModel(Health.HEALTHY, Fatigue.ALERT, Nourishment.HUNGRY);
+ final var model = new GiantModel(Health.HEALTHY, Fatigue.ALERT, Nourishment.SATURATED);
assertEquals(Health.HEALTHY, model.getHealth());
+ var messageFormat = "The giant looks %s, alert and saturated.";
for (final var health : Health.values()) {
model.setHealth(health);
assertEquals(health, model.getHealth());
- assertEquals("The giant looks " + health.toString() + ", alert and saturated.", model
- .toString());
+ assertEquals(String.format(messageFormat, health), model.toString());
}
}
@@ -54,13 +54,13 @@ public class GiantModelTest {
*/
@Test
public void testSetFatigue() {
- final var model = new GiantModel(Health.WOUNDED, Fatigue.ALERT, Nourishment.SATURATED);
+ final var model = new GiantModel(Health.HEALTHY, Fatigue.ALERT, Nourishment.SATURATED);
assertEquals(Fatigue.ALERT, model.getFatigue());
+ var messageFormat = "The giant looks healthy, %s and saturated.";
for (final var fatigue : Fatigue.values()) {
model.setFatigue(fatigue);
assertEquals(fatigue, model.getFatigue());
- assertEquals("The giant looks healthy, " + fatigue.toString() + " and saturated.", model
- .toString());
+ assertEquals(String.format(messageFormat, fatigue), model.toString());
}
}
@@ -69,13 +69,13 @@ public class GiantModelTest {
*/
@Test
public void testSetNourishment() {
- final var model = new GiantModel(Health.HEALTHY, Fatigue.TIRED, Nourishment.SATURATED);
+ final var model = new GiantModel(Health.HEALTHY, Fatigue.ALERT, Nourishment.SATURATED);
assertEquals(Nourishment.SATURATED, model.getNourishment());
+ var messageFormat = "The giant looks healthy, alert and %s.";
for (final var nourishment : Nourishment.values()) {
model.setNourishment(nourishment);
assertEquals(nourishment, model.getNourishment());
- assertEquals("The giant looks healthy, alert and " + nourishment.toString() + ".", model
- .toString());
+ assertEquals(String.format(messageFormat, nourishment), model.toString());
}
}
From ca7192889dd0d00b6dba4964530110ecac6d1d26 Mon Sep 17 00:00:00 2001
From: Anurag Agarwal
Date: Mon, 3 Aug 2020 18:50:45 +0000
Subject: [PATCH 16/18] Fixes test cases for master-worker-pattern
---
.../masterworker/system/systemmaster/Master.java | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/Master.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/Master.java
index 6f889edaa..a6d8966ea 100644
--- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/Master.java
+++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/Master.java
@@ -75,7 +75,7 @@ public abstract class Master {
}
private void divideWork(Input> input) {
- List extends Input>> dividedInput = input.divideData(numOfWorkers);
+ var dividedInput = input.divideData(numOfWorkers);
if (dividedInput != null) {
this.expectedNumResults = dividedInput.size();
for (var i = 0; i < this.expectedNumResults; i++) {
@@ -83,6 +83,13 @@ public abstract class Master {
this.workers.get(i).setReceivedData(this, dividedInput.get(i));
this.workers.get(i).start();
}
+ for (var i = 0; i < this.expectedNumResults; i++) {
+ try {
+ this.workers.get(i).join();
+ } catch (InterruptedException e) {
+ System.err.println("Error while executing thread");
+ }
+ }
}
}
From 4b38746ce9e5777f939068691168742143bc04ce Mon Sep 17 00:00:00 2001
From: Anurag Agarwal
Date: Tue, 4 Aug 2020 21:41:25 +0000
Subject: [PATCH 17/18] Removes usage of Dictionary
---
.../iluwatar/masterworker/system/systemmaster/Master.java | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/Master.java b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/Master.java
index a6d8966ea..06ea3a8fe 100644
--- a/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/Master.java
+++ b/master-worker-pattern/src/main/java/com/iluwatar/masterworker/system/systemmaster/Master.java
@@ -26,7 +26,6 @@ package com.iluwatar.masterworker.system.systemmaster;
import com.iluwatar.masterworker.Input;
import com.iluwatar.masterworker.Result;
import com.iluwatar.masterworker.system.systemworkers.Worker;
-import java.util.Dictionary;
import java.util.Hashtable;
import java.util.List;
@@ -40,7 +39,7 @@ import java.util.List;
public abstract class Master {
private final int numOfWorkers;
private final List workers;
- private final Dictionary> allResultData;
+ private final Hashtable> allResultData;
private int expectedNumResults;
private Result> finalResult;
@@ -56,7 +55,7 @@ public abstract class Master {
return this.finalResult;
}
- Dictionary> getAllResultData() {
+ Hashtable> getAllResultData() {
return this.allResultData;
}
From a7095602d6299aed284f665b67de7283826f5a39 Mon Sep 17 00:00:00 2001
From: Anurag Agarwal
Date: Tue, 4 Aug 2020 21:46:30 +0000
Subject: [PATCH 18/18] Refactors using var
---
memento/README.md | 19 ++++++++++---------
.../main/java/com/iluwatar/memento/Star.java | 4 ----
.../java/com/iluwatar/memento/StarType.java | 9 ++++++---
3 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/memento/README.md b/memento/README.md
index b8d95b72a..8bbebd36a 100644
--- a/memento/README.md
+++ b/memento/README.md
@@ -34,9 +34,12 @@ Let's first define the types of stars we are capable to handle.
```java
public enum StarType {
-
- SUN("sun"), RED_GIANT("red giant"), WHITE_DWARF("white dwarf"), SUPERNOVA("supernova"), DEAD(
- "dead star"), UNDEFINED("");
+ SUN("sun"),
+ RED_GIANT("red giant"),
+ WHITE_DWARF("white dwarf"),
+ SUPERNOVA("supernova"),
+ DEAD("dead star"),
+ UNDEFINED("");
private final String title;
@@ -95,8 +98,7 @@ public class Star {
}
StarMemento getMemento() {
-
- StarMementoInternal state = new StarMementoInternal();
+ var state = new StarMementoInternal();
state.setAgeYears(ageYears);
state.setMassTons(massTons);
state.setType(type);
@@ -104,8 +106,7 @@ public class Star {
}
void setMemento(StarMemento memento) {
-
- StarMementoInternal state = (StarMementoInternal) memento;
+ var state = (StarMementoInternal) memento;
this.type = state.getType();
this.ageYears = state.getAgeYears();
this.massTons = state.getMassTons();
@@ -152,8 +153,8 @@ public class Star {
And finally here's how we use the mementos to store and restore star states.
```java
- Stack states = new Stack<>();
- Star star = new Star(StarType.SUN, 10000000, 500000);
+ var states = new Stack<>();
+ var star = new Star(StarType.SUN, 10000000, 500000);
LOGGER.info(star.toString());
states.add(star.getMemento());
star.timePasses();
diff --git a/memento/src/main/java/com/iluwatar/memento/Star.java b/memento/src/main/java/com/iluwatar/memento/Star.java
index aac58b817..af1c98b04 100644
--- a/memento/src/main/java/com/iluwatar/memento/Star.java
+++ b/memento/src/main/java/com/iluwatar/memento/Star.java
@@ -70,22 +70,18 @@ public class Star {
}
StarMemento getMemento() {
-
var state = new StarMementoInternal();
state.setAgeYears(ageYears);
state.setMassTons(massTons);
state.setType(type);
return state;
-
}
void setMemento(StarMemento memento) {
-
var state = (StarMementoInternal) memento;
this.type = state.getType();
this.ageYears = state.getAgeYears();
this.massTons = state.getMassTons();
-
}
@Override
diff --git a/memento/src/main/java/com/iluwatar/memento/StarType.java b/memento/src/main/java/com/iluwatar/memento/StarType.java
index 339f05f9f..aa92bf6e6 100644
--- a/memento/src/main/java/com/iluwatar/memento/StarType.java
+++ b/memento/src/main/java/com/iluwatar/memento/StarType.java
@@ -27,9 +27,12 @@ package com.iluwatar.memento;
* StarType enumeration.
*/
public enum StarType {
-
- SUN("sun"), RED_GIANT("red giant"), WHITE_DWARF("white dwarf"), SUPERNOVA("supernova"), DEAD(
- "dead star"), UNDEFINED("");
+ SUN("sun"),
+ RED_GIANT("red giant"),
+ WHITE_DWARF("white dwarf"),
+ SUPERNOVA("supernova"),
+ DEAD("dead star"),
+ UNDEFINED("");
private final String title;