package com.airlock.iam.flow.shared.domain.model.valueprovider;

import com.airlock.iam.base.api.domain.model.plugin.LogicForConfig;
import com.airlock.iam.common.api.domain.model.valueprovider.ValueProvider;
import com.airlock.iam.flow.shared.api.domain.model.valueprovider.ValueMapProvider;
import com.airlock.iam.flow.shared.application.configuration.valueprovider.ValueProviderMapProviderConfig;
import jakarta.inject.Inject;
import java.util.HashMap;
import java.util.Map;

@LogicForConfig(ValueProviderMapProviderConfig.class)
public class ValueProviderMapProvider implements ValueMapProvider {
   private final Map<String, ValueProvider<Object>> valueProviders;

   @Inject
   public ValueProviderMapProvider(Map<String, ValueProvider<Object>> valueProviders) {
      this.valueProviders = valueProviders;
   }

   @Override
   public Map<String, Object> provideValueMap() {
      Map<String, Object> values = new HashMap<>();
      this.valueProviders.forEach((key, provider) -> values.put(key, provider.getValue()));
      return values;
   }
}
