Fix HugeConfig save to file is empty (#51)

diff --git a/pom.xml b/pom.xml
index d2ab1b2..c410f58 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
 
     <groupId>com.baidu.hugegraph</groupId>
     <artifactId>hugegraph-common</artifactId>
-    <version>1.7.8</version>
+    <version>1.7.9</version>
 
     <name>hugegraph-common</name>
     <url>https://github.com/hugegraph/hugegraph-common</url>
@@ -260,7 +260,7 @@
                         <manifestEntries>
                             <!-- Must be on one line, otherwise the automatic
                                  upgrade script cannot replace the version number -->
-                            <Implementation-Version>1.7.8.0</Implementation-Version>
+                            <Implementation-Version>1.7.9.0</Implementation-Version>
                         </manifestEntries>
                     </archive>
                 </configuration>
diff --git a/src/main/java/com/baidu/hugegraph/config/HugeConfig.java b/src/main/java/com/baidu/hugegraph/config/HugeConfig.java
index 1c9b16b..5a8d345 100644
--- a/src/main/java/com/baidu/hugegraph/config/HugeConfig.java
+++ b/src/main/java/com/baidu/hugegraph/config/HugeConfig.java
@@ -44,6 +44,7 @@
         }
 
         this.reloadIfNeed(config);
+        this.setLayoutIfNeeded(config);
 
         Iterator<String> keys = config.getKeys();
         while (keys.hasNext()) {
@@ -86,6 +87,14 @@
         }
     }
 
+    private void setLayoutIfNeeded(Configuration conf) {
+        if (!(conf instanceof PropertiesConfiguration)) {
+            return;
+        }
+        PropertiesConfiguration propConf = (PropertiesConfiguration) conf;
+        this.setLayout(propConf.getLayout());
+    }
+
     private static PropertiesConfiguration loadConfigFile(String path) {
         E.checkNotNull(path, "config path");
         E.checkArgument(!path.isEmpty(),
diff --git a/src/main/java/com/baidu/hugegraph/version/CommonVersion.java b/src/main/java/com/baidu/hugegraph/version/CommonVersion.java
index 54c48eb..dda70fa 100644
--- a/src/main/java/com/baidu/hugegraph/version/CommonVersion.java
+++ b/src/main/java/com/baidu/hugegraph/version/CommonVersion.java
@@ -27,5 +27,5 @@
 
     // The second parameter of Version.of() is for all-in-one JAR
     public static final Version VERSION = Version.of(CommonVersion.class,
-                                                     "1.7.8");
+                                                     "1.7.9");
 }
diff --git a/src/test/java/com/baidu/hugegraph/unit/config/HugeConfigTest.java b/src/test/java/com/baidu/hugegraph/unit/config/HugeConfigTest.java
index 30369d0..9744a32 100644
--- a/src/test/java/com/baidu/hugegraph/unit/config/HugeConfigTest.java
+++ b/src/test/java/com/baidu/hugegraph/unit/config/HugeConfigTest.java
@@ -27,11 +27,16 @@
 import static com.baidu.hugegraph.config.OptionChecker.rangeDouble;
 import static com.baidu.hugegraph.config.OptionChecker.rangeInt;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
 
+import org.apache.commons.collections.IteratorUtils;
 import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.commons.io.FileUtils;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
@@ -359,6 +364,28 @@
         });
     }
 
+    @Test
+    public void testSaveHugeConfig() throws ConfigurationException,
+                                            IOException {
+        HugeConfig config = new HugeConfig(CONF);
+        Assert.assertEquals("file-text1-value", config.get(TestOptions.text1));
+
+        File copiedFile = new File("copied.conf");
+        config.save(copiedFile);
+        Assert.assertTrue(copiedFile.exists());
+        Assert.assertTrue(copiedFile.length() > 0);
+
+        try {
+            HugeConfig copiedConfig = new HugeConfig(copiedFile.getPath());
+            Assert.assertEquals(IteratorUtils.toList(config.getKeys()),
+                                IteratorUtils.toList(copiedConfig.getKeys()));
+            Assert.assertEquals(config.get(TestOptions.text1),
+                                copiedConfig.get(TestOptions.text1));
+        } finally {
+            FileUtils.forceDelete(copiedFile);
+        }
+    }
+
     public static class TestOptions extends OptionHolder {
 
         private static volatile TestOptions instance;