package de.twenty11.skysail.server.ext.osgi.monitor.agent.config;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Collections;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
import de.twenty11.skysail.server.ext.osgi.monitor.agent.descriptors.CallbackDescriptor;
/**
* Zugriff auf die Konfiguration.
*
*/
public class JsonConfig {
private static final Logger logger = LoggerFactory.getLogger(JsonConfig.class);
ObjectMapper mapper = new ObjectMapper();
private ObjectWriter writer = mapper.writer().withDefaultPrettyPrinter();
public List<CallbackDescriptor> readConfig(String filename) {
try {
InputStream stream = getClass().getResourceAsStream(filename);
return mapper.readValue(stream, new TypeReference<List<CallbackDescriptor>>() {
});
} catch (Exception ioe) {
logger.error("problem reading file '{}' from jar", filename);
ioe.printStackTrace();
return Collections.emptyList();
}
}
public void writeConfig(List<CallbackDescriptor> callbacks, String filename) {
PrintWriter printWriter = null;
try {
String json = writer.writeValueAsString(callbacks);
printWriter = new PrintWriter(filename);
printWriter.println(json);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (printWriter != null) {
printWriter.close();
}
}
}
}