Skip to content

Commit 3aecb05

Browse files
committed
Added Optional.toJavaOptional(), changed Optional.toString().
1 parent 5a91f29 commit 3aecb05

File tree

4 files changed

+45
-40
lines changed

4 files changed

+45
-40
lines changed

src/main/java/com/github/underscore/Optional.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,18 @@ public static <T> Optional<T> of(final T arg) {
2525
}
2626

2727
public static <T> Optional<T> fromNullable(final T nullableReference) {
28-
return nullableReference == null ? Optional.<T>absent()
28+
return nullableReference == null ? Optional.<T>empty()
2929
: new Optional<>(nullableReference);
3030
}
3131

3232
@SuppressWarnings("unchecked")
33-
public static <T> Optional<T> absent() {
33+
public static <T> Optional<T> empty() {
3434
return (Optional<T>) EMPTY;
3535
}
3636

3737
public T get() {
3838
if (absent) {
39-
throw new IllegalStateException("Optional.get() cannot be called on an absent value");
39+
throw new IllegalStateException("Optional.get() cannot be called on an empty value");
4040
}
4141
return arg;
4242
}
@@ -67,7 +67,7 @@ public boolean isPresent() {
6767
public Optional<T> filter(Predicate<? super T> predicate) {
6868
U.checkNotNull(predicate);
6969
if (isPresent()) {
70-
return predicate.test(arg) ? this : Optional.<T>absent();
70+
return predicate.test(arg) ? this : Optional.<T>empty();
7171
} else {
7272
return this;
7373
}
@@ -78,7 +78,7 @@ public <F> Optional<F> map(Function<? super T, F> mapper) {
7878
if (isPresent()) {
7979
return Optional.fromNullable(mapper.apply(arg));
8080
} else {
81-
return absent();
81+
return empty();
8282
}
8383
}
8484

@@ -90,6 +90,10 @@ public <X extends Throwable> T orThrow(Supplier<? extends X> exceptionFunction)
9090
}
9191
}
9292

93+
public java.util.Optional<T> toJavaOptional() {
94+
return java.util.Optional.ofNullable(arg);
95+
}
96+
9397
@Override
9498
public boolean equals(final Object o) {
9599
if (this == o) {
@@ -113,6 +117,6 @@ public int hashCode() {
113117

114118
@Override
115119
public String toString() {
116-
return absent ? "Optional.absent()" : "Optional.of(" + arg + ")";
120+
return absent ? "Optional.empty" : "Optional[" + arg + "]";
117121
}
118122
}

src/main/java/com/github/underscore/U.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public class U<T> {
9595

9696
public U(final Iterable<T> iterable) {
9797
this.iterable = iterable;
98-
this.string = Optional.absent();
98+
this.string = Optional.empty();
9999
}
100100

101101
public U(final String string) {
@@ -430,7 +430,7 @@ public static <T> Optional<T> reduce(final Iterable<T> iterable, final BinaryOpe
430430
accum = element;
431431
}
432432
}
433-
return foundAny ? Optional.of(accum) : Optional.<T>absent();
433+
return foundAny ? Optional.of(accum) : Optional.<T>empty();
434434
}
435435

436436
public static <E> E reduce(final int[] array, final BiFunction<E, ? super Integer, E> func, final E zeroElem) {
@@ -493,7 +493,7 @@ public static <E> Optional<E> find(final Iterable<E> iterable, final Predicate<E
493493
return Optional.of(element);
494494
}
495495
}
496-
return Optional.absent();
496+
return Optional.empty();
497497
}
498498

499499
public static <E> Optional<E> detect(final Iterable<E> iterable, final Predicate<E> pred) {
@@ -3135,7 +3135,7 @@ public Optional<String> call(final String funcName) {
31353135
if (string.isPresent() && FUNCTIONS.containsKey(funcName)) {
31363136
return Optional.of(FUNCTIONS.get(funcName).apply(string.get()));
31373137
}
3138-
return Optional.absent();
3138+
return Optional.empty();
31393139
}
31403140

31413141
public static <T extends Comparable<T>> List<T> sort(final Iterable<T> iterable) {

src/test/java/com/github/underscore/CollectionsTest.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -426,13 +426,13 @@ public void foldr() {
426426
public void find() {
427427
final Optional<Integer> result = U.find(asList(1, 2, 3, 4, 5, 6),
428428
item -> item % 2 == 0);
429-
assertEquals("Optional.of(2)", result.toString());
429+
assertEquals("Optional[2]", result.toString());
430430
final Optional<Integer> resultChain = U.chain(asList(1, 2, 3, 4, 5, 6)).find(
431431
item -> item % 2 == 0).item();
432-
assertEquals("Optional.of(2)", resultChain.toString());
432+
assertEquals("Optional[2]", resultChain.toString());
433433
final Optional<Integer> resultChain2 = U.chain(asList(1, 2, 3, 4, 5, 6)).find(
434434
item -> item > 6).item();
435-
assertEquals("Optional.absent()", resultChain2.toString());
435+
assertEquals("Optional.empty", resultChain2.toString());
436436
}
437437

438438
/*
@@ -443,16 +443,16 @@ public void find() {
443443
public void findLast() {
444444
final Optional<Integer> result = U.findLast(asList(1, 2, 3, 4, 5, 6),
445445
item -> item % 2 == 0);
446-
assertEquals("Optional.of(6)", result.toString());
446+
assertEquals("Optional[6]", result.toString());
447447
final Optional<Integer> result2 = U.findLast(asList(1, 2, 3, 4, 5, 6),
448448
item -> item > 6);
449-
assertEquals("Optional.absent()", result2.toString());
449+
assertEquals("Optional.empty", result2.toString());
450450
final Optional<Integer> resultChain = U.chain(asList(1, 2, 3, 4, 5, 6)).findLast(
451451
item -> item % 2 == 0).item();
452-
assertEquals("Optional.of(6)", resultChain.toString());
452+
assertEquals("Optional[6]", resultChain.toString());
453453
final Optional<Integer> resultChain2 = U.chain(asList(1, 2, 3, 4, 5, 6)).findLast(
454454
item -> item > 6).item();
455-
assertEquals("Optional.absent()", resultChain2.toString());
455+
assertEquals("Optional.empty", resultChain2.toString());
456456
}
457457

458458
/*
@@ -463,7 +463,7 @@ public void findLast() {
463463
public void detect() {
464464
final Optional<Integer> result = U.detect(asList(1, 2, 3, 4, 5, 6),
465465
item -> item % 2 == 0);
466-
assertEquals("Optional.of(2)", result.toString());
466+
assertEquals("Optional[2]", result.toString());
467467
}
468468

469469
/*
@@ -1053,7 +1053,7 @@ public String toString() {
10531053
U.findWhere(listOfPlays2, asList(
10541054
Tuple.<String, Object>create("getAuthor", "Shakespeare"),
10551055
Tuple.<String, Object>create("year", 1611))).get().toString());
1056-
assertEquals(Optional.<Book2>absent(),
1056+
assertEquals(Optional.<Book2>empty(),
10571057
U.findWhere(listOfPlays2, asList(
10581058
Tuple.<String, Object>create("getAuthor", "Shakespeare2"),
10591059
Tuple.<String, Object>create("year", 1611))));
@@ -1239,17 +1239,17 @@ public void groupByWithSumming() {
12391239
Math::floor,
12401240
Double::sum
12411241
);
1242-
assertEquals("{1.0=Optional.of(1.3), 2.0=Optional.of(4.5)}", result.toString());
1242+
assertEquals("{1.0=Optional[1.3], 2.0=Optional[4.5]}", result.toString());
12431243
final Map<Double, Optional<Double>> resultObj =
12441244
new U(asList(1.3, 2.1, 2.4)).groupBy(
12451245
(Function<Double, Double>) Math::floor,
12461246
(BinaryOperator<Double>) Double::sum);
1247-
assertEquals("{1.0=Optional.of(1.3), 2.0=Optional.of(4.5)}", resultObj.toString());
1247+
assertEquals("{1.0=Optional[1.3], 2.0=Optional[4.5]}", resultObj.toString());
12481248
final Map<Double, Optional<Double>> resultChain =
12491249
U.chain(asList(1.3, 2.1, 2.4)).groupBy(
12501250
Math::floor,
12511251
Double::sum).item();
1252-
assertEquals("{1.0=Optional.of(1.3), 2.0=Optional.of(4.5)}", resultChain.toString());
1252+
assertEquals("{1.0=Optional[1.3], 2.0=Optional[4.5]}", resultChain.toString());
12531253
}
12541254

12551255
/*

src/test/java/com/github/underscore/UnderscoreTest.java

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ public void remove() {
349349
};
350350
final Optional<Integer> result = U.findLast(iterable,
351351
item -> item % 2 == 0);
352-
assertEquals("Optional.of(6)", result.toString());
352+
assertEquals("Optional[6]", result.toString());
353353
}
354354

355355
@Test
@@ -389,46 +389,47 @@ public void remove() {
389389
@Test
390390
@SuppressWarnings("unlikely-arg-type")
391391
public void optional() {
392-
assertTrue(Optional.absent().equals(Optional.absent()));
392+
assertTrue(Optional.empty().equals(Optional.empty()));
393393
assertTrue(Optional.of(1).equals(Optional.of(1)));
394394
Optional<Integer> one = Optional.of(1);
395395
assertTrue(one.equals(one));
396396
assertFalse(Optional.of(1L).equals(Optional.of(1)));
397397
assertFalse(Optional.of(1L).equals(null));
398398
assertTrue(Optional.of(null).equals(Optional.of(null)));
399-
assertFalse(Optional.absent().equals(Optional.of(1)));
399+
assertFalse(Optional.empty().equals(Optional.of(1)));
400400
assertFalse(Optional.of(null).equals(Optional.of(1)));
401401
assertFalse(Optional.of(1).equals(Optional.of(null)));
402-
assertFalse(Optional.of(1).equals(Optional.absent()));
402+
assertFalse(Optional.of(1).equals(Optional.empty()));
403403
assertFalse(Optional.of(1).equals(Optional.of(2)));
404404
assertFalse(Optional.of(1).equals("test"));
405-
assertEquals(1, Optional.absent().hashCode());
405+
assertEquals(1, Optional.empty().hashCode());
406406
assertEquals(Optional.of("123").hashCode(), Optional.of("123").hashCode());
407-
assertEquals("Optional.absent()", Optional.absent().toString());
408-
assertEquals("Optional.of(1)", Optional.of(1).toString());
409-
assertEquals("Optional.absent()", Optional.fromNullable(null).toString());
410-
assertEquals("Optional.of(1)", Optional.fromNullable(1).toString());
411-
assertEquals("1", Optional.absent().or(1).toString());
407+
assertEquals("Optional.empty", Optional.empty().toString());
408+
assertEquals("Optional[1]", Optional.of(1).toString());
409+
assertEquals("Optional.empty", Optional.fromNullable(null).toString());
410+
assertEquals("Optional[1]", Optional.fromNullable(1).toString());
411+
assertEquals("1", Optional.empty().or(1).toString());
412412
assertEquals("1", Optional.of(1).or(2).toString());
413-
assertEquals(null, Optional.absent().orNull());
413+
assertEquals(null, Optional.empty().orNull());
414414
assertEquals("1", Optional.of(1).orNull().toString());
415-
assertFalse(Optional.<Integer>absent().map(arg -> "" + arg).isPresent());
416-
assertTrue(Optional.<Integer>absent().map(arg -> "" + arg).isEmpty());
415+
assertFalse(Optional.<Integer>empty().map(arg -> "" + arg).isPresent());
416+
assertTrue(Optional.<Integer>empty().map(arg -> "" + arg).isEmpty());
417417
assertEquals("1", Optional.of(1).map(arg -> "" + arg).get().toString());
418418
try {
419-
Optional.absent().get();
419+
Optional.empty().get();
420420
fail("IllegalStateException expected");
421421
} catch (IllegalStateException ex) {
422422
}
423-
assertFalse(Optional.<Integer>absent().filter(arg -> true).isPresent());
424-
assertTrue(Optional.<Integer>absent().filter(arg -> false).isEmpty());
423+
assertFalse(Optional.<Integer>empty().filter(arg -> true).isPresent());
424+
assertTrue(Optional.<Integer>empty().filter(arg -> false).isEmpty());
425425
assertEquals("1", Optional.of(1).filter(arg -> true).get().toString());
426-
assertTrue("1", Optional.of(1).filter(arg -> false).isEmpty());
426+
assertTrue(Optional.of(1).filter(arg -> false).isEmpty());
427+
assertEquals("Optional[1]", Optional.of(1).toJavaOptional().toString());
427428
}
428429

429430
@Test(expected = Exception.class)
430431
public void optionalOrThrow() throws RuntimeException {
431-
Optional.absent().orThrow(RuntimeException::new);
432+
Optional.empty().orThrow(RuntimeException::new);
432433
}
433434

434435
@Test

0 commit comments

Comments
 (0)