package com.airlock.iam.common.application;

import com.airlock.iam.common.infrastructure.targetuser.UriUserIdTransformer;
import com.google.inject.Injector;
import jakarta.ws.rs.core.Context;
import org.glassfish.jersey.internal.inject.InjectionManager;

public class UserParamConverterProvider extends AbstractUserParamConverterProvider {
   private final InjectionManager injectionManager;

   public UserParamConverterProvider(@Context InjectionManager injectionManager) {
      this.injectionManager = injectionManager;
   }

   @Override
   protected UserParamConverter getUserParamConverter() {
      return new UserParamConverter(this::getUriUserIdTransformer);
   }

   private UriUserIdTransformer getUriUserIdTransformer() {
      Injector injector = (Injector)this.injectionManager.getInstance(Injector.class);
      return (UriUserIdTransformer)injector.getInstance(UriUserIdTransformer.class);
   }
}
