package com.l7tech.server.util;

import com.l7tech.gateway.common.cluster.ClusterProperty;
import com.l7tech.objectmodel.DeleteException;
import com.l7tech.server.upgrade.FatalUpgradeException;
import com.l7tech.server.upgrade.NonfatalUpgradeException;
import com.l7tech.server.upgrade.UpgradeTask;
import com.l7tech.util.ExceptionUtils;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallbackWithoutResult;

class ac extends TransactionCallbackWithoutResult {
   final ClusterProperty val$propToDelete;
   final UpgradeTask val$task;
   final NonfatalUpgradeException[] val$enonfatal;
   final FatalUpgradeException[] val$efatal;
   final GatewaySanityChecker this$0;
   private static final String[] a;

   ac(GatewaySanityChecker var1, ClusterProperty var2, UpgradeTask var3, NonfatalUpgradeException[] var4, FatalUpgradeException[] var5) {
      this.this$0 = var1;
      this.val$propToDelete = var2;
      this.val$task = var3;
      this.val$enonfatal = var4;
      this.val$efatal = var5;
   }

   // $VF: Could not verify finally blocks. A semaphore variable has been added to preserve control flow.
   // 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!)
   protected void doInTransactionWithoutResult(TransactionStatus var1) {
      boolean var2 = false;
      boolean var13 = false /* VF: Semaphore variable */;

      label112: {
         label113: {
            label114: {
               try {
                  try {
                     var13 = true;
                     if (this.val$propToDelete != null) {
                        this.this$0.d.delete(this.val$propToDelete);
                     }
                  } catch (NonfatalUpgradeException var16) {
                     throw a(var16);
                  }

                  this.val$task.upgrade(this.this$0.getApplicationContext());
                  var2 = true;
                  var13 = false;
                  break label112;
               } catch (NonfatalUpgradeException var17) {
                  this.val$enonfatal[0] = var17;
                  var1.setRollbackOnly();
                  var13 = false;
               } catch (FatalUpgradeException var18) {
                  this.val$efatal[0] = var18;
                  var1.setRollbackOnly();
                  var13 = false;
                  break label114;
               } catch (DeleteException var19) {
                  FatalUpgradeException[] var10000 = this.val$efatal;
                  String var10004 = this.val$propToDelete.getName();
                  String var10005 = ExceptionUtils.getMessage(var19);
                  String[] var5 = a;
                  var10000[0] = new FatalUpgradeException(var5[1] + var10004 + var5[0] + var10005, var19);
                  var1.setRollbackOnly();
                  var13 = false;
                  break label113;
               } finally {
                  if (var13) {
                     try {
                        if (!var2) {
                           var1.setRollbackOnly();
                        }
                     } catch (NonfatalUpgradeException var15) {
                        throw a(var15);
                     }
                  }
               }

               if (!var2) {
                  var1.setRollbackOnly();
               }

               return;
            }

            if (!var2) {
               var1.setRollbackOnly();
            }

            return;
         }

         if (!var2) {
            var1.setRollbackOnly();
         }

         return;
      }

      try {
         if (!var2) {
            var1.setRollbackOnly();
         }
      } catch (NonfatalUpgradeException var14) {
         throw a(var14);
      }
   }

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

   static {
      String[] var5 = new String[2];
      int var3 = 0;
      String var2 = "}\u0001(\u0012O\\\r[\u0000y3N\u001d\u000bR\t<3D\u001d\u001aG\u0002+&EXOC\u0004*,\u0001M\u001dX\u0015<5UDU\u0017";
      int var4 = "}\u0001(\u0012O\\\r[\u0000y3N\u001d\u000bR\t<3D\u001d\u001aG\u0002+&EXOC\u0004*,\u0001M\u001dX\u0015<5UDU\u0017".length();
      char var1 = 2;
      int var0 = -1;

      while (true) {
         String var10002 = a(21, a(var2.substring(++var0, var0 + var1)));
         byte var10001 = -1;
         var5[var3++] = var10002;
         if ((var0 += var1) >= var4) {
            a = var5;
            return;
         }

         var1 = var2.charAt(var0);
      }
   }

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

      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 -> 82;
            case 1 -> 52;
            case 2 -> 40;
            case 3 -> 122;
            case 4 -> 34;
            case 5 -> 112;
            default -> 76;
         });
      }

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