All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.oracle.bmc.mysql.MysqlaasAsyncClient Maven / Gradle / Ivy

/**
 * Copyright (c) 2016, 2021, Oracle and/or its affiliates.  All rights reserved.
 * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
 */
package com.oracle.bmc.mysql;

import com.oracle.bmc.mysql.internal.http.*;
import com.oracle.bmc.mysql.requests.*;
import com.oracle.bmc.mysql.responses.*;

/**
 * Async client implementation for Mysqlaas service. 
* There are two ways to use async client: * 1. Use AsyncHandler: using AsyncHandler, if the response to the call is an {@link java.io.InputStream}, like * getObject Api in object storage service, developers need to process the stream in AsyncHandler, and not anywhere else, * because the stream will be closed right after the AsyncHandler is invoked.
* 2. Use Java Future: using Java Future, developers need to close the stream after they are done with the Java Future.
* Accessing the result should be done in a mutually exclusive manner, either through the Future or the AsyncHandler, * but not both. If the Future is used, the caller should pass in null as the AsyncHandler. If the AsyncHandler * is used, it is still safe to use the Future to determine whether or not the request was completed via * Future.isDone/isCancelled.
* Please refer to https://github.com/oracle/oci-java-sdk/blob/master/bmc-examples/src/main/java/ResteasyClientWithObjectStorageExample.java */ @javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20190415") @lombok.extern.slf4j.Slf4j public class MysqlaasAsyncClient implements MysqlaasAsync { /** * Service instance for Mysqlaas. */ public static final com.oracle.bmc.Service SERVICE = com.oracle.bmc.Services.serviceBuilder() .serviceName("MYSQLAAS") .serviceEndpointPrefix("") .serviceEndpointTemplate("https://mysql.{region}.ocp.{secondLevelDomain}") .build(); @lombok.Getter(value = lombok.AccessLevel.PACKAGE) private final com.oracle.bmc.http.internal.RestClient client; private final com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider; /** * Creates a new service instance using the given authentication provider. * @param authenticationDetailsProvider The authentication details provider, required. */ public MysqlaasAsyncClient( com.oracle.bmc.auth.BasicAuthenticationDetailsProvider authenticationDetailsProvider) { this(authenticationDetailsProvider, null); } /** * Creates a new service instance using the given authentication provider and client configuration. * @param authenticationDetailsProvider The authentication details provider, required. * @param configuration The client configuration, optional. */ public MysqlaasAsyncClient( com.oracle.bmc.auth.BasicAuthenticationDetailsProvider authenticationDetailsProvider, com.oracle.bmc.ClientConfiguration configuration) { this(authenticationDetailsProvider, configuration, null); } /** * Creates a new service instance using the given authentication provider and client configuration. Additionally, * a Consumer can be provided that will be invoked whenever a REST Client is created to allow for additional configuration/customization. * @param authenticationDetailsProvider The authentication details provider, required. * @param configuration The client configuration, optional. * @param clientConfigurator ClientConfigurator that will be invoked for additional configuration of a REST client, optional. */ public MysqlaasAsyncClient( com.oracle.bmc.auth.BasicAuthenticationDetailsProvider authenticationDetailsProvider, com.oracle.bmc.ClientConfiguration configuration, com.oracle.bmc.http.ClientConfigurator clientConfigurator) { this( authenticationDetailsProvider, configuration, clientConfigurator, new com.oracle.bmc.http.signing.internal.DefaultRequestSignerFactory( com.oracle.bmc.http.signing.SigningStrategy.STANDARD)); } /** * Creates a new service instance using the given authentication provider and client configuration. Additionally, * a Consumer can be provided that will be invoked whenever a REST Client is created to allow for additional configuration/customization. *

* This is an advanced constructor for clients that want to take control over how requests are signed. * @param authenticationDetailsProvider The authentication details provider, required. * @param configuration The client configuration, optional. * @param clientConfigurator ClientConfigurator that will be invoked for additional configuration of a REST client, optional. * @param defaultRequestSignerFactory The request signer factory used to create the request signer for this service. */ public MysqlaasAsyncClient( com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider, com.oracle.bmc.ClientConfiguration configuration, com.oracle.bmc.http.ClientConfigurator clientConfigurator, com.oracle.bmc.http.signing.RequestSignerFactory defaultRequestSignerFactory) { this( authenticationDetailsProvider, configuration, clientConfigurator, defaultRequestSignerFactory, new java.util.ArrayList()); } /** * Creates a new service instance using the given authentication provider and client configuration. Additionally, * a Consumer can be provided that will be invoked whenever a REST Client is created to allow for additional configuration/customization. *

* This is an advanced constructor for clients that want to take control over how requests are signed. * @param authenticationDetailsProvider The authentication details provider, required. * @param configuration The client configuration, optional. * @param clientConfigurator ClientConfigurator that will be invoked for additional configuration of a REST client, optional. * @param defaultRequestSignerFactory The request signer factory used to create the request signer for this service. * @param additionalClientConfigurators Additional client configurators to be run after the primary configurator. */ public MysqlaasAsyncClient( com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider, com.oracle.bmc.ClientConfiguration configuration, com.oracle.bmc.http.ClientConfigurator clientConfigurator, com.oracle.bmc.http.signing.RequestSignerFactory defaultRequestSignerFactory, java.util.List additionalClientConfigurators) { this( authenticationDetailsProvider, configuration, clientConfigurator, defaultRequestSignerFactory, additionalClientConfigurators, null); } /** * Creates a new service instance using the given authentication provider and client configuration. Additionally, * a Consumer can be provided that will be invoked whenever a REST Client is created to allow for additional configuration/customization. *

* This is an advanced constructor for clients that want to take control over how requests are signed. * @param authenticationDetailsProvider The authentication details provider, required. * @param configuration The client configuration, optional. * @param clientConfigurator ClientConfigurator that will be invoked for additional configuration of a REST client, optional. * @param defaultRequestSignerFactory The request signer factory used to create the request signer for this service. * @param additionalClientConfigurators Additional client configurators to be run after the primary configurator. * @param endpoint Endpoint, or null to leave unset (note, may be overridden by {@code authenticationDetailsProvider}) */ public MysqlaasAsyncClient( com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider, com.oracle.bmc.ClientConfiguration configuration, com.oracle.bmc.http.ClientConfigurator clientConfigurator, com.oracle.bmc.http.signing.RequestSignerFactory defaultRequestSignerFactory, java.util.List additionalClientConfigurators, String endpoint) { this( authenticationDetailsProvider, configuration, clientConfigurator, defaultRequestSignerFactory, com.oracle.bmc.http.signing.internal.DefaultRequestSignerFactory .createDefaultRequestSignerFactories(), additionalClientConfigurators, endpoint); } /** * Creates a new service instance using the given authentication provider and client configuration. Additionally, * a Consumer can be provided that will be invoked whenever a REST Client is created to allow for additional configuration/customization. *

* This is an advanced constructor for clients that want to take control over how requests are signed. * @param authenticationDetailsProvider The authentication details provider, required. * @param configuration The client configuration, optional. * @param clientConfigurator ClientConfigurator that will be invoked for additional configuration of a REST client, optional. * @param defaultRequestSignerFactory The request signer factory used to create the request signer for this service. * @param signingStrategyRequestSignerFactories The request signer factories for each signing strategy used to create the request signer * @param additionalClientConfigurators Additional client configurators to be run after the primary configurator. * @param endpoint Endpoint, or null to leave unset (note, may be overridden by {@code authenticationDetailsProvider}) */ public MysqlaasAsyncClient( com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider, com.oracle.bmc.ClientConfiguration configuration, com.oracle.bmc.http.ClientConfigurator clientConfigurator, com.oracle.bmc.http.signing.RequestSignerFactory defaultRequestSignerFactory, java.util.Map< com.oracle.bmc.http.signing.SigningStrategy, com.oracle.bmc.http.signing.RequestSignerFactory> signingStrategyRequestSignerFactories, java.util.List additionalClientConfigurators, String endpoint) { this( authenticationDetailsProvider, configuration, clientConfigurator, defaultRequestSignerFactory, signingStrategyRequestSignerFactories, additionalClientConfigurators, endpoint, com.oracle.bmc.http.internal.RestClientFactoryBuilder.builder()); } /** * Creates a new service instance using the given authentication provider and client configuration. Additionally, * a Consumer can be provided that will be invoked whenever a REST Client is created to allow for additional configuration/customization. *

* This is an advanced constructor for clients that want to take control over how requests are signed. * @param authenticationDetailsProvider The authentication details provider, required. * @param configuration The client configuration, optional. * @param clientConfigurator ClientConfigurator that will be invoked for additional configuration of a REST client, optional. * @param defaultRequestSignerFactory The request signer factory used to create the request signer for this service. * @param signingStrategyRequestSignerFactories The request signer factories for each signing strategy used to create the request signer * @param additionalClientConfigurators Additional client configurators to be run after the primary configurator. * @param endpoint Endpoint, or null to leave unset (note, may be overridden by {@code authenticationDetailsProvider}) * @param restClientFactoryBuilder the builder for the {@link com.oracle.bmc.http.internal.RestClientFactory} */ public MysqlaasAsyncClient( com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider, com.oracle.bmc.ClientConfiguration configuration, com.oracle.bmc.http.ClientConfigurator clientConfigurator, com.oracle.bmc.http.signing.RequestSignerFactory defaultRequestSignerFactory, java.util.Map< com.oracle.bmc.http.signing.SigningStrategy, com.oracle.bmc.http.signing.RequestSignerFactory> signingStrategyRequestSignerFactories, java.util.List additionalClientConfigurators, String endpoint, com.oracle.bmc.http.internal.RestClientFactoryBuilder restClientFactoryBuilder) { this.authenticationDetailsProvider = authenticationDetailsProvider; java.util.List authenticationDetailsConfigurators = new java.util.ArrayList<>(); if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.ProvidesClientConfigurators) { authenticationDetailsConfigurators.addAll( ((com.oracle.bmc.auth.ProvidesClientConfigurators) this.authenticationDetailsProvider) .getClientConfigurators()); } java.util.List allConfigurators = new java.util.ArrayList<>(additionalClientConfigurators); allConfigurators.addAll(authenticationDetailsConfigurators); com.oracle.bmc.http.internal.RestClientFactory restClientFactory = restClientFactoryBuilder .clientConfigurator(clientConfigurator) .additionalClientConfigurators(allConfigurators) .build(); com.oracle.bmc.http.signing.RequestSigner defaultRequestSigner = defaultRequestSignerFactory.createRequestSigner( SERVICE, this.authenticationDetailsProvider); java.util.Map< com.oracle.bmc.http.signing.SigningStrategy, com.oracle.bmc.http.signing.RequestSigner> requestSigners = new java.util.HashMap<>(); if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.BasicAuthenticationDetailsProvider) { for (com.oracle.bmc.http.signing.SigningStrategy s : com.oracle.bmc.http.signing.SigningStrategy.values()) { requestSigners.put( s, signingStrategyRequestSignerFactories .get(s) .createRequestSigner(SERVICE, authenticationDetailsProvider)); } } this.client = restClientFactory.create(defaultRequestSigner, requestSigners, configuration); if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RegionProvider) { com.oracle.bmc.auth.RegionProvider provider = (com.oracle.bmc.auth.RegionProvider) this.authenticationDetailsProvider; if (provider.getRegion() != null) { this.setRegion(provider.getRegion()); if (endpoint != null) { LOG.info( "Authentication details provider configured for region '{}', but endpoint specifically set to '{}'. Using endpoint setting instead of region.", provider.getRegion(), endpoint); } } } if (endpoint != null) { setEndpoint(endpoint); } } /** * Create a builder for this client. * @return builder */ public static Builder builder() { return new Builder(SERVICE); } /** * Builder class for this client. The "authenticationDetailsProvider" is required and must be passed to the * {@link #build(AbstractAuthenticationDetailsProvider)} method. */ public static class Builder extends com.oracle.bmc.common.RegionalClientBuilder { private Builder(com.oracle.bmc.Service service) { super(service); requestSignerFactory = new com.oracle.bmc.http.signing.internal.DefaultRequestSignerFactory( com.oracle.bmc.http.signing.SigningStrategy.STANDARD); } /** * Build the client. * @param authenticationDetailsProvider authentication details provider * @return the client */ public MysqlaasAsyncClient build( @lombok.NonNull com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider) { return new MysqlaasAsyncClient( authenticationDetailsProvider, configuration, clientConfigurator, requestSignerFactory, signingStrategyRequestSignerFactories, additionalClientConfigurators, endpoint); } } @Override public void setEndpoint(String endpoint) { LOG.info("Setting endpoint to {}", endpoint); client.setEndpoint(endpoint); } @Override public String getEndpoint() { String endpoint = null; java.net.URI uri = client.getBaseTarget().getUri(); if (uri != null) { endpoint = uri.toString(); } return endpoint; } @Override public void setRegion(com.oracle.bmc.Region region) { com.google.common.base.Optional endpoint = region.getEndpoint(SERVICE); if (endpoint.isPresent()) { setEndpoint(endpoint.get()); } else { throw new IllegalArgumentException( "Endpoint for " + SERVICE + " is not known in region " + region); } } @Override public void setRegion(String regionId) { regionId = regionId.toLowerCase(java.util.Locale.ENGLISH); try { com.oracle.bmc.Region region = com.oracle.bmc.Region.fromRegionId(regionId); setRegion(region); } catch (IllegalArgumentException e) { LOG.info("Unknown regionId '{}', falling back to default endpoint format", regionId); String endpoint = com.oracle.bmc.Region.formatDefaultRegionEndpoint(SERVICE, regionId); setEndpoint(endpoint); } } @Override public void close() { client.close(); } @Override public java.util.concurrent.Future createConfiguration( CreateConfigurationRequest request, final com.oracle.bmc.responses.AsyncHandler< CreateConfigurationRequest, CreateConfigurationResponse> handler) { LOG.trace("Called async createConfiguration"); final CreateConfigurationRequest interceptedRequest = CreateConfigurationConverter.interceptRequest(request); final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = CreateConfigurationConverter.fromRequest(client, interceptedRequest); final com.google.common.base.Function< javax.ws.rs.core.Response, CreateConfigurationResponse> transformer = CreateConfigurationConverter.fromResponse(); com.oracle.bmc.http.internal.RetryTokenUtils.addRetryToken(ib); com.oracle.bmc.responses.AsyncHandler< CreateConfigurationRequest, CreateConfigurationResponse> handlerToUse = handler; java.util.function.Function< com.oracle.bmc.responses.AsyncHandler< CreateConfigurationRequest, CreateConfigurationResponse>, java.util.concurrent.Future> futureSupplier = client.postFutureSupplier(interceptedRequest, ib, transformer); if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RefreshableOnNotAuthenticatedProvider) { return new com.oracle.bmc.util.internal.RefreshAuthTokenWrapper< CreateConfigurationRequest, CreateConfigurationResponse>( (com.oracle.bmc.auth.RefreshableOnNotAuthenticatedProvider) this.authenticationDetailsProvider, handlerToUse, futureSupplier) { @Override protected void beforeRetryAction() {} }; } else { return futureSupplier.apply(handlerToUse); } } @Override public java.util.concurrent.Future deleteConfiguration( DeleteConfigurationRequest request, final com.oracle.bmc.responses.AsyncHandler< DeleteConfigurationRequest, DeleteConfigurationResponse> handler) { LOG.trace("Called async deleteConfiguration"); final DeleteConfigurationRequest interceptedRequest = DeleteConfigurationConverter.interceptRequest(request); final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = DeleteConfigurationConverter.fromRequest(client, interceptedRequest); final com.google.common.base.Function< javax.ws.rs.core.Response, DeleteConfigurationResponse> transformer = DeleteConfigurationConverter.fromResponse(); com.oracle.bmc.responses.AsyncHandler< DeleteConfigurationRequest, DeleteConfigurationResponse> handlerToUse = handler; java.util.function.Function< com.oracle.bmc.responses.AsyncHandler< DeleteConfigurationRequest, DeleteConfigurationResponse>, java.util.concurrent.Future> futureSupplier = client.deleteFutureSupplier(interceptedRequest, ib, transformer); if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RefreshableOnNotAuthenticatedProvider) { return new com.oracle.bmc.util.internal.RefreshAuthTokenWrapper< DeleteConfigurationRequest, DeleteConfigurationResponse>( (com.oracle.bmc.auth.RefreshableOnNotAuthenticatedProvider) this.authenticationDetailsProvider, handlerToUse, futureSupplier) { @Override protected void beforeRetryAction() {} }; } else { return futureSupplier.apply(handlerToUse); } } @Override public java.util.concurrent.Future getConfiguration( GetConfigurationRequest request, final com.oracle.bmc.responses.AsyncHandler< GetConfigurationRequest, GetConfigurationResponse> handler) { LOG.trace("Called async getConfiguration"); final GetConfigurationRequest interceptedRequest = GetConfigurationConverter.interceptRequest(request); final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = GetConfigurationConverter.fromRequest(client, interceptedRequest); final com.google.common.base.Function transformer = GetConfigurationConverter.fromResponse(); com.oracle.bmc.responses.AsyncHandler handlerToUse = handler; java.util.function.Function< com.oracle.bmc.responses.AsyncHandler< GetConfigurationRequest, GetConfigurationResponse>, java.util.concurrent.Future> futureSupplier = client.getFutureSupplier(interceptedRequest, ib, transformer); if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RefreshableOnNotAuthenticatedProvider) { return new com.oracle.bmc.util.internal.RefreshAuthTokenWrapper< GetConfigurationRequest, GetConfigurationResponse>( (com.oracle.bmc.auth.RefreshableOnNotAuthenticatedProvider) this.authenticationDetailsProvider, handlerToUse, futureSupplier) { @Override protected void beforeRetryAction() {} }; } else { return futureSupplier.apply(handlerToUse); } } @Override public java.util.concurrent.Future listConfigurations( ListConfigurationsRequest request, final com.oracle.bmc.responses.AsyncHandler< ListConfigurationsRequest, ListConfigurationsResponse> handler) { LOG.trace("Called async listConfigurations"); final ListConfigurationsRequest interceptedRequest = ListConfigurationsConverter.interceptRequest(request); final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = ListConfigurationsConverter.fromRequest(client, interceptedRequest); final com.google.common.base.Function transformer = ListConfigurationsConverter.fromResponse(); com.oracle.bmc.responses.AsyncHandler handlerToUse = handler; java.util.function.Function< com.oracle.bmc.responses.AsyncHandler< ListConfigurationsRequest, ListConfigurationsResponse>, java.util.concurrent.Future> futureSupplier = client.getFutureSupplier(interceptedRequest, ib, transformer); if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RefreshableOnNotAuthenticatedProvider) { return new com.oracle.bmc.util.internal.RefreshAuthTokenWrapper< ListConfigurationsRequest, ListConfigurationsResponse>( (com.oracle.bmc.auth.RefreshableOnNotAuthenticatedProvider) this.authenticationDetailsProvider, handlerToUse, futureSupplier) { @Override protected void beforeRetryAction() {} }; } else { return futureSupplier.apply(handlerToUse); } } @Override public java.util.concurrent.Future listShapes( ListShapesRequest request, final com.oracle.bmc.responses.AsyncHandler handler) { LOG.trace("Called async listShapes"); final ListShapesRequest interceptedRequest = ListShapesConverter.interceptRequest(request); final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = ListShapesConverter.fromRequest(client, interceptedRequest); final com.google.common.base.Function transformer = ListShapesConverter.fromResponse(); com.oracle.bmc.responses.AsyncHandler handlerToUse = handler; java.util.function.Function< com.oracle.bmc.responses.AsyncHandler< ListShapesRequest, ListShapesResponse>, java.util.concurrent.Future> futureSupplier = client.getFutureSupplier(interceptedRequest, ib, transformer); if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RefreshableOnNotAuthenticatedProvider) { return new com.oracle.bmc.util.internal.RefreshAuthTokenWrapper< ListShapesRequest, ListShapesResponse>( (com.oracle.bmc.auth.RefreshableOnNotAuthenticatedProvider) this.authenticationDetailsProvider, handlerToUse, futureSupplier) { @Override protected void beforeRetryAction() {} }; } else { return futureSupplier.apply(handlerToUse); } } @Override public java.util.concurrent.Future listVersions( ListVersionsRequest request, final com.oracle.bmc.responses.AsyncHandler handler) { LOG.trace("Called async listVersions"); final ListVersionsRequest interceptedRequest = ListVersionsConverter.interceptRequest(request); final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = ListVersionsConverter.fromRequest(client, interceptedRequest); final com.google.common.base.Function transformer = ListVersionsConverter.fromResponse(); com.oracle.bmc.responses.AsyncHandler handlerToUse = handler; java.util.function.Function< com.oracle.bmc.responses.AsyncHandler< ListVersionsRequest, ListVersionsResponse>, java.util.concurrent.Future> futureSupplier = client.getFutureSupplier(interceptedRequest, ib, transformer); if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RefreshableOnNotAuthenticatedProvider) { return new com.oracle.bmc.util.internal.RefreshAuthTokenWrapper< ListVersionsRequest, ListVersionsResponse>( (com.oracle.bmc.auth.RefreshableOnNotAuthenticatedProvider) this.authenticationDetailsProvider, handlerToUse, futureSupplier) { @Override protected void beforeRetryAction() {} }; } else { return futureSupplier.apply(handlerToUse); } } @Override public java.util.concurrent.Future updateConfiguration( UpdateConfigurationRequest request, final com.oracle.bmc.responses.AsyncHandler< UpdateConfigurationRequest, UpdateConfigurationResponse> handler) { LOG.trace("Called async updateConfiguration"); final UpdateConfigurationRequest interceptedRequest = UpdateConfigurationConverter.interceptRequest(request); final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = UpdateConfigurationConverter.fromRequest(client, interceptedRequest); final com.google.common.base.Function< javax.ws.rs.core.Response, UpdateConfigurationResponse> transformer = UpdateConfigurationConverter.fromResponse(); com.oracle.bmc.responses.AsyncHandler< UpdateConfigurationRequest, UpdateConfigurationResponse> handlerToUse = handler; java.util.function.Function< com.oracle.bmc.responses.AsyncHandler< UpdateConfigurationRequest, UpdateConfigurationResponse>, java.util.concurrent.Future> futureSupplier = client.putFutureSupplier(interceptedRequest, ib, transformer); if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RefreshableOnNotAuthenticatedProvider) { return new com.oracle.bmc.util.internal.RefreshAuthTokenWrapper< UpdateConfigurationRequest, UpdateConfigurationResponse>( (com.oracle.bmc.auth.RefreshableOnNotAuthenticatedProvider) this.authenticationDetailsProvider, handlerToUse, futureSupplier) { @Override protected void beforeRetryAction() {} }; } else { return futureSupplier.apply(handlerToUse); } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy