package com.airlock.iam.common.infrastructure.jackson;

import com.airlock.iam.base.misc.data.OptionalString;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;

public class OptionalStringSerializer extends JsonSerializer<OptionalString> {
   public void serialize(OptionalString value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {
      if (value.hasValue()) {
         if (value.value() == null) {
            gen.writeNull();
         } else {
            gen.writeString(value.value());
         }
      }
   }

   public boolean isEmpty(SerializerProvider provider, OptionalString value) {
      return !value.hasValue();
   }

   public Class<OptionalString> handledType() {
      return OptionalString.class;
   }
}
