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;