/**
* Copyright (C) 2011-2012 Typesafe Inc. <http://typesafe.com>
*/
package org.deephacks.confit.internal.core.property.typesafe.impl;
import java.io.ObjectStreamException;
import java.io.Serializable;
import org.deephacks.confit.internal.core.property.typesafe.ConfigRenderOptions;
import org.deephacks.confit.internal.core.property.typesafe.ConfigValueType;
import org.deephacks.confit.internal.core.property.typesafe.ConfigOrigin;
final class ConfigString extends AbstractConfigValue implements Serializable {
private static final long serialVersionUID = 2L;
final private String value;
ConfigString(ConfigOrigin origin, String value) {
super(origin);
this.value = value;
}
@Override
public ConfigValueType valueType() {
return ConfigValueType.STRING;
}
@Override
public String unwrapped() {
return value;
}
@Override
String transformToString() {
return value;
}
@Override
protected void render(StringBuilder sb, int indent, ConfigRenderOptions options) {
String rendered;
if (options.getJson())
rendered = ConfigImplUtil.renderJsonString(value);
else
rendered = ConfigImplUtil.renderStringUnquotedIfPossible(value);
sb.append(rendered);
}
@Override
protected ConfigString newCopy(ConfigOrigin origin) {
return new ConfigString(origin, value);
}
// serialization list goes through SerializedConfigValue
private Object writeReplace() throws ObjectStreamException {
return new SerializedConfigValue(this);
}
}