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

import com.airlock.iam.admin.api.application.configuration.token.generic.GenericTokenRepositoryConfig;
import com.airlock.iam.plugin.api.annotation.config.Plugin;
import com.airlock.iam.plugin.api.annotation.property.PluginProperty;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

@Plugin(description = "Configures a REST endpoint for a specific token type.", displayName = "Generic Token Endpoint")
public final class TokenEndpointConfig {
   @PluginProperty(description = "Defines the repository to be used for this token endpoint.", optional = false)
   private GenericTokenRepositoryConfig tokenRepository;

   public GenericTokenRepositoryConfig getTokenRepository() {
      return this.tokenRepository;
   }

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

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

   @SuppressFBWarnings(justification = "generated code")
   public TokenEndpointConfig(GenericTokenRepositoryConfig tokenRepository) {
      this.tokenRepository = tokenRepository;
   }

   @SuppressFBWarnings(justification = "generated code")
   public static class TokenEndpointConfigBuilder {
      @SuppressFBWarnings(justification = "generated code")
      private GenericTokenRepositoryConfig tokenRepository;

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

      @SuppressFBWarnings(justification = "generated code")
      public TokenEndpointConfig.TokenEndpointConfigBuilder tokenRepository(GenericTokenRepositoryConfig tokenRepository) {
         this.tokenRepository = tokenRepository;
         return this;
      }

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

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String toString() {
         return "TokenEndpointConfig.TokenEndpointConfigBuilder(tokenRepository=" + this.tokenRepository + ")";
      }
   }
}
