JAMES-2219 Introduce OptionalUtils::or

Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/9c14a96c
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9c14a96c
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9c14a96c

Branch: refs/heads/master
Commit: 9c14a96c478ed453c8faa23c867971975c89994a
Parents: 6a9f1f9
Author: benwa <[email protected]>
Authored: Thu Nov 16 10:18:05 2017 +0700
Committer: Antoine Duprat <[email protected]>
Committed: Thu Nov 16 14:19:17 2017 +0100

----------------------------------------------------------------------
 .../org/apache/james/util/OptionalUtils.java    |  6 ++++
 .../apache/james/util/OptionalUtilsTest.java    | 36 ++++++++++++++++++++
 2 files changed, 42 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/9c14a96c/server/container/util-java8/src/main/java/org/apache/james/util/OptionalUtils.java
----------------------------------------------------------------------
diff --git 
a/server/container/util-java8/src/main/java/org/apache/james/util/OptionalUtils.java
 
b/server/container/util-java8/src/main/java/org/apache/james/util/OptionalUtils.java
index 000feb8..fc20117 100644
--- 
a/server/container/util-java8/src/main/java/org/apache/james/util/OptionalUtils.java
+++ 
b/server/container/util-java8/src/main/java/org/apache/james/util/OptionalUtils.java
@@ -39,4 +39,10 @@ public class OptionalUtils {
         return optional.map(Stream::of)
             .orElse(Stream.of());
     }
+
+    public static <T> Optional<T> or(Optional<T> optional1, Optional<T> 
optional2) {
+        return optional1.map(Optional::of)
+            .filter(Optional::isPresent)
+            .orElse(optional2);
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/9c14a96c/server/container/util-java8/src/test/java/org/apache/james/util/OptionalUtilsTest.java
----------------------------------------------------------------------
diff --git 
a/server/container/util-java8/src/test/java/org/apache/james/util/OptionalUtilsTest.java
 
b/server/container/util-java8/src/test/java/org/apache/james/util/OptionalUtilsTest.java
index 80a8684..4af7b23 100644
--- 
a/server/container/util-java8/src/test/java/org/apache/james/util/OptionalUtilsTest.java
+++ 
b/server/container/util-java8/src/test/java/org/apache/james/util/OptionalUtilsTest.java
@@ -83,4 +83,40 @@ public class OptionalUtilsTest {
                 .collect(Guavate.toImmutableList()))
             .containsExactly(value);
     }
+
+    @Test
+    public void orShouldReturnEmptyWhenBothEmpty() {
+        assertThat(
+            OptionalUtils.or(
+                Optional.empty(),
+                Optional.empty()))
+            .isEmpty();
+    }
+
+    @Test
+    public void orShouldReturnFirstValueWhenOnlyFirstValue() {
+        assertThat(
+            OptionalUtils.or(
+                Optional.of(18),
+                Optional.empty()))
+            .contains(18);
+    }
+
+    @Test
+    public void orShouldReturnSecondValueWhenOnlySecondValue() {
+        assertThat(
+            OptionalUtils.or(
+                Optional.empty(),
+                Optional.of(18)))
+            .contains(18);
+    }
+
+    @Test
+    public void orShouldReturnFirstValueWhenBothValues() {
+        assertThat(
+            OptionalUtils.or(
+                Optional.of(1),
+                Optional.of(2)))
+            .contains(1);
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to