package io.vertx.groovy.circuitbreaker;
public class CircuitBreaker_GroovyExtension {
  public static <T>io.vertx.core.Future<java.lang.Object> executeWithFallback(io.vertx.circuitbreaker.CircuitBreaker j_receiver, io.vertx.core.Handler<io.vertx.core.Promise<java.lang.Object>> command, java.util.function.Function<java.lang.Throwable, java.lang.Object> fallback) {
    return io.vertx.core.impl.ConversionHelper.fromObject(j_receiver.executeWithFallback(command != null ? event -> command.handle(io.vertx.core.impl.ConversionHelper.fromObject(event)) : null,
      fallback != null ? new java.util.function.Function<java.lang.Throwable, java.lang.Object>() {
      public java.lang.Object apply(java.lang.Throwable t) {
        java.lang.Throwable o = io.vertx.core.impl.ConversionHelper.fromObject(t);
        java.lang.Object p = fallback.apply(o);
        return io.vertx.core.impl.ConversionHelper.toObject(p);
      }
    } : null));
  }
  public static <T>void executeCommandWithFallback(io.vertx.circuitbreaker.CircuitBreaker j_receiver, io.vertx.core.Handler<io.vertx.core.Promise<java.lang.Object>> command, java.util.function.Function<java.lang.Throwable, java.lang.Object> fallback, io.vertx.core.Handler<io.vertx.core.AsyncResult<java.lang.Object>> handler) {
    j_receiver.executeCommandWithFallback(command != null ? event -> command.handle(io.vertx.core.impl.ConversionHelper.fromObject(event)) : null,
      fallback != null ? new java.util.function.Function<java.lang.Throwable, java.lang.Object>() {
      public java.lang.Object apply(java.lang.Throwable t) {
        java.lang.Throwable o = io.vertx.core.impl.ConversionHelper.fromObject(t);
        java.lang.Object p = fallback.apply(o);
        return io.vertx.core.impl.ConversionHelper.toObject(p);
      }
    } : null,
      handler != null ? new io.vertx.core.Handler<io.vertx.core.AsyncResult<java.lang.Object>>() {
      public void handle(io.vertx.core.AsyncResult<java.lang.Object> ar) {
        handler.handle(ar.map(event -> io.vertx.core.impl.ConversionHelper.fromObject(event)));
      }
    } : null);
  }
  public static <T>void executeCommand(io.vertx.circuitbreaker.CircuitBreaker j_receiver, io.vertx.core.Handler<io.vertx.core.Promise<java.lang.Object>> command, io.vertx.core.Handler<io.vertx.core.AsyncResult<java.lang.Object>> handler) {
    j_receiver.executeCommand(command != null ? event -> command.handle(io.vertx.core.impl.ConversionHelper.fromObject(event)) : null,
      handler != null ? new io.vertx.core.Handler<io.vertx.core.AsyncResult<java.lang.Object>>() {
      public void handle(io.vertx.core.AsyncResult<java.lang.Object> ar) {
        handler.handle(ar.map(event -> io.vertx.core.impl.ConversionHelper.fromObject(event)));
      }
    } : null);
  }
  public static <T>io.vertx.circuitbreaker.CircuitBreaker executeAndReportWithFallback(io.vertx.circuitbreaker.CircuitBreaker j_receiver, io.vertx.core.Promise<java.lang.Object> resultPromise, io.vertx.core.Handler<io.vertx.core.Promise<java.lang.Object>> command, java.util.function.Function<java.lang.Throwable, java.lang.Object> fallback) {
    io.vertx.core.impl.ConversionHelper.fromObject(j_receiver.executeAndReportWithFallback(resultPromise,
      command != null ? event -> command.handle(io.vertx.core.impl.ConversionHelper.fromObject(event)) : null,
      fallback != null ? new java.util.function.Function<java.lang.Throwable, java.lang.Object>() {
      public java.lang.Object apply(java.lang.Throwable t) {
        java.lang.Throwable o = io.vertx.core.impl.ConversionHelper.fromObject(t);
        java.lang.Object p = fallback.apply(o);
        return io.vertx.core.impl.ConversionHelper.toObject(p);
      }
    } : null));
    return j_receiver;
  }
  public static <T>io.vertx.circuitbreaker.CircuitBreaker fallback(io.vertx.circuitbreaker.CircuitBreaker j_receiver, java.util.function.Function<java.lang.Throwable, java.lang.Object> handler) {
    io.vertx.core.impl.ConversionHelper.fromObject(j_receiver.fallback(handler != null ? new java.util.function.Function<java.lang.Throwable, java.lang.Object>() {
      public java.lang.Object apply(java.lang.Throwable t) {
        java.lang.Throwable o = io.vertx.core.impl.ConversionHelper.fromObject(t);
        java.lang.Object p = handler.apply(o);
        return io.vertx.core.impl.ConversionHelper.toObject(p);
      }
    } : null));
    return j_receiver;
  }
}