package org.limewire.setting;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Properties;
public class PropertiesSetting extends AbstractSetting<Properties> {
private Properties value;
PropertiesSetting(Properties defaultProps, Properties props, String key,
Properties defaultValue) {
super(defaultProps, props, key, toString(defaultValue));
}
@Override
protected void loadValue(String value) {
this.value = fromString(value);
}
public Properties get() {
return value;
}
public void set(Properties properties) {
value = properties;
super.setValueInternal(toString(properties));
}
static String toString(Properties props) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
props.store(out, "props");
return new String(out.toByteArray(), "UTF-8");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
static Properties fromString(String value) {
Properties props = new Properties();
try {
ByteArrayInputStream in = new ByteArrayInputStream(value.getBytes("UTF-8"));
props.load(in);
return props;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}