package org.karmaexchange.util;
import static org.junit.Assert.assertEquals;
import static org.karmaexchange.util.TestUtil.DEBUG;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.bind.JAXBException;
import com.sun.jersey.api.json.JSONConfiguration;
import com.sun.jersey.api.json.JSONJAXBContext;
import com.sun.jersey.api.json.JSONMarshaller;
import com.sun.jersey.api.json.JSONUnmarshaller;
public final class JsonValidationTestUtil {
public static <T> void validateJsonConversion(T entity, Class<T> entityClass)
throws JAXBException {
JSONJAXBContext jsonContext = new JSONJAXBContext(
JSONConfiguration.natural().humanReadableFormatting(true).build(),
entityClass);
JSONMarshaller jsonMarshaller = jsonContext.createJSONMarshaller();
StringWriter jsonEntityStringWriter = new StringWriter();
jsonMarshaller.marshallToJSON(entity, jsonEntityStringWriter);
String jsonEntityStr = jsonEntityStringWriter.toString();
if (DEBUG) {
System.out.println("Json:\n" + jsonEntityStr);
}
JSONUnmarshaller jsonUnmarshaller = jsonContext.createJSONUnmarshaller();
T unmarshalledEntity = jsonUnmarshaller.unmarshalFromJSON(
new StringReader(jsonEntityStr),
entityClass);
if (DEBUG) {
System.out.println(entity);
}
assertEquals(entity, unmarshalledEntity);
}
}