From 98e3c70460737dcea9dc264882029729b97458e2 Mon Sep 17 00:00:00 2001 From: md_5 Date: Thu, 25 Aug 2016 11:04:19 +1000 Subject: [PATCH] Implicitly convert Map to Configuration --- .../net/md_5/bungee/config/Configuration.java | 5 +++++ .../md_5/bungee/config/YamlConfigurationTest.java | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/config/src/main/java/net/md_5/bungee/config/Configuration.java b/config/src/main/java/net/md_5/bungee/config/Configuration.java index 2b29614a..967a1b2a 100644 --- a/config/src/main/java/net/md_5/bungee/config/Configuration.java +++ b/config/src/main/java/net/md_5/bungee/config/Configuration.java @@ -108,6 +108,11 @@ public final class Configuration public void set(String path, Object value) { + if ( value instanceof Map ) + { + value = new Configuration( (Map) value, ( defaults == null ) ? null : defaults.getSection( path ) ); + } + Configuration section = getSectionFor( path ); if ( section == this ) { diff --git a/config/src/test/java/net/md_5/bungee/config/YamlConfigurationTest.java b/config/src/test/java/net/md_5/bungee/config/YamlConfigurationTest.java index 589d3ee4..a14c22f2 100644 --- a/config/src/test/java/net/md_5/bungee/config/YamlConfigurationTest.java +++ b/config/src/test/java/net/md_5/bungee/config/YamlConfigurationTest.java @@ -2,6 +2,7 @@ package net.md_5.bungee.config; import java.io.StringReader; import java.io.StringWriter; +import java.util.Collections; import java.util.List; import java.util.Map; import org.junit.Assert; @@ -125,4 +126,18 @@ public class YamlConfigurationTest Assert.assertEquals( null, conf.get( "null.object" ) ); Assert.assertEquals( "", conf.getString( "null.object" ) ); } + + @Test + public void testMapAddition() + { + Configuration conf = ConfigurationProvider.getProvider( YamlConfiguration.class ).load( TEST_DOCUMENT ); + + conf.set( "addition", Collections.singletonMap( "foo", "bar" ) ); + + // Order matters + Assert.assertEquals( "bar", conf.getSection( "addition" ).getString( "foo" ) ); + Assert.assertEquals( "bar", conf.getString( "addition.foo" ) ); + + Assert.assertTrue( conf.get( "addition" ) instanceof Configuration ); + } }