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

import com.l7tech.external.assertions.gatewaygraphql.server.resolver.QueryOptionsSupplier;
import com.l7tech.gateway.common.spring.remoting.RemoteUtils;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.util.ExceptionUtils;
import graphql.GraphQLContext;
import graphql.schema.DataFetchingEnvironment;
import java.security.Principal;
import java.util.concurrent.Callable;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.function.Supplier;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.security.auth.Subject;

public abstract class BasicGraphQLResolver {
   private static final Logger a;
   protected final ExecutorService executorService;
   private static final String[] h;

   public BasicGraphQLResolver(ExecutorService var1) {
      this.executorService = var1;
   }

   protected Logger getLogger() {
      return a;
   }

   protected final <U> CompletableFuture<U> executeAsyncQuietly(DataFetchingEnvironment var1, Callable<U> var2) {
      return this.executeAsyncQuietly(var1, var2, () -> null);
   }

   protected final <U> CompletableFuture<U> executeAsyncQuietly(DataFetchingEnvironment var1, Callable<U> var2, Supplier<U> var3) {
      GraphQLContext var4 = var1.getGraphQlContext();
      String[] var7 = h;
      String var5 = (String)var4.get(var7[0]);
      Subject var6 = new Subject();
      var6.getPrincipals().add((Principal)var4.get(var7[3]));
      return CompletableFuture.supplyAsync(() -> Subject.callAs(var6, () -> {
         try {
            return (U)RemoteUtils.callWithConnectionInfo(var5, null, var2);
         } catch (Exception var7x) {
            Exception var5xx = var7x;

            try {
               this.getLogger().log(Level.INFO, ExceptionUtils.getDebugException(var5xx), () -> ExceptionUtils.getMessageWithCause(var5xx));
               if (!this.getQueryOptionsSupplier(var1).isSuppressQueryIntermediateErrorsEnabled()) {
                  throw var5xx;
               }
            } catch (Exception var6x) {
               throw b(var6x);
            }

            return (U)var3.get();
         }
      }), this.executorService);
   }

   protected final QueryOptionsSupplier getQueryOptionsSupplier(DataFetchingEnvironment var1) {
      return (QueryOptionsSupplier)var1.getGraphQlContext().get(h[4]);
   }

   protected final EntityDTOCache.EntityDTOSubCache getEntityDTOSubCache(DataFetchingEnvironment var1, EntityType var2) {
      EntityDTOCache var3 = (EntityDTOCache)var1.getGraphQlContext().get(h[1]);
      return var3.getSubCache(var2);
   }

   protected final DependentEntityCacheProvider.DependentEntityCache getDependentEntityCache(DataFetchingEnvironment var1, EntityType var2) {
      DependentEntityCacheProvider var3 = (DependentEntityCacheProvider)var1.getGraphQlContext().get(h[2]);
      return var3.getCache(var2);
   }

   static {
      String[] var5 = new String[5];
      int var3 = 0;
      String var2 = "\u001a;/\fM-_\f:0\u0006J;\u000e\r06\nM1Z<\u0011\u0001\u0002Z {\u0016\f;2&W<w\u001c'\u0001\u0002Z {8,-\u0015P,{\u001a";
      int var4 = "\u001a;/\fM-_\f:0\u0006J;\u000e\r06\nM1Z<\u0011\u0001\u0002Z {\u0016\f;2&W<w\u001c'\u0001\u0002Z {8,-\u0015P,{\u001a".length();
      char var1 = '\r';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 17;
         String var10001 = var2.substring(++var7, var7 + var1);
         byte var10002 = -1;

         while (true) {
            String var8 = a(var10000, c(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     h = var5;
                     a = Logger.getLogger(BasicGraphQLResolver.class.getName());
                     return;
                  }

                  var1 = var2.charAt(var7);
                  break;
               default:
                  var5[var3++] = var8;
                  if ((var7 += var1) < var4) {
                     var1 = var2.charAt(var7);
                     continue label24;
                  }

                  var2 = "VtiT3d$E\fFtxN\u001fX1ChrR\u0015";
                  var4 = "VtiT3d$E\fFtxN\u001fX1ChrR\u0015".length();
                  var1 = '\b';
                  var7 = -1;
            }

            var10000 = 78;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

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

   private static char[] c(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 15);
      }

      return var10000;
   }

   private static String a(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 121;
            case 1 -> 79;
            case 2 -> 83;
            case 3 -> 114;
            case 4 -> 40;
            case 5 -> 89;
            default -> 15;
         });
      }

      return new String(var10001).intern();
   }
}
