package com.l7tech.policy.assertion.xml;

import com.l7tech.message.ValidationTarget;
import com.l7tech.objectmodel.migration.Migration;
import com.l7tech.objectmodel.migration.MigrationMappingSelection;
import com.l7tech.objectmodel.migration.PropertyResolver;
import com.l7tech.policy.AssertionResourceInfo;
import com.l7tech.policy.SingleUrlResourceInfo;
import com.l7tech.policy.StaticResourceInfo;
import com.l7tech.policy.assertion.AssertionMetadata;
import com.l7tech.policy.assertion.AssertionNodeNameFactory;
import com.l7tech.policy.assertion.AssertionResourceType;
import com.l7tech.policy.assertion.DefaultAssertionMetadata;
import com.l7tech.policy.assertion.MessageTargetableAssertion;
import com.l7tech.policy.assertion.SetsVariables;
import com.l7tech.policy.assertion.UsesResourceInfo;
import com.l7tech.policy.assertion.UsesVariables;
import com.l7tech.policy.assertion.annotation.RequiresXML;
import com.l7tech.policy.variable.DataType;
import com.l7tech.policy.variable.VariableMetadata;
import com.l7tech.policy.wsp.Java5EnumTypeMapping;
import com.l7tech.policy.wsp.SimpleTypeMappingFinder;
import java.util.Arrays;

@RequiresXML
public class SchemaValidation extends MessageTargetableAssertion implements UsesResourceInfo, UsesVariables, SetsVariables {
   public static final String SCHEMA_FAILURE_VARIABLE;
   private static final String META_INITIALIZED;
   public static final String TOP_SCHEMA_ELNAME;
   private ValidationTarget validationTarget = ValidationTarget.BODY;
   private AssertionResourceInfo resourceInfo = new StaticResourceInfo();
   private static final String baseName;
   static final AssertionNodeNameFactory policyNameFactory;
   static final long serialVersionUID = 2272235658031194581L;
   private static final String[] b;

   public SchemaValidation() {
      super(false);
      this.clearTarget();
   }

   @Deprecated
   public boolean isApplyToArguments() {
      return ValidationTarget.ARGUMENTS == this.validationTarget;
   }

   @Deprecated
   public void setApplyToArguments(boolean var1) {
      this.validationTarget = var1 ? ValidationTarget.ARGUMENTS : ValidationTarget.BODY;
   }

   public ValidationTarget getValidationTarget() {
      return this.validationTarget;
   }

   public void setValidationTarget(ValidationTarget var1) {
      this.validationTarget = var1;
   }

   @Migration(mapName = MigrationMappingSelection.REQUIRED, mapValue = MigrationMappingSelection.NONE, resolver = PropertyResolver.Type.RESOURCE_ENTRY)
   @Override
   public AssertionResourceInfo getResourceInfo() {
      return this.resourceInfo;
   }

   @Override
   public void setResourceInfo(AssertionResourceInfo var1) {
      this.resourceInfo = var1;
   }

   @Override
   protected MessageTargetableAssertion.VariablesSet doGetVariablesSet() {
      MessageTargetableAssertion.VariablesSet var10000 = super.doGetVariablesSet();
      VariableMetadata[] var10001 = new VariableMetadata[1];
      String[] var1 = b;
      var10001[0] = new VariableMetadata(var1[12], false, true, var1[19], false, DataType.STRING);
      return var10000.withVariables(var10001);
   }

   @Override
   protected MessageTargetableAssertion.VariablesUsed doGetVariablesUsed() {
      return super.doGetVariablesUsed()
         .withExpressions(this.resourceInfo.getType() == AssertionResourceType.SINGLE_URL ? ((SingleUrlResourceInfo)this.resourceInfo).getUrl() : null);
   }

   @Override
   public AssertionMetadata meta() {
      DefaultAssertionMetadata var1 = this.defaultMeta();
      if (Boolean.TRUE.equals(var1.get(META_INITIALIZED))) {
         return var1;
      }

      String[] var2 = b;
      var1.put(var2[14], new String[]{var2[8], var2[5]});
      var1.put(var2[20], var2[3]);
      var1.put(var2[0], var2[13]);
      var1.put(var2[11], var2[15]);
      var1.put(var2[16], policyNameFactory);
      var1.put(var2[18], var2[9]);
      var1.put(var2[4], var2[6]);
      var1.put(var2[10], new SimpleTypeMappingFinder(Arrays.asList(new Java5EnumTypeMapping(ValidationTarget.class, var2[17]))));
      var1.put(META_INITIALIZED, Boolean.TRUE);
      return var1;
   }

   static {
      String[] var5 = new String[21];
      int var3 = 0;
      String var2 = "M\u001eP-\u00193e]\u0012L \u0013\u007f\u001aO'\u000f;aL[{\u0003'zFJ\u0013F#\n\u0006Z\u0018K+\u0006;\u0013\u007f\u001aO'\u000f;aL[{\u0003'zFJ\u0013F#\n\u0014Y\tL>\u000e(a@\u001eP\u000f\b.|F\u0015m/\u0006?\u0010]\u0013Q+\n.E[\u0014W+\b.|F\u0015 q6on89}L\u0016Bn=;y@\u001fB:\u00025{\t+Q!\u001b?g]\u0012F=\u0014\u0007\u0016F:\n>t]\u001aj \u0002.|H\u0017J4\u000e>\u0003Q\u0016O:J\u0014N`\u0007maL\u0018K`\b5{Z\u0014O+E;v]\u0012L E\tvA\u001eN/=;y@\u001fB:\u00025{y\tL>\u000e(a@\u001eP\u000f\b.|F\u0015\u0010^\bS\u001d\u001e8aP\u000bF\b\u00024qL\t\u000fY\u001aO+\u001f.pg\u0014G+\"9zG\u000eZ\u0018K+\u0006;;O\u001aJ\"\u001e(pĴ\u0015\u0013W#\u0007dFJ\u0013F#\nzCH\u0017J*\n.|F\u0015\u0003-\n45K\u001e\u0003;\u0018?q\t\u000fLn\u001b(z]\u001e@:K;rH\u0012M=\u001fzaA\u001e\u0003(\u00046yF\fJ \fzaA\tF/\u001f)/\tGV\"Uz)E\u0012\u001dr\tdMd7\u0003\u001e\n(tD\u001eW+\u0019zAH\u0016S+\u00193{NG\f,Uz8\t-B\"\u0002>t]\u001ePn\n6y\t#n\u0002K*t[\u001aN+\u001f?gZ[J K.}L[Q+\u001a/pZ\u000f\u0003:\u0004zpG\bV<\u000ezvF\u0015E!\u00197tG\u0018Fn\u001f55]\u0013Fn89}L\u0016BrD6|\u0017[\u001f\"\u0002d)KE{\n\u0004\t5h\u000fW/\b1f\u0015TApKw5l\u0015P;\u0019?f\t\u000fK/\u001fzaA\u001e\u0003#\u000e)fH\u001cFn\u0018.g\\\u0018W;\u0019?5H\u0015Gn\b5{]\u001eM:K;gL[@!\u0019(pJ\u000f\u001fa\u00073+\tG\f;\u0007d5\u0015TK:\u00066+\u000eY\u001aO+\u001f.po\u0014O*\u000e(f-J\u0014Na\u0007maL\u0018Ka\b5{Z\u0014O+D(pZ\u0014V<\b?f\u0006\u0003N\"\u00183rG\u001aW;\u0019?;N\u0012E\u0015Y\u0014O'\b#[F\u001fF\u0000\n7po\u001a@:\u0004(l\u0010_\u001aO'\u000f;a@\u0014M\u001a\n(rL\u000f\u0019Y\tL>\u000e(a@\u001eP\u000f\b.|F\u0015`\"\n)fG\u001aN+";
      int var4 = "M\u001eP-\u00193e]\u0012L \u0013\u007f\u001aO'\u000f;aL[{\u0003'zFJ\u0013F#\n\u0006Z\u0018K+\u0006;\u0013\u007f\u001aO'\u000f;aL[{\u0003'zFJ\u0013F#\n\u0014Y\tL>\u000e(a@\u001eP\u000f\b.|F\u0015m/\u0006?\u0010]\u0013Q+\n.E[\u0014W+\b.|F\u0015 q6on89}L\u0016Bn=;y@\u001fB:\u00025{\t+Q!\u001b?g]\u0012F=\u0014\u0007\u0016F:\n>t]\u001aj \u0002.|H\u0017J4\u000e>\u0003Q\u0016O:J\u0014N`\u0007maL\u0018K`\b5{Z\u0014O+E;v]\u0012L E\tvA\u001eN/=;y@\u001fB:\u00025{y\tL>\u000e(a@\u001eP\u000f\b.|F\u0015\u0010^\bS\u001d\u001e8aP\u000bF\b\u00024qL\t\u000fY\u001aO+\u001f.pg\u0014G+\"9zG\u000eZ\u0018K+\u0006;;O\u001aJ\"\u001e(pĴ\u0015\u0013W#\u0007dFJ\u0013F#\nzCH\u0017J*\n.|F\u0015\u0003-\n45K\u001e\u0003;\u0018?q\t\u000fLn\u001b(z]\u001e@:K;rH\u0012M=\u001fzaA\u001e\u0003(\u00046yF\fJ \fzaA\tF/\u001f)/\tGV\"Uz)E\u0012\u001dr\tdMd7\u0003\u001e\n(tD\u001eW+\u0019zAH\u0016S+\u00193{NG\f,Uz8\t-B\"\u0002>t]\u001ePn\n6y\t#n\u0002K*t[\u001aN+\u001f?gZ[J K.}L[Q+\u001a/pZ\u000f\u0003:\u0004zpG\bV<\u000ezvF\u0015E!\u00197tG\u0018Fn\u001f55]\u0013Fn89}L\u0016BrD6|\u0017[\u001f\"\u0002d)KE{\n\u0004\t5h\u000fW/\b1f\u0015TApKw5l\u0015P;\u0019?f\t\u000fK/\u001fzaA\u001e\u0003#\u000e)fH\u001cFn\u0018.g\\\u0018W;\u0019?5H\u0015Gn\b5{]\u001eM:K;gL[@!\u0019(pJ\u000f\u001fa\u00073+\tG\f;\u0007d5\u0015TK:\u00066+\u000eY\u001aO+\u001f.po\u0014O*\u000e(f-J\u0014Na\u0007maL\u0018Ka\b5{Z\u0014O+D(pZ\u0014V<\b?f\u0006\u0003N\"\u00183rG\u001aW;\u0019?;N\u0012E\u0015Y\u0014O'\b#[F\u001fF\u0000\n7po\u001a@:\u0004(l\u0010_\u001aO'\u000f;a@\u0014M\u001a\n(rL\u000f\u0019Y\tL>\u000e(a@\u001eP\u000f\b.|F\u0015`\"\n)fG\u001aN+"
         .length();
      char var1 = 11;
      int var7 = -1;

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

         while (true) {
            String var8 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     b = var5;
                     String[] var9 = b;
                     SCHEMA_FAILURE_VARIABLE = b[19];
                     baseName = var9[1];
                     TOP_SCHEMA_ELNAME = var9[2];
                     META_INITIALIZED = SchemaValidation.class.getName() + b[7];
                     policyNameFactory = new b();
                     return;
                  }

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

                  var2 = "c!r\u0012?\u0002\u0002v#s\u001b'\u0011I\tc*u\u0005&-M}'";
                  var4 = "c!r\u0012?\u0002\u0002v#s\u001b'\u0011I\tc*u\u0005&-M}'".length();
                  var1 = 14;
                  var7 = -1;
            }

            var10000 = 11;
            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] ^ 39);
      }

      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 -> 27;
            case 1 -> 73;
            case 2 -> 17;
            case 3 -> 124;
            case 4 -> 89;
            case 5 -> 104;
            default -> 39;
         });
      }

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