diff --git a/config/src/main/java/com/typesafe/config/impl/ConfigNodeComplexValue.java b/config/src/main/java/com/typesafe/config/impl/ConfigNodeComplexValue.java index 50d0e106..eebecfb8 100644 --- a/config/src/main/java/com/typesafe/config/impl/ConfigNodeComplexValue.java +++ b/config/src/main/java/com/typesafe/config/impl/ConfigNodeComplexValue.java @@ -35,10 +35,10 @@ abstract class ConfigNodeComplexValue extends AbstractConfigNodeValue { i++; } else if (child instanceof ConfigNodeField) { AbstractConfigNode value = ((ConfigNodeField) child).value(); - if (value instanceof ConfigNodeComplexValue && !(value instanceof ConfigNodeInclude)) { + if (value instanceof ConfigNodeComplexValue) { childrenCopy.set(i, ((ConfigNodeField) child).replaceValue(((ConfigNodeComplexValue) value).indentText(indentation))); } - } else if (child instanceof ConfigNodeComplexValue && !(child instanceof ConfigNodeInclude)) { + } else if (child instanceof ConfigNodeComplexValue) { childrenCopy.set(i, ((ConfigNodeComplexValue) child).indentText(indentation)); } } diff --git a/config/src/main/java/com/typesafe/config/impl/ConfigNodeInclude.java b/config/src/main/java/com/typesafe/config/impl/ConfigNodeInclude.java index 73ab3978..67b823c3 100644 --- a/config/src/main/java/com/typesafe/config/impl/ConfigNodeInclude.java +++ b/config/src/main/java/com/typesafe/config/impl/ConfigNodeInclude.java @@ -1,20 +1,28 @@ package com.typesafe.config.impl; -import com.typesafe.config.ConfigException; - +import java.util.ArrayList; import java.util.Collection; -final class ConfigNodeInclude extends ConfigNodeComplexValue { +final class ConfigNodeInclude extends AbstractConfigNode { + final private ArrayList children; final private ConfigIncludeKind kind; ConfigNodeInclude(Collection children, ConfigIncludeKind kind) { - super(children); + this.children = new ArrayList(children); this.kind = kind; } + final public Collection children() { + return children; + } + @Override - protected ConfigNodeInclude newNode(Collection nodes) { - throw new ConfigException.BugOrBroken("Tried to indent an include node"); + protected Collection tokens() { + ArrayList tokens = new ArrayList(); + for (AbstractConfigNode child : children) { + tokens.addAll(child.tokens()); + } + return tokens; } protected ConfigIncludeKind kind() { diff --git a/config/src/main/java/com/typesafe/config/impl/ConfigParser.java b/config/src/main/java/com/typesafe/config/impl/ConfigParser.java index 32f98477..ed40b949 100644 --- a/config/src/main/java/com/typesafe/config/impl/ConfigParser.java +++ b/config/src/main/java/com/typesafe/config/impl/ConfigParser.java @@ -270,7 +270,6 @@ final class ConfigParser { valueNode = ((ConfigNodeField) node).value(); // comments from the key token go to the value token - //newValue = parseValue(valueToken.prepend(keyToken.comments)); newValue = parseValue(valueNode, comments); if (((ConfigNodeField) node).separator() == Tokens.PLUS_EQUALS) {