All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.contentful.java.cda.ResourceDeserializer Maven / Gradle / Ivy

package com.contentful.java.cda;

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;
import java.util.Collections;

import static com.contentful.java.cda.CDAType.ASSET;
import static com.contentful.java.cda.CDAType.ENTRY;
import static com.contentful.java.cda.Constants.LOCALE;
import static com.contentful.java.cda.Util.classForType;

final class ResourceDeserializer implements JsonDeserializer {
  @Override public CDAResource deserialize(JsonElement json, Type classType,
      JsonDeserializationContext context) throws JsonParseException {
    CDAType cdaType = extractType(json);
    CDAResource result = context.deserialize(json, classForType(cdaType));
    if (ASSET.equals(cdaType) || ENTRY.equals(cdaType)) {
      LocalizedResource localized = (LocalizedResource) result;
      if (localized.fields == null) {
        localized.fields = Collections.emptyMap();
      }
    }
    return result;
  }

  private CDAType extractType(JsonElement json) {
    String type = json.getAsJsonObject().get("sys").getAsJsonObject()
        .get("type")
        .getAsString();

    return CDAType.valueOf(type.toUpperCase(LOCALE));
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy