package io.delphi.qa.auto.awsmfrw.common_baby.gson;

import com.google.gson.*;
import io.delphi.qa.auto.awsmfrw.common_baby.IsaCommonMethods;
import org.joda.time.DateTime;

import java.lang.reflect.Type;

// this class can't be static
public class GsonJodaDateTimeAdapter
    implements JsonSerializer<DateTime>, JsonDeserializer<DateTime>, IsaCommonMethods {

  @Override
  public synchronized JsonElement serialize(
      DateTime dt, Type type, JsonSerializationContext jsonSerializationContext) {
    String s =
        IsaCommonMethods.printDateTimeText(
            dt, String.format("yyyy-MM-dd HH:mm:ss.msZ", envConfig.timeZone()));
    return new JsonPrimitive(s);
  }

  @Override
  public synchronized DateTime deserialize(
      JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) {
    return DateTime.parse(jsonElement.toString());
  }
}
