package org.openprovenance.prov.json; import java.lang.reflect.Type; import org.openprovenance.prov.model.BeanTraversal; import org.openprovenance.prov.model.Document; import org.openprovenance.prov.model.ProvFactory; import com.google.gson.JsonElement; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; public class ProvDocumentSerializer implements JsonSerializer<Document> { final ProvFactory pFactory; public ProvDocumentSerializer(ProvFactory pFactory) { this.pFactory=pFactory; } @Override public JsonElement serialize(final Document doc, Type typeOfSrc, JsonSerializationContext context) { JSONConstructor jsonConstructor = new JSONConstructor(pFactory.getName()); BeanTraversal bt = new BeanTraversal(jsonConstructor, pFactory); bt.doAction(doc); Object jsonStructure = jsonConstructor.getJSONStructure(); return context.serialize(jsonStructure); } }