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

Java.Configuration.mustache Maven / Gradle / Ivy

The newest version!
{{>licenseInfo}}

package {{invokerPackage}};

import java.util.Objects;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Supplier;

{{>generatedAnnotation}}
public class Configuration {
  public static final String VERSION = "{{{artifactVersion}}}";

  private static final AtomicReference defaultApiClient = new AtomicReference<>();
  private static volatile Supplier apiClientFactory = ApiClient::new;

  /**
   * Get the default API client, which would be used when creating API instances without providing an API client.
   *
   * @return Default API client
   */
  public static ApiClient getDefaultApiClient() {
    ApiClient client = defaultApiClient.get();
    if (client == null) {
      client = defaultApiClient.updateAndGet(val -> {
        if (val != null) { // changed by another thread
          return val;
        }
        return apiClientFactory.get();
      });
    }
    return client;
  }

  /**
   * Set the default API client, which would be used when creating API instances without providing an API client.
   *
   * @param apiClient API client
   */
  public static void setDefaultApiClient(ApiClient apiClient) {
    defaultApiClient.set(apiClient);
  }

  /**
   * set the callback used to create new ApiClient objects
   */
  public static void setApiClientFactory(Supplier factory) {
    apiClientFactory = Objects.requireNonNull(factory);
  }

  private Configuration() {
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy