package com.airlock.iam.oauth2.application.configuration.token.revocation;

import com.airlock.iam.oauth2.domain.model.revocation.TokenInvalidationLogic;
import com.airlock.iam.oauth2.domain.model.revocation.TokenInvalidationStrategyConfig;
import com.airlock.iam.oauth2.domain.model.revocation.TokenInvalidationTokenManager;
import com.airlock.iam.oauth2.domain.model.token.revocation.SingleTokenInvalidationLogic;
import com.airlock.iam.plugin.api.annotation.config.Plugin;
import com.airlock.iam.plugin.api.annotation.license.PluginLicenseRestriction;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

@Plugin(description = "Invalidates no other tokens except the token that is being revoked.", displayName = "Invalidate Single Token")
@PluginLicenseRestriction(moduleAffiliation = "OAuthServer")
public final class SingleTokenInvalidationStrategyConfig implements TokenInvalidationStrategyConfig {
   @Override
   public TokenInvalidationLogic getLogic(TokenInvalidationTokenManager tokenManager) {
      return new SingleTokenInvalidationLogic();
   }

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

   @SuppressFBWarnings(justification = "generated code")
   public static class SingleTokenInvalidationStrategyConfigBuilder {
      @SuppressFBWarnings(justification = "generated code")
      SingleTokenInvalidationStrategyConfigBuilder() {
      }

      @SuppressFBWarnings(justification = "generated code")
      public SingleTokenInvalidationStrategyConfig build() {
         return new SingleTokenInvalidationStrategyConfig();
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String toString() {
         return "SingleTokenInvalidationStrategyConfig.SingleTokenInvalidationStrategyConfigBuilder()";
      }
   }
}
