You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2017/03/12 11:49:06 UTC

[34/48] kylin git commit: minor, refine kylin config

minor, refine kylin config

Signed-off-by: Hongbin Ma <ma...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/0301da01
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/0301da01
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/0301da01

Branch: refs/heads/master-hbase0.98
Commit: 0301da01b3669d92ad4bd07facfc8f79b7b0e0eb
Parents: 8edf234
Author: Cheng Wang <ch...@kyligence.io>
Authored: Fri Mar 10 18:42:45 2017 +0800
Committer: Hongbin Ma <ma...@apache.org>
Committed: Sat Mar 11 17:06:22 2017 +0800

----------------------------------------------------------------------
 .../org/apache/kylin/common/KylinConfigExt.java |  2 +-
 .../security/PasswordPlaceholderConfigurer.java | 19 ++++++++++-
 .../apache/kylin/rest/service/AdminService.java | 33 +++++++++++++++++++-
 3 files changed, 51 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/0301da01/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 6062d91..0ad24be 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
@@ -61,7 +61,7 @@ public class KylinConfigExt extends KylinConfig {
             return super.getOptional(prop, dft);
     }
 
-    public Properties getAllProperties() {
+    protected Properties getAllProperties() {
         Properties result = new Properties();
         result.putAll(super.getAllProperties());
         result.putAll(overrides);

http://git-wip-us.apache.org/repos/asf/kylin/blob/0301da01/server-base/src/main/java/org/apache/kylin/rest/security/PasswordPlaceholderConfigurer.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/security/PasswordPlaceholderConfigurer.java b/server-base/src/main/java/org/apache/kylin/rest/security/PasswordPlaceholderConfigurer.java
index 092d73a..5bb6d54 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/security/PasswordPlaceholderConfigurer.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/security/PasswordPlaceholderConfigurer.java
@@ -21,6 +21,7 @@ package org.apache.kylin.rest.security;
 import java.io.InputStream;
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.lang.reflect.Method;
 import java.nio.charset.Charset;
 import java.util.Properties;
 
@@ -30,6 +31,7 @@ import javax.crypto.spec.SecretKeySpec;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.io.IOUtils;
 import org.apache.kylin.common.KylinConfig;
+import org.apache.kylin.common.KylinConfigBase;
 import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
 import org.springframework.core.io.InputStreamResource;
 import org.springframework.core.io.Resource;
@@ -51,7 +53,8 @@ public class PasswordPlaceholderConfigurer extends PropertyPlaceholderConfigurer
      */
     public PasswordPlaceholderConfigurer() {
         Resource[] resources = new Resource[1];
-        Properties prop = KylinConfig.getKylinProperties();
+        //Properties prop = KylinConfig.getKylinProperties();
+        Properties prop = getAllKylinProperties();
         StringWriter writer = new StringWriter();
         prop.list(new PrintWriter(writer));
         String propString = writer.getBuffer().toString();
@@ -61,6 +64,20 @@ public class PasswordPlaceholderConfigurer extends PropertyPlaceholderConfigurer
         this.setLocations(resources);
     }
 
+    public Properties getAllKylinProperties() {
+        // hack to get all config properties
+        Properties allProps = null;
+        try {
+            KylinConfig kylinConfig = KylinConfig.getInstanceFromEnv();
+            Method getAllMethod = KylinConfigBase.class.getDeclaredMethod("getAllProperties");
+            getAllMethod.setAccessible(true);
+            allProps = (Properties) getAllMethod.invoke(kylinConfig);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        return allProps;
+    }
+
     public static String encrypt(String strToEncrypt) {
         try {
             Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");

http://git-wip-us.apache.org/repos/asf/kylin/blob/0301da01/server-base/src/main/java/org/apache/kylin/rest/service/AdminService.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/AdminService.java b/server-base/src/main/java/org/apache/kylin/rest/service/AdminService.java
index a02804e..4cacb6b 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/AdminService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/AdminService.java
@@ -20,6 +20,7 @@ package org.apache.kylin.rest.service;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.lang.reflect.Method;
 import java.util.Map;
 import java.util.Properties;
 import java.util.TreeMap;
@@ -27,6 +28,7 @@ import java.util.TreeMap;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.PropertiesConfiguration;
 import org.apache.kylin.common.KylinConfig;
+import org.apache.kylin.common.KylinConfigBase;
 import org.apache.kylin.common.util.OrderedProperties;
 import org.apache.kylin.rest.constant.Constant;
 import org.apache.kylin.rest.exception.InternalErrorException;
@@ -94,7 +96,7 @@ public class AdminService extends BasicService {
         logger.debug("Get Kylin Runtime Config");
 
         try {
-            return KylinConfig.getInstanceFromEnv().getConfigAsString();
+            return getAllConfigAsString();
         } catch (IOException e) {
             throw new InternalErrorException("Failed to get Kylin Runtime Config", e);
         }
@@ -110,4 +112,33 @@ public class AdminService extends BasicService {
             throw new InternalErrorException(e.getMessage(), e);
         }
     }
+
+    private String getAllConfigAsString() throws IOException {
+        Properties allProps;
+        try {
+            KylinConfig kylinConfig = KylinConfig.getInstanceFromEnv();
+            Method getAllMethod = KylinConfigBase.class.getDeclaredMethod("getAllProperties");
+            getAllMethod.setAccessible(true);
+            allProps = (Properties) getAllMethod.invoke(kylinConfig);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
+        OrderedProperties orderedProperties = KylinConfig.getKylinOrderedProperties();
+
+        final StringBuilder sb = new StringBuilder();
+
+        for (Map.Entry<Object, Object> entry : allProps.entrySet()) {
+            String key = entry.getKey().toString();
+            String value = entry.getValue().toString();
+            if (!orderedProperties.containsProperty(key)) {
+                orderedProperties.setProperty(key, value);
+            } else if (!orderedProperties.getProperty(key).equalsIgnoreCase(value))
+                orderedProperties.setProperty(key, value);
+        }
+        for (Map.Entry<String, String> entry : orderedProperties.entrySet()) {
+            sb.append(entry.getKey() + "=" + entry.getValue()).append('\n');
+        }
+        return sb.toString();
+    }
 }