package com.perforce.spark.repository;
import java.lang.reflect.Type;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.perforce.spark.artifact.ArtifactType;
import com.perforce.spark.site.SiteType;
public class AbstractRepoAdapter implements JsonDeserializer<RepoInterface> {
@Override
public RepoInterface deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
String typeStr = jsonObject.get("type").getAsString();
ArtifactType type = ArtifactType.parse(typeStr);
String siteStr = jsonObject.get("site").getAsString();
SiteType site = SiteType.parse(siteStr);
Class<?> clazz = RepoFactory.getClass(site, type);
return context.deserialize(json, clazz);
}
}