Skip to content

Commit ef42e16

Browse files
authored
fix: Fix sonar issues (iluwatar#2925)
* Remove unused member which was also causing a false positive sonar issue. Fixes sonar issue https://sonarcloud.io/project/issues?open=AY3gHwu5DIZTZkppqVEG&id=iluwatar_java-design-patterns * Fixes sonar issue https://sonarcloud.io/project/issues?open=AXK0OzDA-CiGJS70dLki&id=iluwatar_java-design-patterns related to "Refactor the code of the lambda to not have multiple invocations throwing the same checked exception." Also, updated the code to use Instant and Duration to deal with time instead of int. Added the awaitility library to perform assertions in test which is more reliable than using Thread.sleep directly to wait for events to happen. * checkstyle fix * Add sneaky throws to fix sonar lint issue. This is fine as the newFile method is not being tested but instead the new SimpleFileWriter(...) is. * The first booking needs to happen outside the assertions. Fixed other warnings * Use records to pass around related objects instead of using a large number of individual params, which sonar did not like. * Checkstyle fixes * checkstyle fixes * Remove complexity to keep sonar happy. * Split into different methods to reduce complexity. Could be broken down even further but currently Sonar is happy. * Move files to correct package * Add valid assertions to tests * rename constants to avoid confusion * Sonar warning related to cognitive complexity can be suppressed as the methods are quite generic and not functional enough to be separated out. * Use constants to keep Sonar happy * Use correct constant naming conventions * Use correct constant naming conventions * Use lombok to define noargsconstructor * Use a single method to do the logging * Remove unused constructor and redundant method * Use a reusable method for logging
1 parent 5e12bc5 commit ef42e16

File tree

46 files changed

+570
-553
lines changed

Some content is hidden

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

46 files changed

+570
-553
lines changed

commander/src/main/java/com/iluwatar/commander/AppEmployeeDbFailCases.java

+9-16
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,11 @@
4141
* available/unavailable.
4242
*/
4343
public class AppEmployeeDbFailCases {
44-
private final int numOfRetries = 3;
45-
private final long retryDuration = 30000;
46-
private final long queueTime = 240000; //4 mins
47-
private final long queueTaskTime = 60000; //1 min
48-
private final long paymentTime = 120000; //2 mins
49-
private final long messageTime = 150000; //2.5 mins
50-
private final long employeeTime = 240000; //4 mins
44+
private static final RetryParams retryParams = RetryParams.DEFAULT;
5145

52-
void employeeDatabaseUnavailableCase() throws Exception {
46+
private static final TimeLimits timeLimits = TimeLimits.DEFAULT;
47+
48+
void employeeDatabaseUnavailableCase() {
5349
var ps = new PaymentService(new PaymentDatabase(), new DatabaseUnavailableException(),
5450
new DatabaseUnavailableException(), new DatabaseUnavailableException(),
5551
new DatabaseUnavailableException(), new DatabaseUnavailableException(),
@@ -64,22 +60,20 @@ void employeeDatabaseUnavailableCase() throws Exception {
6460
new QueueDatabase(new DatabaseUnavailableException(), new DatabaseUnavailableException(),
6561
new DatabaseUnavailableException(), new DatabaseUnavailableException(),
6662
new DatabaseUnavailableException(), new DatabaseUnavailableException());
67-
var c = new Commander(eh, ps, ss, ms, qdb, numOfRetries, retryDuration,
68-
queueTime, queueTaskTime, paymentTime, messageTime, employeeTime);
63+
var c = new Commander(eh, ps, ss, ms, qdb, retryParams, timeLimits);
6964
var user = new User("Jim", "ABCD");
7065
var order = new Order(user, "book", 10f);
7166
c.placeOrder(order);
7267
}
7368

74-
void employeeDbSuccessCase() throws Exception {
69+
void employeeDbSuccessCase() {
7570
var ps = new PaymentService(new PaymentDatabase());
7671
var ss = new ShippingService(new ShippingDatabase(), new ItemUnavailableException());
7772
var ms = new MessagingService(new MessagingDatabase());
7873
var eh = new EmployeeHandle(new EmployeeDatabase(), new DatabaseUnavailableException(),
7974
new DatabaseUnavailableException());
8075
var qdb = new QueueDatabase();
81-
var c = new Commander(eh, ps, ss, ms, qdb, numOfRetries, retryDuration,
82-
queueTime, queueTaskTime, paymentTime, messageTime, employeeTime);
76+
var c = new Commander(eh, ps, ss, ms, qdb, retryParams, timeLimits);
8377
var user = new User("Jim", "ABCD");
8478
var order = new Order(user, "book", 10f);
8579
c.placeOrder(order);
@@ -91,9 +85,8 @@ void employeeDbSuccessCase() throws Exception {
9185
* @param args command line args
9286
*/
9387

94-
public static void main(String[] args) throws Exception {
88+
public static void main(String[] args) {
9589
var aefc = new AppEmployeeDbFailCases();
96-
//aefc.employeeDatabaseUnavailableCase();
9790
aefc.employeeDbSuccessCase();
9891
}
99-
}
92+
}

commander/src/main/java/com/iluwatar/commander/AppMessagingFailCases.java

+14-25
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,12 @@
4141
*/
4242

4343
public class AppMessagingFailCases {
44-
private final int numOfRetries = 3;
45-
private final long retryDuration = 30000;
46-
private final long queueTime = 240000; //4 mins
47-
private final long queueTaskTime = 60000; //1 min
48-
private final long paymentTime = 120000; //2 mins
49-
private final long messageTime = 150000; //2.5 mins
50-
private final long employeeTime = 240000; //4 mins
44+
private static final RetryParams retryParams = RetryParams.DEFAULT;
5145

52-
void messagingDatabaseUnavailableCasePaymentSuccess() throws Exception {
46+
private static final TimeLimits timeLimits = TimeLimits.DEFAULT;
47+
48+
49+
void messagingDatabaseUnavailableCasePaymentSuccess() {
5350
//rest is successful
5451
var ps = new PaymentService(new PaymentDatabase());
5552
var ss = new ShippingService(new ShippingDatabase());
@@ -59,14 +56,13 @@ void messagingDatabaseUnavailableCasePaymentSuccess() throws Exception {
5956
new DatabaseUnavailableException());
6057
var eh = new EmployeeHandle(new EmployeeDatabase());
6158
var qdb = new QueueDatabase();
62-
var c = new Commander(eh, ps, ss, ms, qdb, numOfRetries, retryDuration,
63-
queueTime, queueTaskTime, paymentTime, messageTime, employeeTime);
59+
var c = new Commander(eh, ps, ss, ms, qdb, retryParams, timeLimits);
6460
var user = new User("Jim", "ABCD");
6561
var order = new Order(user, "book", 10f);
6662
c.placeOrder(order);
6763
}
6864

69-
void messagingDatabaseUnavailableCasePaymentError() throws Exception {
65+
void messagingDatabaseUnavailableCasePaymentError() {
7066
//rest is successful
7167
var ps = new PaymentService(new PaymentDatabase(), new DatabaseUnavailableException(),
7268
new DatabaseUnavailableException(), new DatabaseUnavailableException(),
@@ -84,14 +80,13 @@ void messagingDatabaseUnavailableCasePaymentError() throws Exception {
8480
new DatabaseUnavailableException());
8581
var eh = new EmployeeHandle(new EmployeeDatabase());
8682
var qdb = new QueueDatabase();
87-
var c = new Commander(eh, ps, ss, ms, qdb, numOfRetries, retryDuration,
88-
queueTime, queueTaskTime, paymentTime, messageTime, employeeTime);
83+
var c = new Commander(eh, ps, ss, ms, qdb, retryParams, timeLimits);
8984
var user = new User("Jim", "ABCD");
9085
var order = new Order(user, "book", 10f);
9186
c.placeOrder(order);
9287
}
9388

94-
void messagingDatabaseUnavailableCasePaymentFailure() throws Exception {
89+
void messagingDatabaseUnavailableCasePaymentFailure() {
9590
//rest is successful
9691
var ps = new PaymentService(new PaymentDatabase(), new DatabaseUnavailableException(),
9792
new DatabaseUnavailableException(), new DatabaseUnavailableException(),
@@ -107,15 +102,13 @@ void messagingDatabaseUnavailableCasePaymentFailure() throws Exception {
107102
new QueueDatabase(new DatabaseUnavailableException(), new DatabaseUnavailableException(),
108103
new DatabaseUnavailableException(), new DatabaseUnavailableException(),
109104
new DatabaseUnavailableException(), new DatabaseUnavailableException());
110-
var c =
111-
new Commander(eh, ps, ss, ms, qdb, numOfRetries, retryDuration, queueTime, queueTaskTime,
112-
paymentTime, messageTime, employeeTime);
105+
var c = new Commander(eh, ps, ss, ms, qdb, retryParams, timeLimits);
113106
var user = new User("Jim", "ABCD");
114107
var order = new Order(user, "book", 10f);
115108
c.placeOrder(order);
116109
}
117110

118-
void messagingSuccessCase() throws Exception {
111+
void messagingSuccessCase() {
119112
//done here
120113
var ps = new PaymentService(new PaymentDatabase(), new DatabaseUnavailableException(),
121114
new DatabaseUnavailableException(), new DatabaseUnavailableException(),
@@ -126,8 +119,7 @@ void messagingSuccessCase() throws Exception {
126119
new DatabaseUnavailableException());
127120
var eh = new EmployeeHandle(new EmployeeDatabase());
128121
var qdb = new QueueDatabase();
129-
var c = new Commander(eh, ps, ss, ms, qdb, numOfRetries, retryDuration,
130-
queueTime, queueTaskTime, paymentTime, messageTime, employeeTime);
122+
var c = new Commander(eh, ps, ss, ms, qdb, retryParams, timeLimits);
131123
var user = new User("Jim", "ABCD");
132124
var order = new Order(user, "book", 10f);
133125
c.placeOrder(order);
@@ -139,11 +131,8 @@ void messagingSuccessCase() throws Exception {
139131
* @param args command line args
140132
*/
141133

142-
public static void main(String[] args) throws Exception {
134+
public static void main(String[] args) {
143135
var amfc = new AppMessagingFailCases();
144-
//amfc.messagingDatabaseUnavailableCasePaymentSuccess();
145-
//amfc.messagingDatabaseUnavailableCasePaymentError();
146-
//amfc.messagingDatabaseUnavailableCasePaymentFailure();
147136
amfc.messagingSuccessCase();
148137
}
149-
}
138+
}

commander/src/main/java/com/iluwatar/commander/AppPaymentFailCases.java

+11-20
Original file line numberDiff line numberDiff line change
@@ -41,29 +41,24 @@
4141
*/
4242

4343
public class AppPaymentFailCases {
44-
private final int numOfRetries = 3;
45-
private final long retryDuration = 30000;
46-
private final long queueTime = 240000; //4 mins
47-
private final long queueTaskTime = 60000; //1 min
48-
private final long paymentTime = 120000; //2 mins
49-
private final long messageTime = 150000; //2.5 mins
50-
private final long employeeTime = 240000; //4 mins
44+
private static final RetryParams retryParams = RetryParams.DEFAULT;
5145

52-
void paymentNotPossibleCase() throws Exception {
46+
private static final TimeLimits timeLimits = TimeLimits.DEFAULT;
47+
48+
void paymentNotPossibleCase() {
5349
var ps = new PaymentService(new PaymentDatabase(), new DatabaseUnavailableException(),
5450
new PaymentDetailsErrorException());
5551
var ss = new ShippingService(new ShippingDatabase());
5652
var ms = new MessagingService(new MessagingDatabase(), new DatabaseUnavailableException());
5753
var eh = new EmployeeHandle(new EmployeeDatabase());
5854
var qdb = new QueueDatabase(new DatabaseUnavailableException());
59-
var c = new Commander(eh, ps, ss, ms, qdb, numOfRetries, retryDuration,
60-
queueTime, queueTaskTime, paymentTime, messageTime, employeeTime);
55+
var c = new Commander(eh, ps, ss, ms, qdb, retryParams, timeLimits);
6156
var user = new User("Jim", "ABCD");
6257
var order = new Order(user, "book", 10f);
6358
c.placeOrder(order);
6459
}
6560

66-
void paymentDatabaseUnavailableCase() throws Exception {
61+
void paymentDatabaseUnavailableCase() {
6762
//rest is successful
6863
var ps = new PaymentService(new PaymentDatabase(), new DatabaseUnavailableException(),
6964
new DatabaseUnavailableException(), new DatabaseUnavailableException(),
@@ -73,14 +68,13 @@ void paymentDatabaseUnavailableCase() throws Exception {
7368
var ms = new MessagingService(new MessagingDatabase());
7469
var eh = new EmployeeHandle(new EmployeeDatabase());
7570
var qdb = new QueueDatabase();
76-
var c = new Commander(eh, ps, ss, ms, qdb, numOfRetries, retryDuration,
77-
queueTime, queueTaskTime, paymentTime, messageTime, employeeTime);
71+
var c = new Commander(eh, ps, ss, ms, qdb, retryParams, timeLimits);
7872
var user = new User("Jim", "ABCD");
7973
var order = new Order(user, "book", 10f);
8074
c.placeOrder(order);
8175
}
8276

83-
void paymentSuccessCase() throws Exception {
77+
void paymentSuccessCase() {
8478
//goes to message after 2 retries maybe - rest is successful for now
8579
var ps = new PaymentService(new PaymentDatabase(), new DatabaseUnavailableException(),
8680
new DatabaseUnavailableException());
@@ -89,8 +83,7 @@ void paymentSuccessCase() throws Exception {
8983
new MessagingService(new MessagingDatabase(), new DatabaseUnavailableException());
9084
var eh = new EmployeeHandle(new EmployeeDatabase());
9185
var qdb = new QueueDatabase(new DatabaseUnavailableException());
92-
var c = new Commander(eh, ps, ss, ms, qdb, numOfRetries, retryDuration,
93-
queueTime, queueTaskTime, paymentTime, messageTime, employeeTime);
86+
var c = new Commander(eh, ps, ss, ms, qdb, retryParams, timeLimits);
9487
var user = new User("Jim", "ABCD");
9588
var order = new Order(user, "book", 10f);
9689
c.placeOrder(order);
@@ -102,10 +95,8 @@ void paymentSuccessCase() throws Exception {
10295
* @param args command line args
10396
*/
10497

105-
public static void main(String[] args) throws Exception {
98+
public static void main(String[] args) {
10699
var apfc = new AppPaymentFailCases();
107-
//apfc.paymentNotPossibleCase();
108-
//apfc.paymentDatabaseUnavailableCase();
109100
apfc.paymentSuccessCase();
110101
}
111-
}
102+
}

commander/src/main/java/com/iluwatar/commander/AppQueueFailCases.java

+14-24
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,12 @@
4141
*/
4242

4343
public class AppQueueFailCases {
44-
private final int numOfRetries = 3;
45-
private final long retryDuration = 30000;
46-
private final long queueTime = 240000; //4 mins
47-
private final long queueTaskTime = 60000; //1 min
48-
private final long paymentTime = 120000; //2 mins
49-
private final long messageTime = 150000; //2.5 mins
50-
private final long employeeTime = 240000; //4 mins
44+
private static final RetryParams retryParams = RetryParams.DEFAULT;
5145

52-
void queuePaymentTaskDatabaseUnavailableCase() throws Exception {
46+
private static final TimeLimits timeLimits = TimeLimits.DEFAULT;
47+
48+
49+
void queuePaymentTaskDatabaseUnavailableCase() {
5350
var ps = new PaymentService(new PaymentDatabase(), new DatabaseUnavailableException(),
5451
new DatabaseUnavailableException(), new DatabaseUnavailableException(),
5552
new DatabaseUnavailableException(), new DatabaseUnavailableException(),
@@ -61,14 +58,13 @@ void queuePaymentTaskDatabaseUnavailableCase() throws Exception {
6158
new QueueDatabase(new DatabaseUnavailableException(), new DatabaseUnavailableException(),
6259
new DatabaseUnavailableException(), new DatabaseUnavailableException(),
6360
new DatabaseUnavailableException(), new DatabaseUnavailableException());
64-
var c = new Commander(eh, ps, ss, ms, qdb, numOfRetries, retryDuration,
65-
queueTime, queueTaskTime, paymentTime, messageTime, employeeTime);
61+
var c = new Commander(eh, ps, ss, ms, qdb, retryParams, timeLimits);
6662
var user = new User("Jim", "ABCD");
6763
var order = new Order(user, "book", 10f);
6864
c.placeOrder(order);
6965
}
7066

71-
void queueMessageTaskDatabaseUnavailableCase() throws Exception {
67+
void queueMessageTaskDatabaseUnavailableCase() {
7268
var ps = new PaymentService(new PaymentDatabase());
7369
var ss = new ShippingService(new ShippingDatabase());
7470
var ms = new MessagingService(new MessagingDatabase(), new DatabaseUnavailableException(),
@@ -80,14 +76,13 @@ void queueMessageTaskDatabaseUnavailableCase() throws Exception {
8076
new QueueDatabase(new DatabaseUnavailableException(), new DatabaseUnavailableException(),
8177
new DatabaseUnavailableException(), new DatabaseUnavailableException(),
8278
new DatabaseUnavailableException(), new DatabaseUnavailableException());
83-
var c = new Commander(eh, ps, ss, ms, qdb, numOfRetries, retryDuration,
84-
queueTime, queueTaskTime, paymentTime, messageTime, employeeTime);
79+
var c = new Commander(eh, ps, ss, ms, qdb, retryParams, timeLimits);
8580
var user = new User("Jim", "ABCD");
8681
var order = new Order(user, "book", 10f);
8782
c.placeOrder(order);
8883
}
8984

90-
void queueEmployeeDbTaskDatabaseUnavailableCase() throws Exception {
85+
void queueEmployeeDbTaskDatabaseUnavailableCase() {
9186
var ps = new PaymentService(new PaymentDatabase());
9287
var ss = new ShippingService(new ShippingDatabase(), new ItemUnavailableException());
9388
var ms = new MessagingService(new MessagingDatabase());
@@ -105,14 +100,13 @@ void queueEmployeeDbTaskDatabaseUnavailableCase() throws Exception {
105100
new DatabaseUnavailableException(), new DatabaseUnavailableException(),
106101
new DatabaseUnavailableException(), new DatabaseUnavailableException(),
107102
new DatabaseUnavailableException(), new DatabaseUnavailableException());
108-
var c = new Commander(eh, ps, ss, ms, qdb, numOfRetries, retryDuration,
109-
queueTime, queueTaskTime, paymentTime, messageTime, employeeTime);
103+
var c = new Commander(eh, ps, ss, ms, qdb, retryParams, timeLimits);
110104
var user = new User("Jim", "ABCD");
111105
var order = new Order(user, "book", 10f);
112106
c.placeOrder(order);
113107
}
114108

115-
void queueSuccessCase() throws Exception {
109+
void queueSuccessCase() {
116110
var ps = new PaymentService(new PaymentDatabase(), new DatabaseUnavailableException(),
117111
new DatabaseUnavailableException(), new DatabaseUnavailableException(),
118112
new DatabaseUnavailableException(), new DatabaseUnavailableException(),
@@ -124,8 +118,7 @@ void queueSuccessCase() throws Exception {
124118
var eh = new EmployeeHandle(new EmployeeDatabase());
125119
var qdb =
126120
new QueueDatabase(new DatabaseUnavailableException(), new DatabaseUnavailableException());
127-
var c = new Commander(eh, ps, ss, ms, qdb, numOfRetries, retryDuration,
128-
queueTime, queueTaskTime, paymentTime, messageTime, employeeTime);
121+
var c = new Commander(eh, ps, ss, ms, qdb, retryParams, timeLimits);
129122
var user = new User("Jim", "ABCD");
130123
var order = new Order(user, "book", 10f);
131124
c.placeOrder(order);
@@ -137,11 +130,8 @@ void queueSuccessCase() throws Exception {
137130
* @param args command line args
138131
*/
139132

140-
public static void main(String[] args) throws Exception {
133+
public static void main(String[] args) {
141134
var aqfc = new AppQueueFailCases();
142-
//aqfc.queuePaymentTaskDatabaseUnavailableCase();
143-
//aqfc.queueMessageTaskDatabaseUnavailableCase();
144-
//aqfc.queueEmployeeDbTaskDatabaseUnavailableCase();
145135
aqfc.queueSuccessCase();
146136
}
147-
}
137+
}

0 commit comments

Comments
 (0)