66import java .io .FileReader ;
77import java .io .IOException ;
88import java .io .UncheckedIOException ;
9- import java .util .LinkedHashMap ;
109import java .util .Map ;
1110import java .util .Properties ;
1211import java .util .ServiceLoader ;
1817final class CoreConfigurationBuilder implements Configuration .Builder {
1918
2019 private final Parsers parsers = new Parsers ();
21- private final Map < String , String > sourceMap = new LinkedHashMap <> ();
20+ private final CoreEntry . CoreMap sourceMap = CoreEntry . newMap ();
2221 private ResourceLoader resourceLoader = initialiseResourceLoader ();
2322 private ModificationEventRunner eventRunner ;
2423 private ConfigurationLog configurationLog ;
@@ -47,7 +46,7 @@ public Configuration.Builder resourceLoader(ResourceLoader resourceLoader) {
4746 public Configuration .Builder put (String key , String value ) {
4847 requireNonNull (key );
4948 requireNonNull (value );
50- sourceMap .put (key , value );
49+ sourceMap .put (key , value , "initial" );
5150 return this ;
5251 }
5352
@@ -56,7 +55,7 @@ public Configuration.Builder putAll(Map<String, ?> source) {
5655 requireNonNull (source );
5756 source .forEach ((key , value ) -> {
5857 if (key != null && value != null ) {
59- put (key , value .toString ());
58+ sourceMap . put (key , value .toString (), "initial" );
6059 }
6160 });
6261 return this ;
@@ -67,7 +66,7 @@ public Configuration.Builder putAll(Properties source) {
6766 requireNonNull (source );
6867 source .forEach ((key , value ) -> {
6968 if (key != null && value != null ) {
70- put (key .toString (), value .toString ());
69+ sourceMap . put (key .toString (), value .toString (), "initial" );
7170 }
7271 });
7372 return this ;
@@ -79,7 +78,8 @@ public Configuration.Builder load(String resource) {
7978 try {
8079 try (var inputStream = resourceLoader .getResourceAsStream (resource )) {
8180 if (inputStream != null ) {
82- putAll (configParser .load (inputStream ));
81+ var source = "resource:" + resource ;
82+ configParser .load (inputStream ).forEach ((k , v ) -> sourceMap .put (k , v , source ));
8383 }
8484 return this ;
8585 }
@@ -96,7 +96,8 @@ public Configuration.Builder load(File file) {
9696 final var configParser = parser (file .getName ());
9797 try {
9898 try (var reader = new FileReader (file )) {
99- putAll (configParser .load (reader ));
99+ var source = "file:" + file .getName ();
100+ configParser .load (reader ).forEach ((k , v ) -> sourceMap .put (k , v , source ));
100101 return this ;
101102 }
102103 } catch (IOException e ) {
@@ -144,7 +145,7 @@ public Configuration build() {
144145
145146 private CoreEntry .CoreMap initEntries () {
146147 final var entries = initEntryMap ();
147- sourceMap . forEach (( key , value ) -> entries .put ( key , value , "initial" ) );
148+ entries .addAll ( sourceMap );
148149 return CoreExpressionEval .evalFor (entries );
149150 }
150151
0 commit comments