package com.l7tech.external.assertions.gatewaymanagement.server;

import com.l7tech.gateway.api.impl.VersionComment;
import com.l7tech.gateway.common.security.rbac.OperationType;
import com.l7tech.gateway.common.service.PublishedService;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.ObjectModelException;
import com.l7tech.policy.PolicyVersion;
import com.l7tech.util.Eithers;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.Eithers.E2;
import java.util.Map;

class c4
   implements ResourceFactorySupport.TransactionalCallback<E2<ResourceFactory.ResourceNotFoundException, ResourceFactory.InvalidResourceException, String>> {
   final Map val$selectorMap;
   final VersionComment val$resource;
   final ServiceResourceFactory this$0;
   private static final String a;

   c4(ServiceResourceFactory var1, Map var2, VersionComment var3) {
      this.this$0 = var1;
      this.val$selectorMap = var2;
      this.val$resource = var3;
   }

   public E2<ResourceFactory.ResourceNotFoundException, ResourceFactory.InvalidResourceException, String> execute() throws ObjectModelException {
      try {
         PublishedService var1 = this.this$0.selectEntity(this.val$selectorMap);
         this.this$0.checkPermitted(OperationType.READ, null, var1);
         this.this$0.u.checkPolicyAssertionAccess(var1.getPolicy());
         PolicyVersion var2 = null;
         if (this.val$resource.getVersionNumber() != null) {
            var2 = this.this$0.x.findPolicyVersionForPolicy(var1.getPolicy().getGoid(), this.val$resource.getVersionNumber().intValue());
         } else {
            var2 = this.this$0.x.findActiveVersionForPolicy(var1.getPolicy().getGoid());
         }

         try {
            if (var2 == null) {
               throw new ResourceFactory.InvalidResourceException(
                  ResourceFactory.InvalidResourceException.ExceptionType.INVALID_VALUES, a + this.val$resource.getVersionNumber()
               );
            }
         } catch (FindException var3) {
            throw a(var3);
         }

         this.this$0.checkPermitted(OperationType.UPDATE, null, var2);
         var2.setName(this.val$resource.getComment());
         this.this$0.validate(var2);
         this.this$0.x.update(var2);
         return Eithers.right2(var2.getName());
      } catch (FindException var4) {
         return Eithers.left2_1(new ResourceFactory.ResourceNotFoundException(ExceptionUtils.getMessage(var4), var4));
      } catch (ResourceFactory.ResourceNotFoundException var5) {
         return Eithers.left2_1(var5);
      } catch (ResourceFactory.InvalidResourceException var6) {
         return Eithers.left2_2(var6);
      }
   }

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

   static {
      String var10002 = a(115, a(":Z\t*c\u000eMLQ\u0014-*\u0007L\u0019Q\u001fy"));
      byte var10001 = -1;
      a = var10002;
   }

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

      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 -> 31;
            case 1 -> 76;
            case 2 -> 8;
            case 3 -> 42;
            case 4 -> 121;
            case 5 -> 18;
            default -> 80;
         });
      }

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