package org.axway.grapes.server.core.reports;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.axway.grapes.commons.datamodel.Artifact;
import org.axway.grapes.commons.datamodel.Dependency;
import java.io.IOException;
public class DependencyReportSerializer extends JsonSerializer<DependencyReport>{
@Override
public void serialize(final DependencyReport report, final JsonGenerator json, final SerializerProvider serializer) throws IOException {
json.writeStartArray();
for(Artifact target: report.getDependencyTargets()){
json.writeStartObject();
json.writeStringField("groupId", target.getGroupId());
json.writeStringField("artifactId", target.getArtifactId());
json.writeStringField("lastVersion", report.getLastVersion(target));
json.writeFieldName("occurences");
json.writeStartArray();
for(String version: report.getVersions(target)){
json.writeStartObject();
json.writeStringField("version", version);
json.writeFieldName("sources");
json.writeStartArray();
for(Dependency dep: report.getDependencies(target, version)){
json.writeStartObject();
json.writeStringField("scope", dep.getScope().toString());
json.writeStringField("gavc", dep.getSourceName());
json.writeEndObject();
}
json.writeEndArray();
json.writeEndObject();
}
json.writeEndArray();
json.writeEndObject();
}
json.writeEndArray();
json.flush();
}
}