package org.fenixedu.bennu.core.api.json;
import java.util.Locale;
import org.fenixedu.bennu.core.annotation.DefaultJsonAdapter;
import org.fenixedu.bennu.core.json.JsonBuilder;
import org.fenixedu.bennu.core.json.JsonCreator;
import org.fenixedu.bennu.core.json.JsonUtils;
import org.fenixedu.bennu.core.json.JsonViewer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
@DefaultJsonAdapter(Locale.class)
public class LocaleJsonAdapter implements JsonViewer<Locale>, JsonCreator<Locale> {
@Override
public JsonElement view(Locale locale, JsonBuilder ctx) {
JsonObject object = new JsonObject();
object.addProperty("tag", locale.toLanguageTag());
object.addProperty("displayName", locale.getDisplayName(locale));
object.addProperty("lang", locale.getLanguage());
return object;
}
@Override
public Locale create(JsonElement json, JsonBuilder ctx) {
if (json.isJsonPrimitive()) {
return new Locale.Builder().setLanguageTag(json.getAsString()).build();
} else if (json.isJsonObject()) {
JsonObject object = json.getAsJsonObject();
return new Locale.Builder().setLanguageTag(JsonUtils.getString(object, "tag")).build();
}
return null;
}
}