package com.airlock.iam.admin.application.configuration.accountlink;

import com.airlock.iam.common.application.configuration.accountlink.persistence.AccountLinkPersisterConfig;
import com.airlock.iam.plugin.api.annotation.config.Plugin;
import com.airlock.iam.plugin.api.annotation.license.PluginLicenseRestriction;
import com.airlock.iam.plugin.api.annotation.property.PluginProperty;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

@Plugin(description = "Configuration of the account link management of users.")
@PluginLicenseRestriction(moduleAffiliation = "OAuthAccountLinking")
public class AccountLinkManagementConfig {
   @PluginProperty(description = "Repository providing the account links of users.", displayName = "Account Link Persister", optional = false)
   private AccountLinkPersisterConfig accountLinkPersister;

   public AccountLinkPersisterConfig getAccountLinkPersister() {
      return this.accountLinkPersister;
   }

   @SuppressFBWarnings(justification = "generated code")
   public static AccountLinkManagementConfig.AccountLinkManagementConfigBuilder builder() {
      return new AccountLinkManagementConfig.AccountLinkManagementConfigBuilder();
   }

   @SuppressFBWarnings(justification = "generated code")
   public AccountLinkManagementConfig() {
   }

   @SuppressFBWarnings(justification = "generated code")
   public AccountLinkManagementConfig(AccountLinkPersisterConfig accountLinkPersister) {
      this.accountLinkPersister = accountLinkPersister;
   }

   @SuppressFBWarnings(justification = "generated code")
   public static class AccountLinkManagementConfigBuilder {
      @SuppressFBWarnings(justification = "generated code")
      private AccountLinkPersisterConfig accountLinkPersister;

      @SuppressFBWarnings(justification = "generated code")
      AccountLinkManagementConfigBuilder() {
      }

      @SuppressFBWarnings(justification = "generated code")
      public AccountLinkManagementConfig.AccountLinkManagementConfigBuilder accountLinkPersister(AccountLinkPersisterConfig accountLinkPersister) {
         this.accountLinkPersister = accountLinkPersister;
         return this;
      }

      @SuppressFBWarnings(justification = "generated code")
      public AccountLinkManagementConfig build() {
         return new AccountLinkManagementConfig(this.accountLinkPersister);
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String toString() {
         return "AccountLinkManagementConfig.AccountLinkManagementConfigBuilder(accountLinkPersister=" + this.accountLinkPersister + ")";
      }
   }
}
