Skip to content

Fallback

Eko Kurniawan Khannedy edited this page Jan 30, 2018 · 1 revision

When you create Command, you can also override the fallback method. Fallback method will executed if your execute() method return error.

@Slf4j
@Component
public class UpperCommandImpl implements UpperCommand {

  @Override
  public Single<String> execute(UpperCommandRequest request) {
    return Single.create(singleSubscriber -> {
      try {
        singleSubscriber.onSuccess(request.getName().toUpperCase());
      } catch (Throwable ex) {
        singleSubscriber.onError(ex);
      }
    });
  }

  @Override
  public Single<String> fallback(Throwable throwable, UpperCommandRequest request) {
    log.warn("Error while invoking upper command", throwable);
    return Single.just("FALLBACK");
  }
}
  @Test
  public void testSuccess() {
    request = UpperCommandRequest.builder().name("Eko Kurniawan Khannedy").build();
    String response = commandExecutor.execute(UpperCommand.class, request).toBlocking().value();

    assertEquals("EKO KURNIAWAN KHANNEDY", response);
  }

  @Test
  public void testFallback() {
    request = UpperCommandRequest.builder().build();
    String response = commandExecutor.execute(UpperCommand.class, request).toBlocking().value();

    assertEquals("FALLBACK", response);
  }
Clone this wiki locally