Repository: kylin Updated Branches: refs/heads/master 90a234e3d -> b5bed2497
minor, refactor code to ease integrate with coding tool Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/b5bed249 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/b5bed249 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/b5bed249 Branch: refs/heads/master Commit: b5bed249725fdc03a945b1fff2f209770c8f26dc Parents: 90a234e Author: Li Yang <liy...@apache.org> Authored: Thu Jun 30 10:34:03 2016 +0800 Committer: Li Yang <liy...@apache.org> Committed: Thu Jun 30 10:34:51 2016 +0800 ---------------------------------------------------------------------- .../apache/kylin/common/KylinConfigBase.java | 5 --- .../realization/RealizationRegistry.java | 39 +++++++++++++------- 2 files changed, 25 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/b5bed249/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 84c4db9..e75609c 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,11 +201,6 @@ 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/b5bed249/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 e6b1a86..b317444 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,7 +25,6 @@ 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; @@ -81,19 +80,24 @@ public class RealizationRegistry { providers = Maps.newConcurrentMap(); // use reflection to load providers - 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); - } + // 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); } if (providers.isEmpty()) @@ -102,6 +106,13 @@ 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()); }