View Javadoc
1   package com.github.davidmoten.aws.lw.client.internal;
2   
3   import java.util.Optional;
4   import java.util.function.Function;
5   import java.util.function.Predicate;
6   
7   import com.github.davidmoten.aws.lw.client.ExceptionFactory;
8   import com.github.davidmoten.aws.lw.client.Response;
9   
10  public class ExceptionFactoryExtended implements ExceptionFactory {
11  
12      private final ExceptionFactory factory;
13      private final Predicate<? super Response> predicate;
14      private final Function<? super Response, ? extends RuntimeException> function;
15  
16      public ExceptionFactoryExtended(ExceptionFactory factory, Predicate<? super Response> predicate, Function<? super Response, ? extends RuntimeException> function) {
17          this.factory = factory;
18          this.predicate = predicate;
19          this.function = function;
20      }
21  
22      @Override
23      public Optional<? extends RuntimeException> create(Response response) {
24          if (predicate.test(response)) {
25              return Optional.of(function.apply(response));
26          } else {
27              return factory.create(response);
28          }
29      }
30  }