package com.sequenceiq.cloudbreak.converter;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import com.sequenceiq.cloudbreak.TestException;
import com.sequenceiq.cloudbreak.util.JsonUtil;
public abstract class AbstractJsonConverterTest<S> extends AbstractConverterTest {
private List<String> defaultSkippedFields = Arrays.asList("id", "owner", "account");
public S getRequest(String jsonFilePath) {
return readJsonFile(jsonFilePath, getRequestClass());
}
public abstract Class<S> getRequestClass();
@Override
public void assertAllFieldsNotNull(Object obj) {
super.assertAllFieldsNotNull(obj, defaultSkippedFields);
}
@Override
public void assertAllFieldsNotNull(Object object, List<String> skippedFields) {
List<String> newFields = new ArrayList<>();
newFields.addAll(defaultSkippedFields);
newFields.addAll(skippedFields);
super.assertAllFieldsNotNull(object, newFields);
}
private S readJsonFile(String jsonPath, Class<S> clazz) {
try {
String classPackage = getClass().getPackage().getName().replaceAll("\\.", "/");
Resource resource = new ClassPathResource(classPackage + "/" + jsonPath);
BufferedReader fileReader = new BufferedReader(
new FileReader(resource.getFile()));
return JsonUtil.readValue(fileReader, clazz);
} catch (IOException e) {
throw new TestException(e);
}
}
}