minor, getConfigAsString read .override properties Signed-off-by: Hongbin Ma <mahong...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/661f016b Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/661f016b Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/661f016b Branch: refs/heads/master-hbase0.98 Commit: 661f016bbf8eae6d3ed8efb8ab1672ac212c62b4 Parents: 4c6fd2c Author: Roger Shi <rogershijich...@hotmail.com> Authored: Tue Feb 21 18:38:51 2017 +0800 Committer: Hongbin Ma <mahong...@apache.org> Committed: Tue Feb 21 18:44:29 2017 +0800 ---------------------------------------------------------------------- .../org/apache/kylin/common/KylinConfig.java | 70 +++++++++++--------- .../kylin/common/util/OrderedProperties.java | 6 ++ 2 files changed, 46 insertions(+), 30 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/661f016b/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java index e8127ec..4fcc61f 100644 --- a/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java +++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java @@ -20,6 +20,7 @@ package org.apache.kylin.common; import java.io.File; import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; @@ -44,7 +45,6 @@ public class KylinConfig extends KylinConfigBase { private static final long serialVersionUID = 1L; private static final Logger logger = LoggerFactory.getLogger(KylinConfig.class); - /** Kylin properties file name */ public static final String KYLIN_CONF_PROPERTIES_FILE = "kylin.properties"; public static final String KYLIN_CONF = "KYLIN_CONF"; @@ -182,11 +182,11 @@ public class KylinConfig extends KylinConfigBase { props.load(new StringReader(propsInStr)); return createKylinConfig(props); } - + public static KylinConfig createKylinConfig(KylinConfig another) { return createKylinConfig(another.getAllProperties()); } - + public static KylinConfig createKylinConfig(Properties prop) { KylinConfig kylinConfig = new KylinConfig(); kylinConfig.reloadKylinConfig(prop); @@ -225,31 +225,58 @@ public class KylinConfig extends KylinConfigBase { } public static Properties getKylinProperties() { + Properties conf = new Properties(); + try { + OrderedProperties orderedProperties = getKylinOrderedProperties(); + for (Map.Entry<String, String> each: orderedProperties.entrySet()) { + conf.put(each.getKey(), each.getValue()); + } + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + + return conf; + } + + public static OrderedProperties getKylinOrderedProperties() throws FileNotFoundException { File propFile = getKylinPropertiesFile(); if (propFile == null || !propFile.exists()) { logger.error("fail to locate " + KYLIN_CONF_PROPERTIES_FILE); throw new RuntimeException("fail to locate " + KYLIN_CONF_PROPERTIES_FILE); } - Properties conf = new Properties(); + + final InputStream is = new FileInputStream(propFile); try { - FileInputStream is = new FileInputStream(propFile); - conf.load(is); - IOUtils.closeQuietly(is); - conf = BCC.check(conf); + OrderedProperties orderedProperties = new OrderedProperties(); + orderedProperties.load(is); + orderedProperties = BCC.check(orderedProperties); File propOverrideFile = new File(propFile.getParentFile(), propFile.getName() + ".override"); if (propOverrideFile.exists()) { FileInputStream ois = new FileInputStream(propOverrideFile); - Properties propOverride = new Properties(); - propOverride.load(ois); - IOUtils.closeQuietly(ois); - conf.putAll(BCC.check(propOverride)); + try { + OrderedProperties propOverride = new OrderedProperties(); + propOverride.load(ois); + orderedProperties.putAll(BCC.check(propOverride)); + } finally { + IOUtils.closeQuietly(ois); + } } + return orderedProperties; } catch (IOException e) { throw new RuntimeException(e); + } finally { + IOUtils.closeQuietly(is); } + } - return conf; + public static String getConfigAsString() throws IOException { + OrderedProperties orderedProperties = getKylinOrderedProperties(); + final StringBuilder sb = new StringBuilder(); + for (Map.Entry<String, String> entry : orderedProperties.entrySet()) { + sb.append(entry.getKey() + "=" + entry.getValue()).append('\n'); + } + return sb.toString(); } /** @@ -301,23 +328,6 @@ public class KylinConfig extends KylinConfigBase { } } - public String getConfigAsString() throws IOException { - final File propertiesFile = getKylinPropertiesFile(); - final InputStream is = new FileInputStream(propertiesFile); - try { - OrderedProperties orderedProperties = new OrderedProperties(); - orderedProperties.load(is); - orderedProperties = BCC.check(orderedProperties); - final StringBuilder sb = new StringBuilder(); - for (Map.Entry<String, String> entry : orderedProperties.entrySet()) { - sb.append(entry.getKey() + "=" + entry.getValue()).append('\n'); - } - return sb.toString(); - } finally { - IOUtils.closeQuietly(is); - } - } - public KylinConfig base() { return this; } http://git-wip-us.apache.org/repos/asf/kylin/blob/661f016b/core-common/src/main/java/org/apache/kylin/common/util/OrderedProperties.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/util/OrderedProperties.java b/core-common/src/main/java/org/apache/kylin/common/util/OrderedProperties.java index 0e5a3f9..ffeced1 100644 --- a/core-common/src/main/java/org/apache/kylin/common/util/OrderedProperties.java +++ b/core-common/src/main/java/org/apache/kylin/common/util/OrderedProperties.java @@ -183,6 +183,12 @@ public final class OrderedProperties implements Serializable { return new LinkedHashSet<Map.Entry<String, String>>(properties.entrySet()); } + public void putAll(OrderedProperties others) { + for (Map.Entry<String, String> each : others.entrySet()) { + properties.put(each.getKey(), each.getValue()); + } + } + /** * See {@link Properties#load(InputStream)}. */