package com.airlock.iam.common.domain.model.valueprovider;

import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.common.api.domain.model.user.User;
import com.airlock.iam.common.api.domain.model.valueprovider.ValueProvider;
import com.airlock.iam.common.application.configuration.valueprovider.UserPrincipalNameProviderConfig;
import jakarta.inject.Inject;
import jakarta.inject.Provider;
import lombok.NonNull;

@LogicForConfig(UserPrincipalNameProviderConfig.class)
public class UserPrincipalNameProvider implements ValueProvider<String> {
   @NonNull
   private final Provider<User> user;

   @Inject
   public UserPrincipalNameProvider(@NonNull Provider<User> user) {
      if (user == null) {
         throw new NullPointerException("user is marked non-null but is null");
      }

      this.user = user;
   }

   public String getValue() {
      return ((User)this.user.get()).getName();
   }
}
