completely drop "transformer" arg to ConfigObject constructors

If you want to change the transformer, use the transformed() method.
This commit is contained in:
Havoc Pennington 2011-11-11 17:28:00 -05:00
parent 8c00a97243
commit 529b3b1f55
8 changed files with 26 additions and 26 deletions

View File

@ -30,6 +30,10 @@ abstract class AbstractConfigObject extends AbstractConfigValue implements
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
* 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>();
stack.add(this);
stack.addAll(((Unresolved) other).unmergedValues());
return new ConfigDelayedMergeObject(mergeOrigins(stack),
transformer, stack);
return new ConfigDelayedMergeObject(mergeOrigins(stack), stack);
} else if (other instanceof AbstractConfigObject) {
AbstractConfigObject fallback = (AbstractConfigObject) other;
if (fallback.isEmpty()) {
@ -191,7 +194,7 @@ abstract class AbstractConfigObject extends AbstractConfigValue implements
merged.put(key, first.withFallback(second));
}
return new SimpleConfigObject(mergeOrigins(this, fallback),
transformer, merged);
merged);
}
} else {
// 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));
}
}
return new SimpleConfigObject(origin(), transformer, resolved);
return new SimpleConfigObject(origin(), resolved);
}
}

View File

@ -18,9 +18,8 @@ final class ConfigDelayedMergeObject extends AbstractConfigObject implements
final private List<AbstractConfigValue> stack;
ConfigDelayedMergeObject(ConfigOrigin origin,
ConfigTransformer transformer,
List<AbstractConfigValue> stack) {
super(origin, transformer);
super(origin);
this.stack = stack;
if (stack.isEmpty())
throw new ConfigException.BugOrBroken(
@ -57,7 +56,7 @@ final class ConfigDelayedMergeObject extends AbstractConfigObject implements
else
newStack.add((AbstractConfigValue) other);
return new ConfigDelayedMergeObject(
AbstractConfigObject.mergeOrigins(newStack), transformer,
AbstractConfigObject.mergeOrigins(newStack),
newStack);
} else {
// if the other is not an object, there won't be anything

View File

@ -128,6 +128,6 @@ public class ConfigImpl {
new SimpleConfigOrigin("env var " + key), entry.getValue()));
}
return new SimpleConfigObject(new SimpleConfigOrigin("env variables"),
defaultConfigTransformer(), m);
m);
}
}

View File

@ -157,7 +157,6 @@ final class Loader {
// SimpleConfigObject yet we can get away with it.
AbstractConfigObject o = new SimpleConfigObject(
new SimpleConfigOrigin(originPrefix + " " + path),
ConfigImpl.defaultConfigTransformer(),
scopes.get(path));
String basename = lastElement(path);
parent.put(basename, o);
@ -172,6 +171,6 @@ final class Loader {
// return root config object
return new SimpleConfigObject(new SimpleConfigOrigin(originPrefix),
ConfigImpl.defaultConfigTransformer(), root);
root);
}
}

View File

@ -320,7 +320,7 @@ final class Parser {
}
}
return new SimpleConfigObject(objectOrigin,
ConfigImpl.defaultConfigTransformer(), values);
values);
}
private SimpleConfigList parseArray() {

View File

@ -20,9 +20,9 @@ final class SimpleConfigObject extends AbstractConfigObject {
// this map should never be modified - assume immutable
final private Map<String, AbstractConfigValue> value;
SimpleConfigObject(ConfigOrigin origin, ConfigTransformer transformer,
SimpleConfigObject(ConfigOrigin origin,
Map<String, AbstractConfigValue> value) {
super(origin, transformer);
super(origin);
if (value == null)
throw new ConfigException.BugOrBroken(
"creating config object with null map");
@ -144,7 +144,6 @@ final class SimpleConfigObject extends AbstractConfigObject {
final static SimpleConfigObject empty() {
return new SimpleConfigObject(new SimpleConfigOrigin("empty config"),
ConfigImpl.defaultConfigTransformer(),
Collections.<String, AbstractConfigValue> emptyMap());
}
}

View File

@ -60,9 +60,9 @@ class ConfigValueTest extends TestUtils {
val aMap = 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 a = new SimpleConfigObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), aMap)
val sameAsA = new SimpleConfigObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), sameAsAMap)
val b = new SimpleConfigObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), bMap)
val a = new SimpleConfigObject(fakeOrigin(), aMap)
val sameAsA = new SimpleConfigObject(fakeOrigin(), sameAsAMap)
val b = new SimpleConfigObject(fakeOrigin(), bMap)
checkEqualObjects(a, a)
checkEqualObjects(a, sameAsA)
@ -111,9 +111,9 @@ class ConfigValueTest extends TestUtils {
val empty = SimpleConfigObject.empty()
val s1 = subst("foo")
val s2 = subst("bar")
val a = new ConfigDelayedMergeObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), List[AbstractConfigValue](empty, s1, s2).asJava)
val sameAsA = new ConfigDelayedMergeObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), List[AbstractConfigValue](empty, s1, s2).asJava)
val b = new ConfigDelayedMergeObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), List[AbstractConfigValue](empty, s2, s1).asJava)
val a = new ConfigDelayedMergeObject(fakeOrigin(), List[AbstractConfigValue](empty, s1, s2).asJava)
val sameAsA = new ConfigDelayedMergeObject(fakeOrigin(), List[AbstractConfigValue](empty, s1, s2).asJava)
val b = new ConfigDelayedMergeObject(fakeOrigin(), List[AbstractConfigValue](empty, s2, s1).asJava)
checkEqualObjects(a, a)
checkEqualObjects(a, sameAsA)
@ -137,7 +137,7 @@ class ConfigValueTest extends TestUtils {
substInString("b").toString()
val dm = new ConfigDelayedMerge(fakeOrigin(), List[AbstractConfigValue](subst("a"), subst("b")).asJava)
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()
}
@ -149,14 +149,14 @@ class ConfigValueTest extends TestUtils {
@Test
def configObjectUnwraps() {
val m = new SimpleConfigObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(),
val m = new SimpleConfigObject(fakeOrigin(),
configMap("a" -> 1, "b" -> 2, "c" -> 3))
assertEquals(Map("a" -> 1, "b" -> 2, "c" -> 3), m.unwrapped().asScala)
}
@Test
def configObjectImplementsMap() {
val m: ConfigObject = new SimpleConfigObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(),
val m: ConfigObject = new SimpleConfigObject(fakeOrigin(),
configMap("a" -> 1, "b" -> 2, "c" -> 3))
assertEquals(intValue(1), m.get("a"))
@ -277,8 +277,8 @@ class ConfigValueTest extends TestUtils {
unresolved { dm.unwrapped() }
// ConfigDelayedMergeObject
val emptyObj = new SimpleConfigObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), Collections.emptyMap[String, AbstractConfigValue]())
val dmo = new ConfigDelayedMergeObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), List[AbstractConfigValue](emptyObj, subst("a"), subst("b")).asJava)
val emptyObj = new SimpleConfigObject(fakeOrigin(), Collections.emptyMap[String, AbstractConfigValue]())
val dmo = new ConfigDelayedMergeObject(fakeOrigin(), List[AbstractConfigValue](emptyObj, subst("a"), subst("b")).asJava)
assertEquals(ConfigValueType.OBJECT, dmo.valueType())
unresolved { dmo.unwrapped() }
unresolved { dmo.containsKey(null) }

View File

@ -49,7 +49,7 @@ class JsonTest extends TestUtils {
case lift.JObject(fields) =>
val m = new HashMap[String, AbstractConfigValue]()
fields.foreach({ field => m.put(field.name, fromLift(field.value)) })
new SimpleConfigObject(fakeOrigin(), ConfigImpl.defaultConfigTransformer(), m)
new SimpleConfigObject(fakeOrigin(), m)
case lift.JArray(values) =>
new SimpleConfigList(fakeOrigin(), values.map(fromLift(_)).asJava)
case lift.JField(name, value) =>