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]
