Skip to content

Commit b03f322

Browse files
[BAEL-8927] Guide to Objects.requireNonNull() in Java (#18099)
* [BAEL-8927] Guide to Objects.requireNonNull() in Java - add JUnit test * [BAEL-8927] Guide to Objects.requireNonNull() in Java - replace sout with logger * [BAEL-8927] Guide to Objects.requireNonNull() in Java - move to a module with the latest Java version
1 parent 5258668 commit b03f322

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package com.baeldung.requirenonnull;
2+
3+
import java.time.Instant;
4+
import java.util.Objects;
5+
import java.util.Random;
6+
import java.util.UUID;
7+
8+
import org.junit.jupiter.api.Assertions;
9+
import org.junit.jupiter.api.Test;
10+
import org.slf4j.Logger;
11+
import org.slf4j.LoggerFactory;
12+
13+
class RequireNonNullUnitTest {
14+
15+
private static final Logger logger = LoggerFactory.getLogger(RequireNonNullUnitTest.class);
16+
17+
void greet(String name) {
18+
Objects.requireNonNull(name, "Name cannot be null");
19+
logger.info("Hello, {}!", name);
20+
}
21+
22+
@Test
23+
void givenObject_whenGreet_thenNoException() {
24+
Assertions.assertDoesNotThrow(() -> greet("Baeldung"));
25+
}
26+
27+
@Test
28+
void givenNull_whenGreet_thenException() {
29+
Assertions.assertThrows(NullPointerException.class, () -> greet(null));
30+
}
31+
32+
static class User {
33+
34+
private final String username;
35+
private final String password;
36+
37+
public User(String username, String password) {
38+
this.username = Objects.requireNonNull(username, "Username is null!");
39+
this.password = Objects.requireNonNull(password, "Password is null!");
40+
}
41+
42+
public String getUsername() {
43+
return username;
44+
}
45+
46+
public String getPassword() {
47+
return password;
48+
}
49+
}
50+
51+
@Test
52+
void givenValidInput_whenNewUser_thenNoException() {
53+
Assertions.assertDoesNotThrow(() -> new User("Baeldung", "Secret"));
54+
}
55+
56+
@Test
57+
void givenNull_whenNewUser_thenException() {
58+
Assertions.assertThrows(NullPointerException.class, () -> new User(null, "Secret"));
59+
Assertions.assertThrows(NullPointerException.class, () -> new User("Baeldung", null));
60+
}
61+
62+
void processOrder(UUID orderId) {
63+
Objects.requireNonNull(orderId, () -> {
64+
String message = "Order ID cannot be null! Current timestamp: " + getProcessTimestamp();
65+
message = message.concat("Total number of invalid orders: " + getOrderAmount());
66+
message = message.concat("Please provide a valid order.");
67+
return message;
68+
});
69+
logger.info("Processing order with id: {}", orderId);
70+
}
71+
72+
private static int getOrderAmount() {
73+
return new Random().nextInt(100_000);
74+
}
75+
76+
private static Instant getProcessTimestamp() {
77+
return Instant.now();
78+
}
79+
80+
@Test
81+
void givenObject_whenProcessOrder_thenNoException() {
82+
Assertions.assertDoesNotThrow(() -> processOrder(UUID.randomUUID()));
83+
}
84+
85+
@Test
86+
void givenNull_whenProcessOrder_thenException() {
87+
Assertions.assertThrows(NullPointerException.class, () -> processOrder(null));
88+
}
89+
}

0 commit comments

Comments
 (0)