Skip to content

Commit 2425727

Browse files
committed
nonEmpty(nullCollection) allowed
1 parent e5bfe9b commit 2425727

2 files changed

Lines changed: 10 additions & 1 deletion

File tree

mug/src/main/java/com/google/mu/util/Optionals.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public static <T> Set<T> asSet(Optional<? extends T> optional) {
102102
* @since 8.3
103103
*/
104104
public static <C extends Collection<?>> Optional<C> nonEmpty(C collection) {
105-
return collection.isEmpty() ? Optional.empty() : Optional.of(collection);
105+
return optional(collection != null && !collection.isEmpty(), collection);
106106
}
107107

108108
/**

mug/src/test/java/com/google/mu/util/OptionalsTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import static org.mockito.Mockito.never;
1111
import static org.mockito.Mockito.verify;
1212

13+
import java.util.Collection;
14+
import java.util.List;
1315
import java.util.Optional;
1416
import java.util.OptionalDouble;
1517
import java.util.OptionalInt;
@@ -74,6 +76,11 @@ public class OptionalsTest {
7476
assertThat(Optionals.asSet(Optional.of(123))).containsExactly(123);
7577
}
7678

79+
@Test public void nonEmpty_nullCollection() {
80+
List<?> list = null;
81+
assertThat(Optionals.nonEmpty(list)).isEmpty();
82+
}
83+
7784
@Test public void nonEmpty_emptyCollection() {
7885
assertThat(Optionals.nonEmpty(asList())).isEmpty();
7986
}
@@ -269,13 +276,15 @@ public void inOrder_bothStepsArePresent() {
269276
.ignore(Optionals.class.getMethod("optional", boolean.class, Object.class))
270277
.ignore(Optionals.class.getMethod("both", Optional.class, Optional.class))
271278
.ignore(Optionals.class.getMethod("nonEmpty", CharSequence.class))
279+
.ignore(Optionals.class.getMethod("nonEmpty", Collection.class))
272280
.testAllPublicStaticMethods(Optionals.class);
273281
new NullPointerTester()
274282
.setDefault(Optional.class, Optional.of("foo"))
275283
.setDefault(OptionalInt.class, OptionalInt.of(123))
276284
.setDefault(OptionalLong.class, OptionalLong.of(123))
277285
.setDefault(OptionalDouble.class, OptionalDouble.of(123))
278286
.ignore(Optionals.class.getMethod("nonEmpty", CharSequence.class))
287+
.ignore(Optionals.class.getMethod("nonEmpty", Collection.class))
279288
.setDefault(BiOptional.class, BiOptional.of(1, "one"))
280289
.ignore(Optionals.class.getMethod("optional", boolean.class, Object.class))
281290
.testAllPublicStaticMethods(Optionals.class);

0 commit comments

Comments
 (0)