View Javadoc
1   package org.davidmoten.kool.internal.operators.maybe;
2   
3   import java.util.Optional;
4   
5   import org.davidmoten.kool.Maybe;
6   import org.davidmoten.kool.function.Function;
7   
8   import com.github.davidmoten.guavamini.Preconditions;
9   
10  public final class MaybeFlatMapMaybe<T, R> implements Maybe<R> {
11  
12      private final Maybe<T> maybe;
13      private final Function<? super T, ? extends Maybe<? extends R>> mapper;
14  
15      public MaybeFlatMapMaybe(Maybe<T> maybe, Function<? super T, ? extends Maybe<? extends R>> mapper) {
16          this.maybe = maybe;
17          this.mapper = mapper;
18      }
19  
20      @SuppressWarnings("unchecked")
21      @Override
22      public Optional<R> get() {
23          Optional<T> v = maybe.get();
24          if (v.isPresent()) {
25              return (Optional<R>) Preconditions.checkNotNull(mapper.applyUnchecked(v.get()), "mapper cannot return null").get();
26          } else {
27              return Optional.empty();
28          }
29      }
30  
31  }