/*
 * Copyright 2023 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.cloud.datacatalog.v1.spring;

import com.google.api.core.BetaApi;
import com.google.cloud.spring.core.Credentials;
import com.google.cloud.spring.core.CredentialsSupplier;
import com.google.cloud.spring.core.Retry;
import javax.annotation.Generated;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;

// AUTO-GENERATED DOCUMENTATION AND CLASS.
/** Provides default property values for PolicyTagManager client bean */
@Generated("by google-cloud-spring-generator")
@BetaApi("Autogenerated Spring autoconfiguration is not yet stable")
@ConfigurationProperties("com.google.cloud.datacatalog.v1.policy-tag-manager")
public class PolicyTagManagerSpringProperties implements CredentialsSupplier {
  /** OAuth2 credentials to authenticate and authorize calls to Google Cloud Client Libraries. */
  @NestedConfigurationProperty
  private final Credentials credentials =
      new Credentials("https://www.googleapis.com/auth/cloud-platform");
  /** Quota project to use for billing. */
  private String quotaProjectId;
  /** Number of threads used for executors. */
  private Integer executorThreadCount;
  /** Allow override of default transport channel provider to use REST instead of gRPC. */
  private boolean useRest = false;
  /** Allow override of retry settings at service level, applying to all of its RPC methods. */
  @NestedConfigurationProperty private Retry retry;
  /**
   * Allow override of retry settings at method-level for createTaxonomy. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry createTaxonomyRetry;
  /**
   * Allow override of retry settings at method-level for deleteTaxonomy. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry deleteTaxonomyRetry;
  /**
   * Allow override of retry settings at method-level for updateTaxonomy. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry updateTaxonomyRetry;
  /**
   * Allow override of retry settings at method-level for listTaxonomies. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry listTaxonomiesRetry;
  /**
   * Allow override of retry settings at method-level for getTaxonomy. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry getTaxonomyRetry;
  /**
   * Allow override of retry settings at method-level for createPolicyTag. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry createPolicyTagRetry;
  /**
   * Allow override of retry settings at method-level for deletePolicyTag. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry deletePolicyTagRetry;
  /**
   * Allow override of retry settings at method-level for updatePolicyTag. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry updatePolicyTagRetry;
  /**
   * Allow override of retry settings at method-level for listPolicyTags. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry listPolicyTagsRetry;
  /**
   * Allow override of retry settings at method-level for getPolicyTag. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry getPolicyTagRetry;
  /**
   * Allow override of retry settings at method-level for getIamPolicy. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry getIamPolicyRetry;
  /**
   * Allow override of retry settings at method-level for setIamPolicy. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry setIamPolicyRetry;
  /**
   * Allow override of retry settings at method-level for testIamPermissions. If defined, this takes
   * precedence over service-level retry configurations for that RPC method.
   */
  @NestedConfigurationProperty private Retry testIamPermissionsRetry;

  @Override
  public Credentials getCredentials() {
    return this.credentials;
  }

  public String getQuotaProjectId() {
    return this.quotaProjectId;
  }

  public void setQuotaProjectId(String quotaProjectId) {
    this.quotaProjectId = quotaProjectId;
  }

  public boolean getUseRest() {
    return this.useRest;
  }

  public void setUseRest(boolean useRest) {
    this.useRest = useRest;
  }

  public Integer getExecutorThreadCount() {
    return this.executorThreadCount;
  }

  public void setExecutorThreadCount(Integer executorThreadCount) {
    this.executorThreadCount = executorThreadCount;
  }

  public Retry getRetry() {
    return this.retry;
  }

  public void setRetry(Retry retry) {
    this.retry = retry;
  }

  public Retry getCreateTaxonomyRetry() {
    return this.createTaxonomyRetry;
  }

  public void setCreateTaxonomyRetry(Retry createTaxonomyRetry) {
    this.createTaxonomyRetry = createTaxonomyRetry;
  }

  public Retry getDeleteTaxonomyRetry() {
    return this.deleteTaxonomyRetry;
  }

  public void setDeleteTaxonomyRetry(Retry deleteTaxonomyRetry) {
    this.deleteTaxonomyRetry = deleteTaxonomyRetry;
  }

  public Retry getUpdateTaxonomyRetry() {
    return this.updateTaxonomyRetry;
  }

  public void setUpdateTaxonomyRetry(Retry updateTaxonomyRetry) {
    this.updateTaxonomyRetry = updateTaxonomyRetry;
  }

  public Retry getListTaxonomiesRetry() {
    return this.listTaxonomiesRetry;
  }

  public void setListTaxonomiesRetry(Retry listTaxonomiesRetry) {
    this.listTaxonomiesRetry = listTaxonomiesRetry;
  }

  public Retry getGetTaxonomyRetry() {
    return this.getTaxonomyRetry;
  }

  public void setGetTaxonomyRetry(Retry getTaxonomyRetry) {
    this.getTaxonomyRetry = getTaxonomyRetry;
  }

  public Retry getCreatePolicyTagRetry() {
    return this.createPolicyTagRetry;
  }

  public void setCreatePolicyTagRetry(Retry createPolicyTagRetry) {
    this.createPolicyTagRetry = createPolicyTagRetry;
  }

  public Retry getDeletePolicyTagRetry() {
    return this.deletePolicyTagRetry;
  }

  public void setDeletePolicyTagRetry(Retry deletePolicyTagRetry) {
    this.deletePolicyTagRetry = deletePolicyTagRetry;
  }

  public Retry getUpdatePolicyTagRetry() {
    return this.updatePolicyTagRetry;
  }

  public void setUpdatePolicyTagRetry(Retry updatePolicyTagRetry) {
    this.updatePolicyTagRetry = updatePolicyTagRetry;
  }

  public Retry getListPolicyTagsRetry() {
    return this.listPolicyTagsRetry;
  }

  public void setListPolicyTagsRetry(Retry listPolicyTagsRetry) {
    this.listPolicyTagsRetry = listPolicyTagsRetry;
  }

  public Retry getGetPolicyTagRetry() {
    return this.getPolicyTagRetry;
  }

  public void setGetPolicyTagRetry(Retry getPolicyTagRetry) {
    this.getPolicyTagRetry = getPolicyTagRetry;
  }

  public Retry getGetIamPolicyRetry() {
    return this.getIamPolicyRetry;
  }

  public void setGetIamPolicyRetry(Retry getIamPolicyRetry) {
    this.getIamPolicyRetry = getIamPolicyRetry;
  }

  public Retry getSetIamPolicyRetry() {
    return this.setIamPolicyRetry;
  }

  public void setSetIamPolicyRetry(Retry setIamPolicyRetry) {
    this.setIamPolicyRetry = setIamPolicyRetry;
  }

  public Retry getTestIamPermissionsRetry() {
    return this.testIamPermissionsRetry;
  }

  public void setTestIamPermissionsRetry(Retry testIamPermissionsRetry) {
    this.testIamPermissionsRetry = testIamPermissionsRetry;
  }
}
