This is an automated email from the ASF dual-hosted git repository.

xxyu pushed a commit to branch kylin5
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit 75ce83ad6693a94c140917c83059d375e381f598
Author: Mingming Ge <7mmi...@gmail.com>
AuthorDate: Fri Jun 9 11:02:21 2023 +0800

    KYLIN-5722 Optimize KylinConfigExt
---
 .../org/apache/kylin/common/KylinConfigExt.java     | 21 ++++++---------------
 .../apache/kylin/common/util/CompositeMapView.java  |  9 +++++----
 2 files changed, 11 insertions(+), 19 deletions(-)

diff --git 
a/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java 
b/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java
index 21ccd40899..dcfb0edc1e 100644
--- a/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java
+++ b/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java
@@ -22,9 +22,8 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 
-import lombok.val;
 import org.apache.commons.lang3.text.StrSubstitutor;
-
+import org.apache.kylin.common.util.CompositeMapView;
 import org.apache.kylin.guava30.shaded.common.collect.Maps;
 
 /**
@@ -35,6 +34,7 @@ public class KylinConfigExt extends KylinConfig {
 
     private final Map<String, String> overrides;
     final KylinConfig base;
+    private final transient StrSubstitutor substitutor;
 
     public static KylinConfigExt createInstance(KylinConfig kylinConfig, 
Map<String, String> overrides) {
         if (kylinConfig instanceof KylinConfigExt) {
@@ -51,12 +51,12 @@ public class KylinConfigExt extends KylinConfig {
         }
         this.base = base;
         this.overrides = BCC.check(overrides);
+        // overrides > env > properties
+        this.substitutor = new StrSubstitutor(new 
CompositeMapView(this.properties, STATIC_SYSTEM_ENV, this.overrides));
     }
 
     private KylinConfigExt(KylinConfigExt ext, Map<String, String> overrides) {
-        super(ext.base.getRawAllProperties(), true);
-        this.base = ext.base;
-        this.overrides = BCC.check(overrides);
+        this(ext.base, overrides);
     }
 
     @Override
@@ -79,7 +79,6 @@ public class KylinConfigExt extends KylinConfig {
 
     @Override
     public Map<String, String> getReadonlyProperties() {
-        val substitutor = getSubstitutor();
         HashMap<String, String> config = Maps.newHashMap();
         for (Map.Entry<String, String> entry : this.overrides.entrySet()) {
             config.put(entry.getKey(), substitutor.replace(entry.getValue()));
@@ -89,15 +88,7 @@ public class KylinConfigExt extends KylinConfig {
 
     @Override
     protected StrSubstitutor getSubstitutor() {
-        // overrides > env > properties
-        final Map<String, Object> all = Maps.newHashMap();
-        // all.putAll((Map) properties); // use putAll will call 
CompositeMapView.size()sss
-        for(Map.Entry<Object, Object> e: properties.entrySet()) {
-            all.put(e.getKey().toString(), e.getValue());
-        }
-        all.putAll(STATIC_SYSTEM_ENV);
-        all.putAll(overrides);
-        return new StrSubstitutor(all);
+        return this.substitutor;
     }
 
     public Map<String, String> getExtendedOverrides() {
diff --git 
a/src/core-common/src/main/java/org/apache/kylin/common/util/CompositeMapView.java
 
b/src/core-common/src/main/java/org/apache/kylin/common/util/CompositeMapView.java
index 6a0dbf83ff..b7be438053 100644
--- 
a/src/core-common/src/main/java/org/apache/kylin/common/util/CompositeMapView.java
+++ 
b/src/core-common/src/main/java/org/apache/kylin/common/util/CompositeMapView.java
@@ -54,10 +54,11 @@ public class CompositeMapView<K, V> extends AbstractMap<K, 
V> {
     private final Map<K, V>[] composite;
 
     @SuppressWarnings("unchecked")
-    public CompositeMapView(@NotNull Map<K, V> one, @NotNull Map<K, V> two) {
-        Preconditions.checkNotNull(one);
-        Preconditions.checkNotNull(two);
-        this.composite = new Map[] { one, two };
+    public CompositeMapView(@NotNull Map<K, V>... maps) {
+        for (Map<K, V> map : maps) {
+            Preconditions.checkNotNull(map);
+        }
+        this.composite = maps;
     }
 
     @Override

Reply via email to