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

import com.l7tech.external.assertions.gatewaygraphql.EntityTypeInfo;
import com.l7tech.external.assertions.gatewaygraphql.server.data.EntityMappingInstruction;
import com.l7tech.external.assertions.gatewaygraphql.server.data.FederatedGroupDTO;
import com.l7tech.external.assertions.gatewaygraphql.server.data.FederatedIdpDTO;
import com.l7tech.external.assertions.gatewaygraphql.server.data.FederatedUserDTO;
import com.l7tech.external.assertions.gatewaygraphql.server.data.TrustedCertDTO;
import com.l7tech.external.assertions.gatewaygraphql.server.resolver.entityref.EntityRefResolver;
import com.l7tech.external.assertions.gatewaygraphql.server.resolver.entityref.EntityRefUtil;
import com.l7tech.external.assertions.gatewaygraphql.server.resolver.query.IdpResolverHelper;
import com.l7tech.external.assertions.gatewaygraphql.server.util.AssertionLocalBeanFactory;
import com.l7tech.identity.IdentityProviderType;
import com.l7tech.identity.fed.FederatedIdentityProviderConfig;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.PersistentEntity;
import com.l7tech.server.identity.fed.FederatedIdentityProvider;
import graphql.schema.DataFetchingEnvironment;
import java.util.List;
import java.util.logging.Logger;
import lombok.Generated;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.transaction.PlatformTransactionManager;

public class FederatedIdpxMutationResolver
   extends IdpMutationResolver<FederatedIdentityProvider, FederatedIdentityProviderConfig, FederatedIdpDTO, FederatedIdpDTO.FederatedIdpInput> {
   @Generated
   private static final Logger b;
   private final FederatedIdpxUserMutationResolver c;
   private final FederatedIdpxGroupMutationResolver d;
   private EntityRefResolver e;
   private static final String[] g;

   public FederatedIdpxMutationResolver(PlatformTransactionManager var1, BeanFactory var2, AssertionLocalBeanFactory var3) {
      super(EntityTypeInfo.FEDERATED_IDPX, var1, var2, var3.getRequired(IdpResolverHelper.class), IdentityProviderType.FEDERATED);
      IdpResolverHelper var4 = var3.getRequired(IdpResolverHelper.class);
      this.c = new FederatedIdpxUserMutationResolver(var1, var2, var4);
      this.d = new FederatedIdpxGroupMutationResolver(var1, var2, var4);
   }

   @Override
   protected Logger getLogger() {
      return b;
   }

   public FederatedIdpDTO.FederatedIdpsPayload setFederatedIdps(List<FederatedIdpDTO.FederatedIdpInput> var1, DataFetchingEnvironment var2) {
      FederatedIdpDTO.FederatedIdpsPayload var3 = new FederatedIdpDTO.FederatedIdpsPayload();

      try {
         this.transformNoDefEntityMappings(var1, var2);
         if (var1.isEmpty()) {
            return var3;
         }
      } catch (IllegalStateException var4) {
         throw a(var4);
      }

      return this.execute(var2, (var3x, var4x) -> {
         var1.forEach(var4xx -> this.doUpsertSilently(var4xx, var3x, var3, var4x));
         return var3;
      });
   }

   public FederatedIdpDTO.FederatedIdpsPayload deleteFederatedIdps(List<String> var1, DataFetchingEnvironment var2) {
      FederatedIdpDTO.FederatedIdpsPayload var3 = new FederatedIdpDTO.FederatedIdpsPayload();

      try {
         if (var1.isEmpty()) {
            return var3;
         }
      } catch (IllegalStateException var4) {
         throw a(var4);
      }

      return this.execute(var2, (var3x, var4x) -> {
         var1.forEach(var4xx -> this.doDeleteSilently(var4xx, var3x, var3, var4x));
         return var3;
      });
   }

   public FederatedUserDTO.FederatedUsersPayload setFederatedUsers(List<FederatedUserDTO.FederatedUserInput> var1, DataFetchingEnvironment var2) {
      return this.c.setFipUsers(var1, var2);
   }

   public FederatedUserDTO.FederatedUsersPayload deleteFederatedUsers(String var1, List<String> var2, DataFetchingEnvironment var3) {
      return this.c.deleteFipUsers(var1, var2, var3);
   }

   public FederatedGroupDTO.FederatedGroupsPayload setFederatedGroups(List<FederatedGroupDTO.FederatedGroupInput> var1, DataFetchingEnvironment var2) {
      return this.d.setFipGroups(var1, var2);
   }

   public FederatedGroupDTO.FederatedGroupsPayload deleteFederatedGroups(String var1, List<String> var2, DataFetchingEnvironment var3) {
      return this.d.deleteFipGroups(var1, var2, var3);
   }

   protected FederatedIdentityProviderConfig toEntity(FederatedIdpDTO.FederatedIdpInput var1) {
      return new FederatedIdentityProviderConfig();
   }

   protected FederatedIdpDTO toEntityDTO(FederatedIdentityProviderConfig var1) {
      return new FederatedIdpDTO(var1, this.idpHelper);
   }

   protected FederatedIdpDTO.FederatedIdpInput toEntityInput(EntityMappingInstruction var1) {
      FederatedIdpDTO.FederatedIdpInput var2 = new FederatedIdpDTO.FederatedIdpInput();
      var2.setName(var1.getIdentityValue());
      return var2;
   }

   protected void setEntity(FederatedIdpDTO.FederatedIdpInput var1, FederatedIdentityProviderConfig var2) {
      var2.setName(var1.getName());
      var2.setSamlSupported(var1.isSupportsSAML());
      var2.setX509Supported(var1.isSupportsX509());
      var2.setCertificateValidationType(var1.getCertValidation().innerValue());
      if (var1.getTrustedCertNames() != null) {
         EntityRefResolver var3 = this.a();
         var2.setTrustedCertGoids(var1.getTrustedCertNames().stream().map(var3::toEntity).map(var0 -> ((PersistentEntity)var0).getGoid()).toArray(Goid[]::new));
      } else {
         try {
            if (var1.getTrustedCerts() != null) {
               var2.setTrustedCertGoids(this.a(var1.getTrustedCerts()).toArray(Goid[]::new));
            }
         } catch (IllegalStateException var4) {
            throw a(var4);
         }
      }
   }

   protected FederatedIdentityProviderConfig doFind(FederatedIdpDTO.FederatedIdpInput var1) throws FindException {
      return this.doFindBy(var1.getName());
   }

   private List<Goid> a(List<TrustedCertDTO.TrustedCertInput> param1) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: new java/util/ArrayList
      // 03: dup
      // 04: invokespecial java/util/ArrayList.<init> ()V
      // 07: astore 2
      // 08: new java/util/concurrent/atomic/AtomicBoolean
      // 0b: dup
      // 0c: invokespecial java/util/concurrent/atomic/AtomicBoolean.<init> ()V
      // 0f: astore 3
      // 10: aload 1
      // 11: invokeinterface java/util/List.iterator ()Ljava/util/Iterator; 1
      // 16: astore 4
      // 18: aload 4
      // 1a: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 1f: ifeq ac
      // 22: aload 4
      // 24: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 29: checkcast com/l7tech/external/assertions/gatewaygraphql/server/data/TrustedCertDTO$TrustedCertInput
      // 2c: astore 5
      // 2e: aload 3
      // 2f: bipush 0
      // 30: invokevirtual java/util/concurrent/atomic/AtomicBoolean.set (Z)V
      // 33: aload 0
      // 34: getfield com/l7tech/external/assertions/gatewaygraphql/server/resolver/mutation/FederatedIdpxMutationResolver.idpHelper Lcom/l7tech/external/assertions/gatewaygraphql/server/resolver/query/IdpResolverHelper;
      // 37: aload 5
      // 39: invokevirtual com/l7tech/external/assertions/gatewaygraphql/server/data/TrustedCertDTO$TrustedCertInput.getDBFriendlyThumbprint ()Ljava/lang/String;
      // 3c: invokevirtual com/l7tech/external/assertions/gatewaygraphql/server/resolver/query/IdpResolverHelper.certsForThumbprint (Ljava/lang/String;)Ljava/util/List;
      // 3f: aload 3
      // 40: aload 2
      // 41: invokedynamic accept (Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/List;)Ljava/util/function/Consumer; bsm=java/lang/invoke/LambdaMetafactory.metafactory (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; args=[ (Ljava/lang/Object;)V, com/l7tech/external/assertions/gatewaygraphql/server/resolver/mutation/FederatedIdpxMutationResolver.lambda$resolveCerts$7 (Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/List;Lcom/l7tech/security/cert/TrustedCert;)V, (Lcom/l7tech/security/cert/TrustedCert;)V ]
      // 46: invokeinterface java/util/List.forEach (Ljava/util/function/Consumer;)V 2
      // 4b: aload 3
      // 4c: invokevirtual java/util/concurrent/atomic/AtomicBoolean.get ()Z
      // 4f: ifne 86
      // 52: aload 5
      // 54: invokevirtual com/l7tech/external/assertions/gatewaygraphql/server/data/TrustedCertDTO$TrustedCertInput.getSubjectDn ()Ljava/lang/String;
      // 57: invokestatic com/l7tech/external/assertions/gatewaygraphql/server/util/Util.isNotEmpty (Ljava/lang/String;)Z
      // 5a: ifeq 86
      // 5d: goto 64
      // 60: invokestatic com/l7tech/external/assertions/gatewaygraphql/server/resolver/mutation/FederatedIdpxMutationResolver.a (Ljava/lang/IllegalStateException;)Ljava/lang/IllegalStateException;
      // 63: athrow
      // 64: aload 0
      // 65: getfield com/l7tech/external/assertions/gatewaygraphql/server/resolver/mutation/FederatedIdpxMutationResolver.idpHelper Lcom/l7tech/external/assertions/gatewaygraphql/server/resolver/query/IdpResolverHelper;
      // 68: aload 5
      // 6a: invokevirtual com/l7tech/external/assertions/gatewaygraphql/server/data/TrustedCertDTO$TrustedCertInput.getSubjectDn ()Ljava/lang/String;
      // 6d: invokevirtual com/l7tech/external/assertions/gatewaygraphql/server/resolver/query/IdpResolverHelper.certsForSubjectDn (Ljava/lang/String;)Ljava/util/Collection;
      // 70: aload 0
      // 71: aload 3
      // 72: aload 5
      // 74: aload 2
      // 75: invokedynamic accept (Lcom/l7tech/external/assertions/gatewaygraphql/server/resolver/mutation/FederatedIdpxMutationResolver;Ljava/util/concurrent/atomic/AtomicBoolean;Lcom/l7tech/external/assertions/gatewaygraphql/server/data/TrustedCertDTO$TrustedCertInput;Ljava/util/List;)Ljava/util/function/Consumer; bsm=java/lang/invoke/LambdaMetafactory.metafactory (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; args=[ (Ljava/lang/Object;)V, com/l7tech/external/assertions/gatewaygraphql/server/resolver/mutation/FederatedIdpxMutationResolver.lambda$resolveCerts$8 (Ljava/util/concurrent/atomic/AtomicBoolean;Lcom/l7tech/external/assertions/gatewaygraphql/server/data/TrustedCertDTO$TrustedCertInput;Ljava/util/List;Lcom/l7tech/security/cert/TrustedCert;)V, (Lcom/l7tech/security/cert/TrustedCert;)V ]
      // 7a: invokeinterface java/util/Collection.forEach (Ljava/util/function/Consumer;)V 2
      // 7f: goto 86
      // 82: invokestatic com/l7tech/external/assertions/gatewaygraphql/server/resolver/mutation/FederatedIdpxMutationResolver.a (Ljava/lang/IllegalStateException;)Ljava/lang/IllegalStateException;
      // 85: athrow
      // 86: aload 3
      // 87: invokevirtual java/util/concurrent/atomic/AtomicBoolean.get ()Z
      // 8a: ifne a9
      // 8d: new java/lang/IllegalStateException
      // 90: dup
      // 91: aload 5
      // 93: invokevirtual com/l7tech/external/assertions/gatewaygraphql/server/data/TrustedCertDTO$TrustedCertInput.getThumbprintSha1 ()Ljava/lang/String;
      // 96: getstatic com/l7tech/external/assertions/gatewaygraphql/server/resolver/mutation/FederatedIdpxMutationResolver.g [Ljava/lang/String;
      // 99: bipush 1
      // 9a: aaload
      // 9b: swap
      // 9c: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // a1: invokespecial java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
      // a4: athrow
      // a5: invokestatic com/l7tech/external/assertions/gatewaygraphql/server/resolver/mutation/FederatedIdpxMutationResolver.a (Ljava/lang/IllegalStateException;)Ljava/lang/IllegalStateException;
      // a8: athrow
      // a9: goto 18
      // ac: aload 2
      // ad: areturn
      // try (18 -> 37): 38 java/lang/IllegalStateException
      // try (33 -> 51): 52 java/lang/IllegalStateException
      // try (54 -> 68): 68 java/lang/IllegalStateException
   }

   private EntityRefResolver a() {
      try {
         if (this.e == null) {
            this.e = EntityRefUtil.getRefResolver(EntityTypeInfo.TRUSTED_CERT);
         }
      } catch (IllegalStateException var1) {
         throw a(var1);
      }

      return this.e;
   }

   static {
      String[] var5 = new String[2];
      int var3 = 0;
      String var2 = "Oy\u0003;B\u001e\u0014|z\u0002<VR\u001c)u\u0013'RMYoy\u0004uUK\u001bcs\u0015!bPDr&\u000b-]d\u0003&R[\u001dJs\u0004!\u0006W\n)x\u0019!\u0006X\u0016|x\u0012uQW\ra6\u0002=SS\u001byd\u001f;Rm\u0011h'K";
      int var4 = "Oy\u0003;B\u001e\u0014|z\u0002<VR\u001c)u\u0013'RMYoy\u0004uUK\u001bcs\u0015!bPDr&\u000b-]d\u0003&R[\u001dJs\u0004!\u0006W\n)x\u0019!\u0006X\u0016|x\u0012uQW\ra6\u0002=SS\u001byd\u001f;Rm\u0011h'K"
         .length();
      char var1 = '&';
      int var0 = -1;

      while (true) {
         String var10002 = c(58, b(var2.substring(++var0, var0 + var1)));
         byte var10001 = -1;
         var5[var3++] = var10002;
         if ((var0 += var1) >= var4) {
            g = var5;
            b = Logger.getLogger(FederatedIdpxMutationResolver.class.getName());
            return;
         }

         var1 = var2.charAt(var0);
      }
   }

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

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

      return var10000;
   }

   private static String c(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 -> 51;
            case 1 -> 44;
            case 2 -> 76;
            case 3 -> 111;
            case 4 -> 28;
            case 5 -> 4;
            default -> 67;
         });
      }

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