package com.l7tech.gateway.rest;

import com.l7tech.util.CollectionUtils;
import jakarta.inject.Singleton;
import jakarta.ws.rs.core.Feature;
import jakarta.ws.rs.core.FeatureContext;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import org.glassfish.hk2.api.DescriptorVisibility;
import org.glassfish.hk2.api.InjectionResolver;
import org.glassfish.hk2.internal.ConstantActiveDescriptor;
import org.glassfish.hk2.utilities.binding.AbstractBinder;

public abstract class CustomInjectionResolverFeature<A extends Annotation, I extends InjectionResolver<A>> extends AbstractBinder implements Feature {
   private I a;
   private Class<A> b;

   public CustomInjectionResolverFeature(I var1, Class<A> var2) {
      this.a = (I)var1;
      this.b = var2;
   }

   protected void configure() {
      ConstantActiveDescriptor var1 = new ConstantActiveDescriptor(
         this.a,
         CollectionUtils.set(new Type[]{new b(this)}),
         Singleton.class,
         this.a.getClass().getName(),
         null,
         DescriptorVisibility.LOCAL,
         false,
         false,
         null,
         null,
         0
      );
      this.bind(var1);
   }

   public boolean configure(FeatureContext var1) {
      return true;
   }
}
