package com.kbs.kbsintranett;

import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import java.lang.reflect.Type;

public class ConditionalLogicAdapter implements JsonDeserializer<GravityField.ConditionalLogic> {
    @Override
    public GravityField.ConditionalLogic deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
        // Hvis feltet er en streng (f.eks tom streng ""), returner null
        if (json.isJsonPrimitive() && json.getAsJsonPrimitive().isString()) {
            return null;
        }

        // Hvis det er et objekt, bruk standard deserialisering
        if (json.isJsonObject()) {
            // Vi må manuelt deserialisere for å unngå uendelig løkke hvis vi bare kaller context.deserialize på samme type
            // Enkleste måte er å la Gson gjøre jobben på innholdet
            return new com.google.gson.Gson().fromJson(json, GravityField.ConditionalLogic.class);
        }

        return null;
    }
}