mirror of
https://github.com/lightbend/config.git
synced 2025-03-22 07:10:23 +08:00
completely drop "transformer" arg to ConfigObject constructors
If you want to change the transformer, use the transformed() method.
This commit is contained in:
parent
8c00a97243
commit
529b3b1f55
@ -30,6 +30,10 @@ abstract class AbstractConfigObject extends AbstractConfigValue implements
|
|||||||
throw new ConfigException.BugOrBroken("null transformer");
|
throw new ConfigException.BugOrBroken("null transformer");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected AbstractConfigObject(ConfigOrigin origin) {
|
||||||
|
this(origin, ConfigImpl.defaultConfigTransformer());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This looks up the key with no transformation or type conversion of any
|
* This looks up the key with no transformation or type conversion of any
|
||||||
* kind, and returns null if the key is not present.
|
* kind, and returns null if the key is not present.
|
||||||
@ -169,8 +173,7 @@ abstract class AbstractConfigObject extends AbstractConfigValue implements
|
|||||||
List<AbstractConfigValue> stack = new ArrayList<AbstractConfigValue>();
|
List<AbstractConfigValue> stack = new ArrayList<AbstractConfigValue>();
|
||||||
stack.add(this);
|
stack.add(this);
|
||||||
stack.addAll(((Unresolved) other).unmergedValues());
|
stack.addAll(((Unresolved) other).unmergedValues());
|
||||||
return new ConfigDelayedMergeObject(mergeOrigins(stack),
|
return new ConfigDelayedMergeObject(mergeOrigins(stack), stack);
|
||||||
transformer, stack);
|
|
||||||
} else if (other instanceof AbstractConfigObject) {
|
} else if (other instanceof AbstractConfigObject) {
|
||||||
AbstractConfigObject fallback = (AbstractConfigObject) other;
|
AbstractConfigObject fallback = (AbstractConfigObject) other;
|
||||||
if (fallback.isEmpty()) {
|
if (fallback.isEmpty()) {
|
||||||
@ -191,7 +194,7 @@ abstract class AbstractConfigObject extends AbstractConfigValue implements
|
|||||||
merged.put(key, first.withFallback(second));
|
merged.put(key, first.withFallback(second));
|
||||||
}
|
}
|
||||||
return new SimpleConfigObject(mergeOrigins(this, fallback),
|
return new SimpleConfigObject(mergeOrigins(this, fallback),
|
||||||
transformer, merged);
|
merged);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// falling back to a non-object has no effect, we just override
|
// falling back to a non-object has no effect, we just override
|
||||||
@ -266,7 +269,7 @@ abstract class AbstractConfigObject extends AbstractConfigValue implements
|
|||||||
resolved.put(k, peek(k));
|
resolved.put(k, peek(k));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new SimpleConfigObject(origin(), transformer, resolved);
|
return new SimpleConfigObject(origin(), resolved);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,9 +18,8 @@ final class ConfigDelayedMergeObject extends AbstractConfigObject implements
|
|||||||
final private List<AbstractConfigValue> stack;
|
final private List<AbstractConfigValue> stack;
|
||||||
|
|
||||||
ConfigDelayedMergeObject(ConfigOrigin origin,
|
ConfigDelayedMergeObject(ConfigOrigin origin,
|
||||||
ConfigTransformer transformer,
|
|
||||||
List<AbstractConfigValue> stack) {
|
List<AbstractConfigValue> stack) {
|
||||||
super(origin, transformer);
|
super(origin);
|
||||||
this.stack = stack;
|
this.stack = stack;
|
||||||
if (stack.isEmpty())
|
if (stack.isEmpty())
|
||||||
throw new ConfigException.BugOrBroken(
|
throw new ConfigException.BugOrBroken(
|
||||||
@ -57,7 +56,7 @@ final class ConfigDelayedMergeObject extends AbstractConfigObject implements
|
|||||||
else
|
else
|
||||||
newStack.add((AbstractConfigValue) other);
|
newStack.add((AbstractConfigValue) other);
|
||||||
return new ConfigDelayedMergeObject(
|
return new ConfigDelayedMergeObject(
|
||||||
AbstractConfigObject.mergeOrigins(newStack), transformer,
|
AbstractConfigObject.mergeOrigins(newStack),
|
||||||
newStack);
|
newStack);
|
||||||
} else {
|
} else {
|
||||||
// if the other is not an object, there won't be anything
|
// if the other is not an object, there won't be anything
|
||||||
|
@ -128,6 +128,6 @@ public class ConfigImpl {
|
|||||||
new SimpleConfigOrigin("env var " + key), entry.getValue()));
|
new SimpleConfigOrigin("env var " + key), entry.getValue()));
|
||||||
}
|
}
|
||||||
return new SimpleConfigObject(new SimpleConfigOrigin("env variables"),
|
return new SimpleConfigObject(new SimpleConfigOrigin("env variables"),
|
||||||
defaultConfigTransformer(), m);
|
m);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -157,7 +157,6 @@ final class Loader {
|
|||||||
// SimpleConfigObject yet we can get away with it.
|
// SimpleConfigObject yet we can get away with it.
|
||||||
AbstractConfigObject o = new SimpleConfigObject(
|
AbstractConfigObject o = new SimpleConfigObject(
|
||||||
new SimpleConfigOrigin(originPrefix + " " + path),
|
new SimpleConfigOrigin(originPrefix + " " + path),
|
||||||
ConfigImpl.defaultConfigTransformer(),
|
|
||||||
scopes.get(path));
|
scopes.get(path));
|
||||||
String basename = lastElement(path);
|
String basename = lastElement(path);
|
||||||
parent.put(basename, o);
|
parent.put(basename, o);
|
||||||
@ -172,6 +171,6 @@ final class Loader {
|
|||||||
|
|
||||||
// return root config object
|
// return root config object
|
||||||
return new SimpleConfigObject(new SimpleConfigOrigin(originPrefix),
|
return new SimpleConfigObject(new SimpleConfigOrigin(originPrefix),
|
||||||
ConfigImpl.defaultConfigTransformer(), root);
|
root);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -320,7 +320,7 @@ final class Parser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new SimpleConfigObject(objectOrigin,
|
return new SimpleConfigObject(objectOrigin,
|
||||||
ConfigImpl.defaultConfigTransformer(), values);
|
values);
|
||||||
}
|
}
|
||||||
|
|
||||||
private SimpleConfigList parseArray() {
|
private SimpleConfigList parseArray() {
|
||||||
|
@ -20,9 +20,9 @@ final class SimpleConfigObject extends AbstractConfigObject {
|
|||||||
// this map should never be modified - assume immutable
|
// this map should never be modified - assume immutable
|
||||||
final private Map<String, AbstractConfigValue> value;
|
final private Map<String, AbstractConfigValue> value;
|
||||||
|
|
||||||
SimpleConfigObject(ConfigOrigin origin, ConfigTransformer transformer,
|
SimpleConfigObject(ConfigOrigin origin,
|
||||||
Map<String, AbstractConfigValue> value) {
|
Map<String, AbstractConfigValue> value) {
|
||||||
super(origin, transformer);
|
super(origin);
|
||||||
if (value == null)
|
if (value == null)
|
||||||
throw new ConfigException.BugOrBroken(
|
throw new ConfigException.BugOrBroken(
|
||||||
"creating config object with null map");
|
"creating config object with null map");
|
||||||
@ -144,7 +144,6 @@ final class SimpleConfigObject extends AbstractConfigObject {
|
|||||||
|
|
||||||
final static SimpleConfigObject empty() {
|
final static SimpleConfigObject empty() {
|
||||||
return new SimpleConfigObject(new SimpleConfigOrigin("empty config"),
|
return new SimpleConfigObject(new SimpleConfigOrigin("empty config"),
|
||||||
ConfigImpl.defaultConfigTransformer(),
|
|
||||||
Collections.<String, AbstractConfigValue> emptyMap());
|
Collections.<String, AbstractConfigValue> emptyMap());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,9 +60,9 @@ class ConfigValueTest extends TestUtils {
|
|||||||
val aMap = configMap("a" -> 1, "b" -> 2, "c" -> 3)
|
val aMap = configMap("a" -> 1, "b" -> 2, "c" -> 3)
|
||||||
val sameAsAMap = configMap("a" -> 1, "b" -> 2, "c" -> 3)
|
val sameAsAMap = configMap("a" -> 1, "b" -> 2, "c" -> 3)
|
||||||
val bMap = configMap("a" -> 3, "b" -> 4, "c" -> 5)
|
val bMap = configMap("a" -> 3, "b" -> 4, "c" -> 5)
|
||||||
val a = new SimpleConfigObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), aMap)
|
val a = new SimpleConfigObject(fakeOrigin(), aMap)
|
||||||
val sameAsA = new SimpleConfigObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), sameAsAMap)
|
val sameAsA = new SimpleConfigObject(fakeOrigin(), sameAsAMap)
|
||||||
val b = new SimpleConfigObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), bMap)
|
val b = new SimpleConfigObject(fakeOrigin(), bMap)
|
||||||
|
|
||||||
checkEqualObjects(a, a)
|
checkEqualObjects(a, a)
|
||||||
checkEqualObjects(a, sameAsA)
|
checkEqualObjects(a, sameAsA)
|
||||||
@ -111,9 +111,9 @@ class ConfigValueTest extends TestUtils {
|
|||||||
val empty = SimpleConfigObject.empty()
|
val empty = SimpleConfigObject.empty()
|
||||||
val s1 = subst("foo")
|
val s1 = subst("foo")
|
||||||
val s2 = subst("bar")
|
val s2 = subst("bar")
|
||||||
val a = new ConfigDelayedMergeObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), List[AbstractConfigValue](empty, s1, s2).asJava)
|
val a = new ConfigDelayedMergeObject(fakeOrigin(), List[AbstractConfigValue](empty, s1, s2).asJava)
|
||||||
val sameAsA = new ConfigDelayedMergeObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), List[AbstractConfigValue](empty, s1, s2).asJava)
|
val sameAsA = new ConfigDelayedMergeObject(fakeOrigin(), List[AbstractConfigValue](empty, s1, s2).asJava)
|
||||||
val b = new ConfigDelayedMergeObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), List[AbstractConfigValue](empty, s2, s1).asJava)
|
val b = new ConfigDelayedMergeObject(fakeOrigin(), List[AbstractConfigValue](empty, s2, s1).asJava)
|
||||||
|
|
||||||
checkEqualObjects(a, a)
|
checkEqualObjects(a, a)
|
||||||
checkEqualObjects(a, sameAsA)
|
checkEqualObjects(a, sameAsA)
|
||||||
@ -137,7 +137,7 @@ class ConfigValueTest extends TestUtils {
|
|||||||
substInString("b").toString()
|
substInString("b").toString()
|
||||||
val dm = new ConfigDelayedMerge(fakeOrigin(), List[AbstractConfigValue](subst("a"), subst("b")).asJava)
|
val dm = new ConfigDelayedMerge(fakeOrigin(), List[AbstractConfigValue](subst("a"), subst("b")).asJava)
|
||||||
dm.toString()
|
dm.toString()
|
||||||
val dmo = new ConfigDelayedMergeObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), List[AbstractConfigValue](emptyObj, subst("a"), subst("b")).asJava)
|
val dmo = new ConfigDelayedMergeObject(fakeOrigin(), List[AbstractConfigValue](emptyObj, subst("a"), subst("b")).asJava)
|
||||||
dmo.toString()
|
dmo.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,14 +149,14 @@ class ConfigValueTest extends TestUtils {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
def configObjectUnwraps() {
|
def configObjectUnwraps() {
|
||||||
val m = new SimpleConfigObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(),
|
val m = new SimpleConfigObject(fakeOrigin(),
|
||||||
configMap("a" -> 1, "b" -> 2, "c" -> 3))
|
configMap("a" -> 1, "b" -> 2, "c" -> 3))
|
||||||
assertEquals(Map("a" -> 1, "b" -> 2, "c" -> 3), m.unwrapped().asScala)
|
assertEquals(Map("a" -> 1, "b" -> 2, "c" -> 3), m.unwrapped().asScala)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
def configObjectImplementsMap() {
|
def configObjectImplementsMap() {
|
||||||
val m: ConfigObject = new SimpleConfigObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(),
|
val m: ConfigObject = new SimpleConfigObject(fakeOrigin(),
|
||||||
configMap("a" -> 1, "b" -> 2, "c" -> 3))
|
configMap("a" -> 1, "b" -> 2, "c" -> 3))
|
||||||
|
|
||||||
assertEquals(intValue(1), m.get("a"))
|
assertEquals(intValue(1), m.get("a"))
|
||||||
@ -277,8 +277,8 @@ class ConfigValueTest extends TestUtils {
|
|||||||
unresolved { dm.unwrapped() }
|
unresolved { dm.unwrapped() }
|
||||||
|
|
||||||
// ConfigDelayedMergeObject
|
// ConfigDelayedMergeObject
|
||||||
val emptyObj = new SimpleConfigObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), Collections.emptyMap[String, AbstractConfigValue]())
|
val emptyObj = new SimpleConfigObject(fakeOrigin(), Collections.emptyMap[String, AbstractConfigValue]())
|
||||||
val dmo = new ConfigDelayedMergeObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), List[AbstractConfigValue](emptyObj, subst("a"), subst("b")).asJava)
|
val dmo = new ConfigDelayedMergeObject(fakeOrigin(), List[AbstractConfigValue](emptyObj, subst("a"), subst("b")).asJava)
|
||||||
assertEquals(ConfigValueType.OBJECT, dmo.valueType())
|
assertEquals(ConfigValueType.OBJECT, dmo.valueType())
|
||||||
unresolved { dmo.unwrapped() }
|
unresolved { dmo.unwrapped() }
|
||||||
unresolved { dmo.containsKey(null) }
|
unresolved { dmo.containsKey(null) }
|
||||||
|
@ -49,7 +49,7 @@ class JsonTest extends TestUtils {
|
|||||||
case lift.JObject(fields) =>
|
case lift.JObject(fields) =>
|
||||||
val m = new HashMap[String, AbstractConfigValue]()
|
val m = new HashMap[String, AbstractConfigValue]()
|
||||||
fields.foreach({ field => m.put(field.name, fromLift(field.value)) })
|
fields.foreach({ field => m.put(field.name, fromLift(field.value)) })
|
||||||
new SimpleConfigObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), m)
|
new SimpleConfigObject(fakeOrigin(), m)
|
||||||
case lift.JArray(values) =>
|
case lift.JArray(values) =>
|
||||||
new SimpleConfigList(fakeOrigin(), values.map(fromLift(_)).asJava)
|
new SimpleConfigList(fakeOrigin(), values.map(fromLift(_)).asJava)
|
||||||
case lift.JField(name, value) =>
|
case lift.JField(name, value) =>
|
||||||
|
Loading…
Reference in New Issue
Block a user