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 2016/06/30 02:44:29 UTC
kylin git commit: Revert "minor,
refactor code to ease integrate with coding tool"
Repository: kylin
Updated Branches:
refs/heads/master b5bed2497 -> b075d25fa
Revert "minor, refactor code to ease integrate with coding tool"
This reverts commit b5bed249725fdc03a945b1fff2f209770c8f26dc.
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/b075d25f
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/b075d25f
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/b075d25f
Branch: refs/heads/master
Commit: b075d25fab401d30f13dfcb17425ee72a07c004e
Parents: b5bed24
Author: Li Yang <li...@apache.org>
Authored: Thu Jun 30 10:43:39 2016 +0800
Committer: Li Yang <li...@apache.org>
Committed: Thu Jun 30 10:43:39 2016 +0800
----------------------------------------------------------------------
.../apache/kylin/common/KylinConfigBase.java | 5 +++
.../realization/RealizationRegistry.java | 39 +++++++-------------
2 files changed, 19 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/b075d25f/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
index e75609c..84c4db9 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
@@ -201,6 +201,11 @@ abstract public class KylinConfigBase implements Serializable {
return new StringBuffer(root).append(StringUtils.replaceChars(getMetadataUrlPrefix(), ':', '-')).append("/").toString();
}
+ public String[] getRealizationProviders() {
+ return getOptionalStringArray("kylin.realization.providers", //
+ new String[] { "org.apache.kylin.cube.CubeManager", "org.apache.kylin.storage.hybrid.HybridManager", "org.apache.kylin.invertedindex.IIManager" });
+ }
+
public CliCommandExecutor getCliCommandExecutor() throws IOException {
CliCommandExecutor exec = new CliCommandExecutor();
if (getRunAsRemoteCommand()) {
http://git-wip-us.apache.org/repos/asf/kylin/blob/b075d25f/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java b/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java
index b317444..e6b1a86 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java
@@ -25,6 +25,7 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.kylin.common.KylinConfig;
+import org.apache.kylin.common.util.ClassUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -80,24 +81,19 @@ public class RealizationRegistry {
providers = Maps.newConcurrentMap();
// use reflection to load providers
- // Note: keep "Class.forName" and "getMethod" on same line, allow detection of the use of reflection
- try {
- IRealizationProvider p = (IRealizationProvider) Class.forName("org.apache.kylin.cube.CubeManager").getMethod("getInstance", KylinConfig.class).invoke(null, config);
- providers.put(p.getRealizationType(), p);
- } catch (Exception | NoClassDefFoundError e) {
- logEx(e);
- }
- try {
- IRealizationProvider p = (IRealizationProvider) Class.forName("org.apache.kylin.storage.hybrid.HybridManager").getMethod("getInstance", KylinConfig.class).invoke(null, config);
- providers.put(p.getRealizationType(), p);
- } catch (Exception | NoClassDefFoundError e) {
- logEx(e);
- }
- try {
- IRealizationProvider p = (IRealizationProvider) Class.forName("org.apache.kylin.invertedindex.IIManager").getMethod("getInstance", KylinConfig.class).invoke(null, config);
- providers.put(p.getRealizationType(), p);
- } catch (Exception | NoClassDefFoundError e) {
- logEx(e);
+ String[] providerNames = config.getRealizationProviders();
+ for (String clsName : providerNames) {
+ try {
+ Class<? extends IRealizationProvider> cls = ClassUtil.forName(clsName, IRealizationProvider.class);
+ IRealizationProvider p = (IRealizationProvider) cls.getMethod("getInstance", KylinConfig.class).invoke(null, config);
+ providers.put(p.getRealizationType(), p);
+
+ } catch (Exception | NoClassDefFoundError e) {
+ if (e instanceof ClassNotFoundException || e instanceof NoClassDefFoundError)
+ logger.warn("Failed to create realization provider " + e);
+ else
+ logger.error("Failed to create realization provider", e);
+ }
}
if (providers.isEmpty())
@@ -106,13 +102,6 @@ public class RealizationRegistry {
logger.info("RealizationRegistry is " + providers);
}
- private void logEx(Throwable e) {
- if (e instanceof ClassNotFoundException || e instanceof NoClassDefFoundError)
- logger.warn("Failed to create realization provider ", e);
- else
- logger.error("Failed to create realization provider", e);
- }
-
public Set<RealizationType> getRealizationTypes() {
return Collections.unmodifiableSet(providers.keySet());
}