Skip to content

Commit ca9f1bb

Browse files
committed
optional orelse optional ex
1 parent 146c1bb commit ca9f1bb

3 files changed

Lines changed: 83 additions & 0 deletions

File tree

core-java-9/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@
4747
<version>${awaitility.version}</version>
4848
<scope>test</scope>
4949
</dependency>
50+
<dependency>
51+
<groupId>com.google.guava</groupId>
52+
<artifactId>guava</artifactId>
53+
<version>${guava.version}</version>
54+
</dependency>
5055
</dependencies>
5156

5257
<build>
@@ -89,6 +94,7 @@
8994
<awaitility.version>1.7.0</awaitility.version>
9095
<maven.compiler.source>1.9</maven.compiler.source>
9196
<maven.compiler.target>1.9</maven.compiler.target>
97+
<guava.version>25.1-jre</guava.version>
9298
</properties>
9399

94100
</project>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.baeldung.optionals;
2+
3+
import java.util.Optional;
4+
5+
public class Optionals {
6+
7+
public static <T> Optional<T> or(Optional<T> optional, Optional<T> fallback) {
8+
return optional.isPresent() ? optional : fallback;
9+
}
10+
11+
public static Optional<String> getName(Optional<String> name) {
12+
return name.or(() -> getCustomMessage());
13+
}
14+
15+
public static com.google.common.base.Optional<String> getOptionalGuavaName(com.google.common.base.Optional<String> name) {
16+
return name.or(getCustomMessageGuava());
17+
}
18+
19+
private static Optional<String> getCustomMessage() {
20+
return Optional.of("Name not provided");
21+
}
22+
23+
private static com.google.common.base.Optional<String> getCustomMessageGuava() {
24+
return com.google.common.base.Optional.of("Name not provided");
25+
}
26+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.baeldung.optionals;
2+
3+
import static org.junit.Assert.assertEquals;
4+
5+
import java.util.Optional;
6+
7+
import org.junit.Test;
8+
9+
public class OptionalsTest {
10+
11+
@Test
12+
public void givenOptional_whenEmptyValue_thenCustomMessage() {
13+
assertEquals(Optional.of("Name not provided"), Optionals.getName(Optional.ofNullable(null)));
14+
}
15+
16+
@Test
17+
public void givenOptional_whenValue_thenOptional() {
18+
String name = "Filan Fisteku";
19+
Optional<String> optionalString = Optional.ofNullable(name);
20+
assertEquals(optionalString, Optionals.getName(optionalString));
21+
}
22+
23+
@Test
24+
public void givenOptional_whenValue_thenOptionalGeneralMethod() {
25+
String name = "Filan Fisteku";
26+
String missingOptional = "Name not provided";
27+
Optional<String> optionalString = Optional.ofNullable(name);
28+
Optional<String> fallbackOptionalString = Optional.ofNullable(missingOptional);
29+
assertEquals(optionalString, Optionals.or(optionalString, fallbackOptionalString));
30+
}
31+
32+
@Test
33+
public void givenEmptyOptional_whenValue_thenOptionalGeneralMethod() {
34+
String missingOptional = "Name not provided";
35+
Optional<String> optionalString = Optional.empty();
36+
Optional<String> fallbackOptionalString = Optional.ofNullable(missingOptional);
37+
assertEquals(fallbackOptionalString, Optionals.or(optionalString, fallbackOptionalString));
38+
}
39+
40+
@Test
41+
public void givenGuavaOptional_whenInvoke_thenOptional() {
42+
String name = "Filan Fisteku";
43+
com.google.common.base.Optional<String> stringOptional = com.google.common.base.Optional.of(name);
44+
assertEquals(stringOptional, Optionals.getOptionalGuavaName(stringOptional));
45+
}
46+
47+
@Test
48+
public void givenGuavaOptional_whenNull_thenDefaultText() {
49+
assertEquals(com.google.common.base.Optional.of("Name not provided"), Optionals.getOptionalGuavaName(com.google.common.base.Optional.fromNullable(null)));
50+
}
51+
}

0 commit comments

Comments
 (0)