package com.l7tech.external.assertions.gatewaygraphql.server.resolver.query;

import com.l7tech.external.assertions.gatewaygraphql.server.data.L7ServiceDTO;
import com.l7tech.external.assertions.gatewaygraphql.server.data.PolicyRevisionDTO;
import com.l7tech.external.assertions.gatewaygraphql.server.resolver.helper.PolicyRevisionHelper;
import com.l7tech.external.assertions.gatewaygraphql.server.util.AssertionLocalBeanFactory;
import com.l7tech.external.assertions.gatewaygraphql.server.util.Util;
import com.l7tech.policy.PolicyVersion;
import graphql.kickstart.tools.GraphQLResolver;
import graphql.schema.DataFetchingEnvironment;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import javax.validation.constraints.NotNull;
import org.springframework.beans.factory.BeanFactory;

public class L7ServiceResolver extends BasicGraphQLResolver implements GraphQLResolver<L7ServiceDTO> {
   private final PolicyRevisionHelper b;

   public L7ServiceResolver(ExecutorService var1, BeanFactory var2, AssertionLocalBeanFactory var3) {
      super(var1);
      this.b = var3.getRequired(PolicyRevisionHelper.class);
   }

   public CompletableFuture<List<PolicyRevisionDTO>> getPolicyRevisions(@NotNull L7ServiceDTO var1, List<Long> var2, DataFetchingEnvironment var3) {
      return this.executeAsyncQuietly(var3, () -> {
         try {
            if (var1.isPolicyVersionSelected()) {
               return List.of(new PolicyRevisionDTO(var1.getPolicyVersion()));
            }
         } catch (Exception var3x) {
            throw a(var3x);
         }

         try {
            if (Util.isNotEmpty(var2)) {
               return this.b.getSubsetOfPolicyRevisions(var1.entity().getPolicy(), var2);
            }
         } catch (Exception var4) {
            throw a(var4);
         }

         return this.b.getPolicyRevisions(var1.entity().getPolicy());
      });
   }

   @Deprecated
   public CompletableFuture<PolicyRevisionDTO> getPolicyRevision(@NotNull L7ServiceDTO var1, DataFetchingEnvironment var2) {
      return this.executeAsyncQuietly(var2, () -> {
         PolicyVersion var10000;
         label30: {
            try {
               if (var1.isPolicyVersionSelected()) {
                  var10000 = var1.getPolicyVersion();
                  break label30;
               }
            } catch (Exception var4) {
               throw a(var4);
            }

            var10000 = this.b.getActivePolicyVersion(var1.entity().getPolicy());
         }

         PolicyVersion var2x = var10000;

         try {
            if (var2x != null) {
               return new PolicyRevisionDTO(var2x);
            }
         } catch (Exception var3) {
            throw a(var3);
         }

         return null;
      });
   }

   private static Exception a(Exception var0) {
      return var0;
   }
}
