minor, fix bug in KylinConfigExt
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/653743f3 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/653743f3 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/653743f3 Branch: refs/heads/1.5.x-HBase1.1.3 Commit: 653743f34b3a0fe049ed5b9e48d5ad26114907eb Parents: 166e8ea Author: Hongbin Ma <mahong...@apache.org> Authored: Tue Apr 5 17:40:43 2016 +0800 Committer: Hongbin Ma <mahong...@apache.org> Committed: Tue Apr 5 17:40:59 2016 +0800 ---------------------------------------------------------------------- .../org/apache/kylin/common/KylinConfigExt.java | 22 ++++++++++++++++---- .../org/apache/kylin/cube/model/CubeDesc.java | 6 ++---- 2 files changed, 20 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/653743f3/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java index f6e20ff..e34a58a 100644 --- a/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java +++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java @@ -30,14 +30,28 @@ public class KylinConfigExt extends KylinConfig { final private Map<String, String> overrides; final KylinConfig base; - public KylinConfigExt(KylinConfig base, Map<String, String> overrides) { + public static KylinConfigExt createInstance(KylinConfig kylinConfig, Map<String, String> overrides) { + if (kylinConfig instanceof KylinConfigExt) { + return new KylinConfigExt((KylinConfigExt) kylinConfig, overrides); + } else { + return new KylinConfigExt(kylinConfig, overrides); + } + } + + private KylinConfigExt(KylinConfig base, Map<String, String> overrides) { super(base.getAllProperties()); - if (base.getClass() != KylinConfig.class) + if (base.getClass() != KylinConfig.class) { throw new IllegalArgumentException(); + } this.base = base; this.overrides = overrides; } - + + private KylinConfigExt(KylinConfigExt ext, Map<String, String> overrides) { + this.base = ext.base; + this.overrides = overrides; + } + protected String getOptional(String prop, String dft) { String value = overrides.get(prop); if (value != null) @@ -51,5 +65,5 @@ public class KylinConfigExt extends KylinConfig { result.putAll(overrides); return result; } - + } http://git-wip-us.apache.org/repos/asf/kylin/blob/653743f3/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java ---------------------------------------------------------------------- diff --git a/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java b/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java index 89f297e..240cf52 100644 --- a/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java +++ b/core-cube/src/main/java/org/apache/kylin/cube/model/CubeDesc.java @@ -171,7 +171,6 @@ public class CubeDesc extends RootPersistentEntity { return getRowkey().getShardByColumns(); } - /** * Error messages during resolving json metadata */ @@ -402,7 +401,7 @@ public class CubeDesc extends RootPersistentEntity { public void setStatusNeedNotify(List<String> statusNeedNotify) { this.statusNeedNotify = statusNeedNotify; } - + public LinkedHashMap<String, String> getOverrideKylinProps() { return overrideKylinProps; } @@ -516,7 +515,7 @@ public class CubeDesc extends RootPersistentEntity { public void init(KylinConfig config, Map<String, TableDesc> tables) { this.errors.clear(); - this.config = new KylinConfigExt(config, overrideKylinProps); + this.config = KylinConfigExt.createInstance(config, overrideKylinProps); if (this.modelName == null || this.modelName.length() == 0) { this.addError("The cubeDesc '" + this.getName() + "' doesn't have data model specified."); @@ -591,7 +590,6 @@ public class CubeDesc extends RootPersistentEntity { combination = combination * (1 << jointDimsList.size()); } - if (!includeDims.containsAll(mandatoryDims) || !includeDims.containsAll(hierarchyDims) || !includeDims.containsAll(jointDims)) { logger.error("Aggregation group " + index + " Include dims not containing all the used dims"); throw new IllegalStateException("Aggregation group " + index + " Include dims not containing all the used dims");