package com.l7tech.server.service.resolution;

import com.l7tech.common.mime.NoSuchPartException;
import com.l7tech.gateway.common.audit.AuditFactory;
import com.l7tech.gateway.common.audit.MessageProcessingMessages;
import com.l7tech.gateway.common.service.PublishedService;
import com.l7tech.message.Message;
import com.l7tech.message.SoapKnob;
import com.l7tech.objectmodel.Goid;
import com.l7tech.server.service.ServiceDocumentManager;
import com.l7tech.server.util.AuditingOperationListener;
import com.l7tech.wsdl.Wsdl;
import com.l7tech.xml.soap.SoapUtil;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import javax.wsdl.Binding;
import javax.wsdl.BindingOperation;
import javax.wsdl.extensions.ExtensibilityElement;
import javax.wsdl.extensions.soap.SOAPBinding;
import javax.wsdl.extensions.soap12.SOAP12Binding;
import javax.xml.namespace.QName;
import org.xml.sax.SAXException;

public class SoapOperationResolver extends NameValueServiceResolver<List<QName>> {
   private static final List<List<QName>> b;
   private final ServiceDocumentManager c;
   private static final String[] d;

   public SoapOperationResolver(AuditFactory var1, ServiceDocumentManager var2) {
      super(var1);
      this.c = var2;
   }

   @Override
   protected List<List<QName>> buildTargetValues(PublishedService param1) throws ServiceResolutionException {
      // $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 1
      // 01: invokevirtual com/l7tech/gateway/common/service/PublishedService.isSoap ()Z
      // 04: ifne 1b
      // 07: aload 0
      // 08: getfield com/l7tech/server/service/resolution/SoapOperationResolver.auditor Lcom/l7tech/gateway/common/audit/Audit;
      // 0b: getstatic com/l7tech/gateway/common/audit/MessageProcessingMessages.SR_SOAPOPERATION_NOT_SOAP Lcom/l7tech/gateway/common/audit/Messages$M;
      // 0e: invokeinterface com/l7tech/gateway/common/audit/Audit.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;)V 2
      // 13: getstatic com/l7tech/server/service/resolution/SoapOperationResolver.b Ljava/util/List;
      // 16: areturn
      // 17: invokestatic com/l7tech/server/service/resolution/SoapOperationResolver.c (Lcom/l7tech/server/service/resolution/ServiceResolutionException;)Lcom/l7tech/server/service/resolution/ServiceResolutionException;
      // 1a: athrow
      // 1b: aload 1
      // 1c: invokevirtual com/l7tech/gateway/common/service/PublishedService.parsedWsdl ()Lcom/l7tech/wsdl/Wsdl;
      // 1f: astore 2
      // 20: aload 2
      // 21: ifnonnull 34
      // 24: aload 0
      // 25: getfield com/l7tech/server/service/resolution/SoapOperationResolver.auditor Lcom/l7tech/gateway/common/audit/Audit;
      // 28: getstatic com/l7tech/gateway/common/audit/MessageProcessingMessages.SR_SOAPOPERATION_NO_WSDL Lcom/l7tech/gateway/common/audit/Messages$M;
      // 2b: invokeinterface com/l7tech/gateway/common/audit/Audit.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;)V 2
      // 30: getstatic com/l7tech/server/service/resolution/SoapOperationResolver.b Ljava/util/List;
      // 33: areturn
      // 34: aload 0
      // 35: aload 2
      // 36: aload 1
      // 37: invokevirtual com/l7tech/gateway/common/service/PublishedService.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 3a: invokevirtual com/l7tech/server/service/resolution/SoapOperationResolver.a (Lcom/l7tech/wsdl/Wsdl;Lcom/l7tech/objectmodel/Goid;)Ljava/util/List;
      // 3d: astore 3
      // 3e: aload 3
      // 3f: invokeinterface java/util/List.isEmpty ()Z 1
      // 44: ifeq 6c
      // 47: aload 0
      // 48: getfield com/l7tech/server/service/resolution/SoapOperationResolver.auditor Lcom/l7tech/gateway/common/audit/Audit;
      // 4b: getstatic com/l7tech/gateway/common/audit/MessageProcessingMessages.SR_SOAPOPERATION_NO_QNAMES_AT_ALL Lcom/l7tech/gateway/common/audit/Messages$M;
      // 4e: bipush 2
      // 4f: anewarray 54
      // 52: dup
      // 53: bipush 0
      // 54: aload 1
      // 55: invokevirtual com/l7tech/gateway/common/service/PublishedService.getName ()Ljava/lang/String;
      // 58: aastore
      // 59: dup
      // 5a: bipush 1
      // 5b: aload 1
      // 5c: invokevirtual com/l7tech/gateway/common/service/PublishedService.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 5f: invokestatic com/l7tech/objectmodel/Goid.toString (Lcom/l7tech/objectmodel/Goid;)Ljava/lang/String;
      // 62: aastore
      // 63: invokeinterface com/l7tech/gateway/common/audit/Audit.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;)V 3
      // 68: getstatic com/l7tech/server/service/resolution/SoapOperationResolver.b Ljava/util/List;
      // 6b: areturn
      // 6c: aload 3
      // 6d: areturn
      // 6e: astore 2
      // 6f: aload 0
      // 70: getfield com/l7tech/server/service/resolution/SoapOperationResolver.logger Ljava/util/logging/Logger;
      // 73: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level;
      // 76: getstatic com/l7tech/server/service/resolution/SoapOperationResolver.d [Ljava/lang/String;
      // 79: bipush 3
      // 7a: aaload
      // 7b: bipush 2
      // 7c: anewarray 269
      // 7f: dup
      // 80: bipush 0
      // 81: aload 1
      // 82: invokevirtual com/l7tech/gateway/common/service/PublishedService.getName ()Ljava/lang/String;
      // 85: aastore
      // 86: dup
      // 87: bipush 1
      // 88: aload 1
      // 89: invokevirtual com/l7tech/gateway/common/service/PublishedService.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 8c: aastore
      // 8d: invokestatic java/text/MessageFormat.format (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
      // 90: aload 2
      // 91: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
      // 94: getstatic com/l7tech/server/service/resolution/SoapOperationResolver.b Ljava/util/List;
      // 97: areturn
      // try (0 -> 8): 52 javax/wsdl/WSDLException
      // try (0 -> 9): 9 com/l7tech/server/service/resolution/ServiceResolutionException
      // try (11 -> 21): 52 javax/wsdl/WSDLException
      // try (22 -> 49): 52 javax/wsdl/WSDLException
      // try (50 -> 51): 52 javax/wsdl/WSDLException
   }

   private List<List<QName>> a(Wsdl var1, Goid var2) {
      ArrayList var3 = new ArrayList();
      Collection var4 = var1.getBindings();
      if (var4 != null && !var4.isEmpty()) {
         AuditingOperationListener var5 = new AuditingOperationListener(this.auditor);
         l var6 = new l(this, var1, var2);

         for (Binding var8 : var4) {
            String var9 = null;
            List var10 = var8.getExtensibilityElements();
            SOAPBinding var11 = null;
            SOAP12Binding var12 = null;

            for (ExtensibilityElement var14 : var10) {
               if (var14 instanceof SOAPBinding) {
                  var11 = (SOAPBinding)var14;
                  var9 = var11.getStyle();
               } else if (var14 instanceof SOAP12Binding) {
                  var12 = (SOAP12Binding)var14;
                  var9 = var12.getStyle();
               }
            }

            if (var11 != null || var12 != null) {
               for (BindingOperation var15 : var8.getBindingOperations()) {
                  Set var16 = SoapUtil.getOperationPayloadQNames(var15, var9, var5, var6);
                  if (var16 != null) {
                     var3.addAll(var16);
                  }
               }
            }
         }

         return var3;
      } else {
         this.auditor.logAndAudit(MessageProcessingMessages.SR_SOAPOPERATION_WSDL_NO_BINDINGS);
         return b;
      }
   }

   protected List<QName> getRequestValue(Message var1) throws ServiceResolutionException {
      SoapKnob var2 = (SoapKnob)var1.getKnob(SoapKnob.class);

      try {
         QName[] var3 = var2.getPayloadNames();

         for (QName var7 : var3) {
            this.auditor.logAndAudit(MessageProcessingMessages.SR_SOAPOPERATION_FOUND_QNAME, new String[]{var7.toString()});
         }

         return Arrays.asList(var3);
      } catch (IOException var9) {
         String[] var12 = d;
         throw new ServiceResolutionException(var12[2], var9);
      } catch (SAXException var10) {
         String[] var8 = d;
         throw new ServiceResolutionException(var8[1], var10);
      } catch (NoSuchPartException var11) {
         throw new ServiceResolutionException(d[1], var11);
      }
   }

   @Override
   public boolean isApplicableToMessage(Message var1) throws ServiceResolutionException {
      try {
         return var1.isSoap();
      } catch (Exception var3) {
         throw new ServiceResolutionException(d[0], var3);
      }
   }

   @Override
   public boolean usesMessageContent() {
      return true;
   }

   static {
      String[] var5 = new String[4];
      int var3 = 0;
      String var2 = "Sn\bw\u0007@\u0000roIq\u000eQEtm\u0000{\u000e\u0005Wne\u001d}\u000eW\u0000ke\u001af\nBE&i\u001a58jaV&Sn\bw\u0007@\u0000roIe\nWSc \u0019t\u0012IOgdIp\u0007@Mcn\u001d5:kAke\u001a";
      int var4 = "Sn\bw\u0007@\u0000roIq\u000eQEtm\u0000{\u000e\u0005Wne\u001d}\u000eW\u0000ke\u001af\nBE&i\u001a58jaV&Sn\bw\u0007@\u0000roIe\nWSc \u0019t\u0012IOgdIp\u0007@Mcn\u001d5:kAke\u001a"
         .length();
      char var1 = '+';
      int var7 = -1;

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

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

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

                  var2 = "Ro\tv\u0006A\u0001snHd\u000bVRb!\u0018u\u0013HNfeHq\u0006ALbo\u001c4;j@jd\u001b+Ro\tv\u0006A\u0001snHd\u000bVRb!?G.h\u0001an\u001a4\u0011\u0014\\'r\rf\u001cMBb!@7\u0011\u0015\\.";
                  var4 = "Ro\tv\u0006A\u0001snHd\u000bVRb!\u0018u\u0013HNfeHq\u0006ALbo\u001c4;j@jd\u001b+Ro\tv\u0006A\u0001snHd\u000bVRb!?G.h\u0001an\u001a4\u0011\u0014\\'r\rf\u001cMBb!@7\u0011\u0015\\."
                     .length();
                  var1 = '&';
                  var7 = -1;
            }

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

   private static ServiceResolutionException c(ServiceResolutionException var0) {
      return var0;
   }

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

      return var10000;
   }

   private static String b(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 -> 104;
            case 1 -> 110;
            case 2 -> 7;
            case 3 -> 123;
            case 4 -> 5;
            case 5 -> 75;
            default -> 78;
         });
      }

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