You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by bi...@apache.org on 2017/03/11 17:17:24 UTC
[07/14] 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/KYLIN-2360
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();
+ }
}