package com.airlock.iam.common.infrastructure.factory;

import com.airlock.iam.base.api.infrastructure.plugin.ModuleForConfig;
import com.airlock.iam.common.api.domain.model.user.User;
import com.airlock.iam.common.application.configuration.valueprovider.contextdata.ContextDataIntegerValueProviderConfig;
import com.airlock.iam.common.domain.model.valueprovider.contextdata.GenericContextDataValueProvider;
import com.google.inject.Exposed;
import com.google.inject.PrivateModule;
import com.google.inject.Provides;

@ModuleForConfig(ContextDataIntegerValueProviderConfig.class)
public class ContextDataIntegerValueProviderModule extends PrivateModule {
   @Provides
   @Exposed
   GenericContextDataValueProvider<Integer> provideContextDataNullableIntegerValueProvider(ContextDataIntegerValueProviderConfig config, User userProvider) {
      return GenericContextDataValueProvider.<Integer>builder()
         .contextDataName(config.getContextDataField().getContextDataName())
         .valueMandatory(config.isMandatory())
         .user(userProvider)
         .build();
   }

   protected void configure() {
   }
}
