package com.l7tech.policy.code.serializer;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.code.config.AssertionTypeConfig;
import com.l7tech.policy.code.config.PolicyCodeConfig;
import java.io.IOException;

public class AssertionSerializer<T extends Assertion> extends BasicAssertionSerializer<T> {
   public AssertionSerializer(PolicyCodeConfig var1) {
      super(var1);
   }

   @Override
   protected void serializeAssertion(T var1, AssertionTypeConfig var2, JsonGenerator var3, SerializerProvider var4) throws IOException {
      FieldSerializer var5 = this.codeConfig.getFieldSerializer();

      try {
         if (this.canSerializeAsPrimitive((T)var1, var2)) {
            var5.serializePrimitive(var1, var2, var2.getDefaultFieldTypeConfig(), var3);
            return;
         }
      } catch (IOException var6) {
         throw a(var6);
      }

      var3.writeObjectFieldStart(var2.getExternalName());
      this.serializeAssertionProperties((T)var1, var2, var3);
      var2.getOrderedFields().forEach(var4x -> var5.serialize(var1, var2, var4x, var3));
      var3.writeEndObject();
   }

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