package com.l7tech.policy.code.serializer;

import com.fasterxml.jackson.core.JsonGenerator;
import com.l7tech.policy.code.PolicyCoderUtil;
import com.l7tech.policy.code.config.BeanTypeConfig;
import com.l7tech.policy.code.config.FieldTypeConfig;
import com.l7tech.policy.code.config.PolicyCodeConfig;
import java.io.IOException;
import java.lang.reflect.Method;

public class FieldSerializer {
   private final PolicyCodeConfig a;
   private final FieldSerializationWriter b;

   public FieldSerializer(PolicyCodeConfig var1) {
      this.a = var1;
      this.b = new FieldSerializationWriter(var1);
   }

   public void serializePrimitive(Object var1, BeanTypeConfig var2, FieldTypeConfig var3, JsonGenerator var4) {
      try {
         boolean var5 = this.a(var1, var2, var3, var2.getExternalName(), var4);

         try {
            if (!var5) {
               var4.writeObjectFieldStart(var2.getExternalName());
               var4.writeEndObject();
            }
         } catch (RuntimeException var6) {
            throw a(var6);
         }
      } catch (RuntimeException var7) {
         throw var7;
      } catch (Exception var8) {
         throw new AssertionSerializerException(PolicyCoderUtil.formatSerializeError(var2, var3), var8);
      }
   }

   public void serialize(Object var1, BeanTypeConfig var2, FieldTypeConfig var3, JsonGenerator var4) {
      try {
         if (!var3.isIgnored()) {
            this.a(var1, var2, var3, var3.getExternalName(), var4);
         }
      } catch (RuntimeException var6) {
         throw var6;
      } catch (Exception var7) {
         throw new AssertionSerializerException(PolicyCoderUtil.formatSerializeError(var2, var3), var7);
      }
   }

   private boolean a(Object param1, BeanTypeConfig param2, FieldTypeConfig param3, String param4, JsonGenerator param5) throws IOException {
      // $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: invokevirtual com/l7tech/policy/code/config/BeanTypeConfig.hasPrototype ()Z
      // 04: ifeq 17
      // 07: aload 0
      // 08: aload 2
      // 09: invokevirtual com/l7tech/policy/code/config/BeanTypeConfig.getNormalizedPrototype ()Ljava/lang/Object;
      // 0c: aload 3
      // 0d: invokevirtual com/l7tech/policy/code/serializer/FieldSerializer.a (Ljava/lang/Object;Lcom/l7tech/policy/code/config/FieldTypeConfig;)Ljava/lang/Object;
      // 10: goto 18
      // 13: invokestatic com/l7tech/policy/code/serializer/FieldSerializer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 16: athrow
      // 17: aconst_null
      // 18: astore 6
      // 1a: aload 0
      // 1b: aload 1
      // 1c: aload 3
      // 1d: invokevirtual com/l7tech/policy/code/serializer/FieldSerializer.a (Ljava/lang/Object;Lcom/l7tech/policy/code/config/FieldTypeConfig;)Ljava/lang/Object;
      // 20: astore 7
      // 22: aload 7
      // 24: ifnonnull 53
      // 27: aload 6
      // 29: ifnonnull 44
      // 2c: goto 33
      // 2f: invokestatic com/l7tech/policy/code/serializer/FieldSerializer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 32: athrow
      // 33: aload 0
      // 34: getfield com/l7tech/policy/code/serializer/FieldSerializer.a Lcom/l7tech/policy/code/config/PolicyCodeConfig;
      // 37: invokevirtual com/l7tech/policy/code/config/PolicyCodeConfig.isSerializeDefaultFields ()Z
      // 3a: ifeq 51
      // 3d: goto 44
      // 40: invokestatic com/l7tech/policy/code/serializer/FieldSerializer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 43: athrow
      // 44: aload 5
      // 46: aload 4
      // 48: invokevirtual com/fasterxml/jackson/core/JsonGenerator.writeNullField (Ljava/lang/String;)V
      // 4b: bipush 1
      // 4c: ireturn
      // 4d: invokestatic com/l7tech/policy/code/serializer/FieldSerializer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 50: athrow
      // 51: bipush 0
      // 52: ireturn
      // 53: aload 0
      // 54: getfield com/l7tech/policy/code/serializer/FieldSerializer.a Lcom/l7tech/policy/code/config/PolicyCodeConfig;
      // 57: invokevirtual com/l7tech/policy/code/config/PolicyCodeConfig.isNotSerializeDefaultFields ()Z
      // 5a: ifeq 74
      // 5d: aload 7
      // 5f: aload 6
      // 61: invokevirtual java/lang/Object.equals (Ljava/lang/Object;)Z
      // 64: ifeq 74
      // 67: goto 6e
      // 6a: invokestatic com/l7tech/policy/code/serializer/FieldSerializer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 6d: athrow
      // 6e: bipush 0
      // 6f: ireturn
      // 70: invokestatic com/l7tech/policy/code/serializer/FieldSerializer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 73: athrow
      // 74: aload 3
      // 75: invokevirtual com/l7tech/policy/code/config/FieldTypeConfig.getTransformer ()Lcom/l7tech/policy/code/transformer/FieldTransformer;
      // 78: ifnull 91
      // 7b: aload 3
      // 7c: invokevirtual com/l7tech/policy/code/config/FieldTypeConfig.getTransformer ()Lcom/l7tech/policy/code/transformer/FieldTransformer;
      // 7f: aload 7
      // 81: invokevirtual com/l7tech/policy/code/transformer/FieldTransformer.transformToSerialize (Ljava/lang/Object;)Ljava/lang/Object;
      // 84: astore 7
      // 86: aload 7
      // 88: ifnonnull 91
      // 8b: bipush 0
      // 8c: ireturn
      // 8d: invokestatic com/l7tech/policy/code/serializer/FieldSerializer.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 90: athrow
      // 91: aload 0
      // 92: getfield com/l7tech/policy/code/serializer/FieldSerializer.b Lcom/l7tech/policy/code/serializer/FieldSerializationWriter;
      // 95: aload 4
      // 97: aload 7
      // 99: aload 2
      // 9a: aload 3
      // 9b: aload 5
      // 9d: invokevirtual com/l7tech/policy/code/serializer/FieldSerializationWriter.writeField (Ljava/lang/String;Ljava/lang/Object;Lcom/l7tech/policy/code/config/BeanTypeConfig;Lcom/l7tech/policy/code/config/FieldTypeConfig;Lcom/fasterxml/jackson/core/JsonGenerator;)V
      // a0: bipush 1
      // a1: ireturn
      // try (0 -> 9): 9 java/io/IOException
      // try (18 -> 22): 23 java/io/IOException
      // try (20 -> 29): 30 java/io/IOException
      // try (25 -> 37): 37 java/io/IOException
      // try (41 -> 49): 50 java/io/IOException
      // try (45 -> 54): 54 java/io/IOException
      // try (64 -> 68): 68 java/io/IOException
   }

   private Object a(Object var1, FieldTypeConfig var2) throws IOException {
      try {
         Method var3 = var2.getGetterMethod();

         try {
            if (var1 != null) {
               return var3.invoke(var1);
            }
         } catch (Exception var4) {
            throw a(var4);
         }

         return null;
      } catch (Exception var5) {
         throw new IOException(var5);
      }
   }

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