package cf.spring;
import org.springframework.util.PropertiesPersister;
import org.yaml.snakeyaml.Yaml;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
import java.util.Map;
import java.util.Properties;
/**
* @author Mike Heath
* @deprecated Use @{link YamlPropertySource} instead.
*/
public class YamlPropertiesPersister implements PropertiesPersister {
@Override
public void load(Properties props, InputStream is) throws IOException {
try (Reader reader = new InputStreamReader(is)) {
load(props, reader);
}
}
@Override
@SuppressWarnings("unchecked")
public void load(Properties props, Reader reader) throws IOException {
Yaml yaml = new Yaml();
Map<String, Object> map = (Map<String, Object>) yaml.load(reader);
mapProperties(props, map, "");
}
@SuppressWarnings("unchecked")
protected void mapProperties(Properties props, Map<String, Object> map, String prefix) {
for (Map.Entry<String, Object> entry : map.entrySet()) {
final String key = prefix + entry.getKey();
final Object val = entry.getValue();
if (val instanceof Map) {
mapProperties(props, (Map<String, Object>) val, key + ".");
} else {
props.put(key, val.toString());
}
}
}
@Override
public void store(Properties props, OutputStream os, String header) throws IOException {
throw new UnsupportedOperationException("Storing properties is not supported.");
}
@Override
public void store(Properties props, Writer writer, String header) throws IOException {
throw new UnsupportedOperationException("Storing properties is not supported.");
}
@Override
public void loadFromXml(Properties props, InputStream is) throws IOException {
throw new UnsupportedOperationException("Was XML properties ever even a good idea?");
}
@Override
public void storeToXml(Properties props, OutputStream os, String header) throws IOException {
throw new UnsupportedOperationException("Was XML properties ever even a good idea?");
}
@Override
public void storeToXml(Properties props, OutputStream os, String header, String encoding) throws IOException {
throw new UnsupportedOperationException("Was XML properties ever even a good idea?");
}
}