package com.l7tech.external.assertions.gatewaymanagement.server.rest.resource.impl;

import com.l7tech.external.assertions.gatewaymanagement.server.ResourceFactory;
import com.l7tech.external.assertions.gatewaymanagement.server.rest.factories.impl.AssertionSecurityZoneAPIResourceFactory;
import com.l7tech.external.assertions.gatewaymanagement.server.rest.resource.ChoiceParam;
import com.l7tech.external.assertions.gatewaymanagement.server.rest.resource.RestEntityResourceUtils;
import com.l7tech.external.assertions.gatewaymanagement.server.rest.resource.URLAccessible;
import com.l7tech.external.assertions.gatewaymanagement.server.rest.transformers.impl.AssertionSecurityZoneTransformer;
import com.l7tech.gateway.api.AssertionSecurityZoneMO;
import com.l7tech.gateway.api.Item;
import com.l7tech.gateway.api.ItemsList;
import com.l7tech.gateway.api.Link;
import com.l7tech.gateway.api.ManagedObjectFactory;
import com.l7tech.gateway.rest.SpringBean;
import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.Goid;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.PUT;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.UriBuilder;
import jakarta.ws.rs.core.UriInfo;
import jakarta.ws.rs.ext.Provider;
import java.util.ArrayList;
import java.util.List;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

@Provider
@Path("1.0/assertionSecurityZones")
public class AssertionSecurityZoneResource implements URLAccessible<AssertionSecurityZoneMO> {
   protected static final String activeConnectors_URI;
   private AssertionSecurityZoneAPIResourceFactory a;
   private AssertionSecurityZoneTransformer b;
   @Context
   protected UriInfo uriInfo;
   private static final String[] c;

   @SpringBean
   public void setFactory(AssertionSecurityZoneAPIResourceFactory var1) {
      this.a = var1;
   }

   @SpringBean
   public void setTransformer(AssertionSecurityZoneTransformer var1) {
      this.b = var1;
   }

   @NotNull
   @Override
   public String getResourceType() {
      try {
         String var10000 = EntityType.ASSERTION_ACCESS.toString();
         if (var10000 == null) {
            a(0);
         }

         return var10000;
      } catch (IllegalStateException var1) {
         throw a(var1);
      }
   }

   @GET
   public ItemsList<AssertionSecurityZoneMO> list(
      @QueryParam("sort") @ChoiceParam({"name", "securityZone.id"}) String param1,
      @QueryParam("order") @ChoiceParam({"asc", "desc"}) String param2,
      @QueryParam("name") List<String> param3,
      @QueryParam("securityZone.id") List<Goid> param4
   ) {
      // $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: aload 2
      // 01: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/rest/resource/ParameterValidationUtils.convertSortOrder (Ljava/lang/String;)Ljava/lang/Boolean;
      // 04: astore 5
      // 06: aload 0
      // 07: getfield com/l7tech/external/assertions/gatewaymanagement/server/rest/resource/impl/AssertionSecurityZoneResource.uriInfo Ljakarta/ws/rs/core/UriInfo;
      // 0a: invokeinterface jakarta/ws/rs/core/UriInfo.getQueryParameters ()Ljakarta/ws/rs/core/MultivaluedMap; 1
      // 0f: bipush 2
      // 10: anewarray 183
      // 13: dup
      // 14: bipush 0
      // 15: getstatic com/l7tech/external/assertions/gatewaymanagement/server/rest/resource/impl/AssertionSecurityZoneResource.c [Ljava/lang/String;
      // 18: astore 7
      // 1a: aload 7
      // 1c: bipush 1
      // 1d: aaload
      // 1e: aastore
      // 1f: dup
      // 20: bipush 1
      // 21: aload 7
      // 23: bipush 14
      // 25: aaload
      // 26: aastore
      // 27: invokestatic java/util/Arrays.asList ([Ljava/lang/Object;)Ljava/util/List;
      // 2a: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/rest/resource/ParameterValidationUtils.validateNoOtherQueryParamsIncludeDefaults (Ljakarta/ws/rs/core/MultivaluedMap;Ljava/util/List;)V
      // 2d: invokestatic com/l7tech/util/CollectionUtils$MapBuilder.builder ()Lcom/l7tech/util/CollectionUtils$MapBuilder;
      // 30: astore 6
      // 32: aload 3
      // 33: ifnull 59
      // 36: aload 3
      // 37: invokeinterface java/util/List.isEmpty ()Z 1
      // 3c: ifne 59
      // 3f: goto 46
      // 42: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/rest/resource/impl/AssertionSecurityZoneResource.a (Ljava/lang/IllegalStateException;)Ljava/lang/IllegalStateException;
      // 45: athrow
      // 46: aload 6
      // 48: getstatic com/l7tech/external/assertions/gatewaymanagement/server/rest/resource/impl/AssertionSecurityZoneResource.c [Ljava/lang/String;
      // 4b: bipush 3
      // 4c: aaload
      // 4d: aload 3
      // 4e: invokevirtual com/l7tech/util/CollectionUtils$MapBuilder.put (Ljava/lang/Object;Ljava/lang/Object;)Lcom/l7tech/util/CollectionUtils$MapBuilder;
      // 51: pop
      // 52: goto 59
      // 55: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/rest/resource/impl/AssertionSecurityZoneResource.a (Ljava/lang/IllegalStateException;)Ljava/lang/IllegalStateException;
      // 58: athrow
      // 59: aload 4
      // 5b: ifnull 84
      // 5e: aload 4
      // 60: invokeinterface java/util/List.isEmpty ()Z 1
      // 65: ifne 84
      // 68: goto 6f
      // 6b: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/rest/resource/impl/AssertionSecurityZoneResource.a (Ljava/lang/IllegalStateException;)Ljava/lang/IllegalStateException;
      // 6e: athrow
      // 6f: aload 6
      // 71: getstatic com/l7tech/external/assertions/gatewaymanagement/server/rest/resource/impl/AssertionSecurityZoneResource.c [Ljava/lang/String;
      // 74: bipush 18
      // 76: aaload
      // 77: aload 4
      // 79: invokevirtual com/l7tech/util/CollectionUtils$MapBuilder.put (Ljava/lang/Object;Ljava/lang/Object;)Lcom/l7tech/util/CollectionUtils$MapBuilder;
      // 7c: pop
      // 7d: goto 84
      // 80: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/rest/resource/impl/AssertionSecurityZoneResource.a (Ljava/lang/IllegalStateException;)Ljava/lang/IllegalStateException;
      // 83: athrow
      // 84: aload 0
      // 85: getfield com/l7tech/external/assertions/gatewaymanagement/server/rest/resource/impl/AssertionSecurityZoneResource.a Lcom/l7tech/external/assertions/gatewaymanagement/server/rest/factories/impl/AssertionSecurityZoneAPIResourceFactory;
      // 88: aload 1
      // 89: aload 5
      // 8b: aload 6
      // 8d: invokevirtual com/l7tech/util/CollectionUtils$MapBuilder.map ()Ljava/util/Map;
      // 90: invokevirtual com/l7tech/external/assertions/gatewaymanagement/server/rest/factories/impl/AssertionSecurityZoneAPIResourceFactory.listResources (Ljava/lang/String;Ljava/lang/Boolean;Ljava/util/Map;)Ljava/util/List;
      // 93: aload 0
      // 94: getfield com/l7tech/external/assertions/gatewaymanagement/server/rest/resource/impl/AssertionSecurityZoneResource.b Lcom/l7tech/external/assertions/gatewaymanagement/server/rest/transformers/impl/AssertionSecurityZoneTransformer;
      // 97: aload 0
      // 98: aload 0
      // 99: getfield com/l7tech/external/assertions/gatewaymanagement/server/rest/resource/impl/AssertionSecurityZoneResource.uriInfo Ljakarta/ws/rs/core/UriInfo;
      // 9c: invokeinterface jakarta/ws/rs/core/UriInfo.getRequestUri ()Ljava/net/URI; 1
      // a1: invokevirtual java/net/URI.toString ()Ljava/lang/String;
      // a4: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/rest/resource/RestEntityResourceUtils.createItemsList (Ljava/util/List;Lcom/l7tech/external/assertions/gatewaymanagement/server/rest/transformers/APITransformer;Lcom/l7tech/external/assertions/gatewaymanagement/server/rest/resource/URLAccessible;Ljava/lang/String;)Lcom/l7tech/gateway/api/ItemsList;
      // a7: areturn
      // try (26 -> 31): 32 java/lang/IllegalStateException
      // try (28 -> 41): 42 java/lang/IllegalStateException
      // try (44 -> 49): 50 java/lang/IllegalStateException
      // try (46 -> 59): 60 java/lang/IllegalStateException
   }

   @GET
   @Path("{name}")
   public Item<AssertionSecurityZoneMO> get(@PathParam("name") String var1) throws ResourceFactory.ResourceNotFoundException {
      AssertionSecurityZoneMO var2 = this.a.getResourceByName(var1);
      return RestEntityResourceUtils.createGetResponseItem(var2, this.b, this);
   }

   @GET
   @Path("template")
   public Item<AssertionSecurityZoneMO> template() {
      AssertionSecurityZoneMO var1 = ManagedObjectFactory.createAssertionAccess();
      String[] var2 = c;
      var1.setName(var2[19]);
      var1.setSecurityZoneId(var2[8]);
      return RestEntityResourceUtils.createTemplateItem(var1, this, this.uriInfo.getRequestUri().toString());
   }

   @PUT
   @Path("{name}")
   public Response update(AssertionSecurityZoneMO var1, @PathParam("name") String var2) throws ResourceFactory.ResourceNotFoundException, ResourceFactory.InvalidResourceException {
      AssertionSecurityZoneMO var3 = this.a.updateResourceByName(var2, var1);
      return RestEntityResourceUtils.createCreateOrUpdatedResponseItem(var3, this.b, this, false);
   }

   @NotNull
   public Link getLink(@NotNull AssertionSecurityZoneMO var1) {
      try {
         if (var1 == null) {
            a(1);
         }
      } catch (IllegalStateException var3) {
         throw a(var3);
      }

      try {
         Link var10000 = ManagedObjectFactory.createLink(Link.LINK_REL_SELF, this.getUrl(var1));
         if (var10000 == null) {
            a(2);
         }

         return var10000;
      } catch (IllegalStateException var2) {
         throw a(var2);
      }
   }

   @NotNull
   public List<Link> getRelatedLinks(@Nullable AssertionSecurityZoneMO var1) {
      ArrayList var2 = new ArrayList();

      try {
         var2.add(ManagedObjectFactory.createLink(Link.LINK_REL_TEMPLATE, this.a(c[4])));
         var2.add(ManagedObjectFactory.createLink(Link.LINK_REL_LIST, this.a((String)null)));
         if (var2 == null) {
            a(3);
         }

         return var2;
      } catch (IllegalStateException var3) {
         throw a(var3);
      }
   }

   @NotNull
   public String getUrl(@NotNull AssertionSecurityZoneMO var1) {
      try {
         if (var1 == null) {
            a(4);
         }
      } catch (IllegalStateException var3) {
         throw a(var3);
      }

      try {
         String var10000 = this.a(var1.getName());
         if (var10000 == null) {
            a(5);
         }

         return var10000;
      } catch (IllegalStateException var2) {
         throw a(var2);
      }
   }

   @NotNull
   @Override
   public String getUrl(@NotNull EntityHeader var1) {
      try {
         if (var1 == null) {
            a(6);
         }
      } catch (IllegalStateException var3) {
         throw a(var3);
      }

      try {
         String var10000 = this.a(var1.getName());
         if (var10000 == null) {
            a(7);
         }

         return var10000;
      } catch (IllegalStateException var2) {
         throw a(var2);
      }
   }

   private String a(@Nullable String var1) {
      UriBuilder var2 = this.uriInfo.getBaseUriBuilder().path(this.getClass());

      try {
         if (var1 != null) {
            var2.path(var1);
         }
      } catch (IllegalStateException var3) {
         throw a(var3);
      }

      return var2.build(new Object[0]).toString();
   }

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

   static {
      String[] var5 = new String[20];
      int var3 = 0;
      String var2 = "e;y\u0000t)1r\u0004y?g\n>V,m\u001al><c~l\u0000s{\u0012Y1~!t7>7.k\u001d`67c;xO&~!0~e\t!~!9{yOl.!c~d\u0000u{0r~d\u001am7\u0004y?g\n\bc;g\u001fm:&rht1g@ml&r=b@d#&r,d\u000emt3d-o\u001du2=y-%\b`/7`?s\u0002`53p;g\no/}d;x\u0019d)}e;y\u001b.)7d1\u007f\u001db>}~3z\u0003.\u001a!d;x\u001bh4<D;i\u001as2&n\u0004e\u0001d\t7d1\u007f\u001db>\u0006p;~:s7\u0007p;~#h59\u000eD;i\u001as2&n\u0004e\u0001d\u0012\u0016\u000fp;~=d(=b,i\nU\"\"r\u0016v-y\ns/;x0Y\nb. ~*s5n57d*W\u0010e\u001bO.>{~g\nu3=s~/\u001c/~!73\u007f\u001cu{<x**\u001dd/'e0*\u0001t7>\u0006\u007f;k\u000bd)\u000fp;~=d73c;n#h59d\u000fd;i\u001as2&n\u0004e\u0001du;s\u0006p;~:s7\u0007p;~#h59ht1g@ml&r=b@d#&r,d\u000emt3d-o\u001du2=y-%\b`/7`?s\u0002`53p;g\no/}d;x\u0019d)}e;y\u001b.)7d1\u007f\u001db>}~3z\u0003.\u001a!d;x\u001bh4<D;i\u001as2&n\u0004e\u0001d\t7d1\u007f\u001db>";
      int var4 = "e;y\u0000t)1r\u0004y?g\n>V,m\u001al><c~l\u0000s{\u0012Y1~!t7>7.k\u001d`67c;xO&~!0~e\t!~!9{yOl.!c~d\u0000u{0r~d\u001am7\u0004y?g\n\bc;g\u001fm:&rht1g@ml&r=b@d#&r,d\u000emt3d-o\u001du2=y-%\b`/7`?s\u0002`53p;g\no/}d;x\u0019d)}e;y\u001b.)7d1\u007f\u001db>}~3z\u0003.\u001a!d;x\u001bh4<D;i\u001as2&n\u0004e\u0001d\t7d1\u007f\u001db>\u0006p;~:s7\u0007p;~#h59\u000eD;i\u001as2&n\u0004e\u0001d\u0012\u0016\u000fp;~=d(=b,i\nU\"\"r\u0016v-y\ns/;x0Y\nb. ~*s5n57d*W\u0010e\u001bO.>{~g\nu3=s~/\u001c/~!73\u007f\u001cu{<x**\u001dd/'e0*\u0001t7>\u0006\u007f;k\u000bd)\u000fp;~=d73c;n#h59d\u000fd;i\u001as2&n\u0004e\u0001du;s\u0006p;~:s7\u0007p;~#h59ht1g@ml&r=b@d#&r,d\u000emt3d-o\u001du2=y-%\b`/7`?s\u0002`53p;g\no/}d;x\u0019d)}e;y\u001b.)7d1\u007f\u001db>}~3z\u0003.\u001a!d;x\u001bh4<D;i\u001as2&n\u0004e\u0001d\t7d1\u007f\u001db>"
         .length();
      char var1 = '\b';
      int var7 = -1;

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

         while (true) {
            String var8 = a(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     c = var5;
                     activeConnectors_URI = c[10];
                     return;
                  }

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

                  var2 = "!~,_6wc+A D!0~6\u001d\u0006~\"Z(\u007fc7Z<Y!lc;t!y!}b r;S\u001eqy7";
                  var4 = "!~,_6wc+A D!0~6\u001d\u0006~\"Z(\u007fc7Z<Y!lc;t!y!}b r;S\u001eqy7".length();
                  var1 = 15;
                  var7 = -1;
            }

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

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

      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 -> 64;
            case 1 -> 9;
            case 2 -> 93;
            case 3 -> 56;
            case 4 -> 86;
            case 5 -> 12;
            default -> 5;
         });
      }

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