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

import com.airlock.iam.admin.api.domain.model.token.generic.GenericTokenAttributeMapping;
import com.airlock.iam.admin.domain.model.token.generic.IdentityAttributeMappingImpl;
import com.airlock.iam.plugin.api.annotation.config.Plugin;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Optional;

@Plugin(
   displayName = "Identity Attribute Mapping",
   description = "Filters and maps attributes from the outside to the generic token and vice versa.\n<p>This plugin forwards all entries unchanged and works with all token repositories.</p>"
)
public final class IdentityAttributeMapping implements GenericTokenAttributeMappingConfig {
   public static final String IDENTITY_ATTRIBUTE_MAPPING_DISPLAY_NAME = "Identity Attribute Mapping";

   @Override
   public GenericTokenAttributeMapping getMapping() {
      return new IdentityAttributeMappingImpl();
   }

   @Override
   public Optional<String> getMappingForEnabled() {
      return Optional.empty();
   }

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

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

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

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