1 package io.atlassian.fugue.extensions.step;
2
3 import io.atlassian.fugue.Try;
4 import io.atlassian.fugue.extensions.functions.Function6;
5 import io.atlassian.fugue.extensions.functions.Predicate6;
6
7 import java.util.function.Supplier;
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 public final class TryStep6<A, B, C, D, E, F> {
26 private final Try<A> try1;
27 private final Try<B> try2;
28 private final Try<C> try3;
29 private final Try<D> try4;
30 private final Try<E> try5;
31 private final Try<F> try6;
32
33 TryStep6(Try<A> try1, Try<B> try2, Try<C> try3, Try<D> try4, Try<E> try5, Try<F> try6) {
34 this.try1 = try1;
35 this.try2 = try2;
36 this.try3 = try3;
37 this.try4 = try4;
38 this.try5 = try5;
39 this.try6 = try6;
40 }
41
42
43
44
45
46
47
48
49
50
51
52
53
54 public TryStep6<A, B, C, D, E, F> filter(Predicate6<? super A, ? super B, ? super C, ? super D, ? super E, ? super F> predicate,
55 Supplier<Exception> unsatisfiedSupplier) {
56 Try<F> filterTry6 = try1.flatMap(value1 -> try2.flatMap(value2 -> try3.flatMap(value3 -> try4.flatMap(value4 -> try5.flatMap(value5 -> try6
57 .filterOrElse(value6 -> predicate.test(value1, value2, value3, value4, value5, value6), unsatisfiedSupplier))))));
58 return new TryStep6<>(try1, try2, try3, try4, try5, filterTry6);
59 }
60
61
62
63
64
65
66
67
68
69 public <Z> Try<Z> yield(Function6<? super A, ? super B, ? super C, ? super D, ? super E, ? super F, Z> functor) {
70 return try1.flatMap(value1 -> try2.flatMap(value2 -> try3.flatMap(value3 -> try4.flatMap(value4 -> try5.flatMap(value5 -> try6
71 .map(value6 -> functor.apply(value1, value2, value3, value4, value5, value6)))))));
72 }
73 }