package org.axway.grapes.commons.utils;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.axway.grapes.commons.datamodel.Artifact;
import org.axway.grapes.commons.datamodel.License;
import org.axway.grapes.commons.datamodel.Module;
import org.axway.grapes.commons.datamodel.Organization;
import java.io.IOException;
import java.util.Map;
/**
* Json Utils
*
* <P> Utility class that ease Json serialization/un-serialization
*
* @author jdcoffre
*/
public final class JsonUtils {
// Utility class, though no constructor
private JsonUtils() {}
/**
* Json content type id
*/
public static final String JSON_CONTENT_TYPE = "application/json";
/**
* Serialize an object with Json
* @param obj Object
* @return String
* @throws IOException
*/
public static String serialize(final Object obj) throws IOException {
final ObjectMapper mapper = new ObjectMapper();
mapper.disable(MapperFeature.USE_GETTERS_AS_SETTERS);
return mapper.writeValueAsString(obj);
}
/**
* Un-serialize a Json into Organization
* @param organization String
* @return Organization
* @throws IOException
*/
public static Organization unserializeOrganization(final String organization) throws IOException {
final ObjectMapper mapper = new ObjectMapper();
mapper.disable(MapperFeature.USE_GETTERS_AS_SETTERS);
return mapper.readValue(organization, Organization.class);
}
/**
* Un-serialize a Json into Module
* @param module String
* @return Module
* @throws IOException
*/
public static Module unserializeModule(final String module) throws IOException {
final ObjectMapper mapper = new ObjectMapper();
mapper.disable(MapperFeature.USE_GETTERS_AS_SETTERS);
return mapper.readValue(module, Module.class);
}
/**
* Un-serialize a Json into BuildInfo
* @param buildInfo String
* @return Map<String,String>
* @throws IOException
*/
public static Map<String,String> unserializeBuildInfo(final String buildInfo) throws IOException {
final ObjectMapper mapper = new ObjectMapper();
mapper.disable(MapperFeature.USE_GETTERS_AS_SETTERS);
return mapper.readValue(buildInfo, new TypeReference<Map<String, Object>>(){});
}
/**
* Un-serialize a report with Json
* @param artifact String
* @return Artifact
* @throws IOException
*/
public static Artifact unserializeArtifact(final String artifact) throws IOException {
final ObjectMapper mapper = new ObjectMapper();
mapper.disable(MapperFeature.USE_GETTERS_AS_SETTERS);
return mapper.readValue(artifact, Artifact.class);
}
/**
* Un-serialize a report with Json
* @param license String
* @return License
* @throws IOException
*/
public static License unserializeLicense(final String license) throws IOException {
final ObjectMapper mapper = new ObjectMapper();
mapper.disable(MapperFeature.USE_GETTERS_AS_SETTERS);
return mapper.readValue(license, License.class);
}
}