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 2015/02/27 07:25:52 UTC

[39/41] incubator-kylin git commit: 1. auto-correct "com.kylinolap" before Class.forName() 2. Rename KYLIN_CONF_HOME to KYLIN_CONF

1. auto-correct "com.kylinolap" before Class.forName()
2. Rename KYLIN_CONF_HOME to KYLIN_CONF


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

Branch: refs/heads/inverted-index
Commit: b928cc268e3474747baabd2fd37c170520abb144
Parents: a7d0ea3
Author: Li, Yang <ya...@ebay.com>
Authored: Fri Feb 27 13:22:22 2015 +0800
Committer: Li, Yang <ya...@ebay.com>
Committed: Fri Feb 27 13:22:22 2015 +0800

----------------------------------------------------------------------
 .../org/apache/kylin/common/KylinConfig.java    | 10 ++--
 .../org/apache/kylin/common/util/ClassUtil.java | 53 ++++++++++++++++++++
 .../apache/kylin/common/util/ClasspathUtil.java | 45 -----------------
 .../common/persistence/ResourceToolTest.java    |  4 +-
 .../common/util/AbstractKylinTestCase.java      |  6 +--
 .../kylin/common/util/BasicHadoopTest.java      |  2 +-
 .../common/util/HBaseMetadataTestCase.java      |  2 +-
 .../common/util/LocalFileMetadataTestCase.java  |  4 +-
 .../kylin/dict/DictionaryInfoSerializer.java    |  3 +-
 .../org/apache/kylin/dict/TrieDictionary.java   |  3 +-
 .../main/java/org/apache/kylin/dict/Util.java   | 44 ----------------
 .../apache/kylin/job/CubeMetadataUpgrade.java   |  2 +-
 .../kylin/job/common/HadoopShellExecutable.java |  5 +-
 .../kylin/job/common/MapReduceExecutable.java   | 35 +++++++------
 .../kylin/job/engine/JobEngineConfig.java       |  2 +-
 .../kylin/job/hadoop/AbstractHadoopJob.java     |  2 +-
 .../kylin/job/manager/ExecutableManager.java    | 28 ++++++-----
 .../kylin/job/BuildCubeWithEngineTest.java      |  6 +--
 .../apache/kylin/job/BuildIIWithEngineTest.java |  4 +-
 .../org/apache/kylin/job/ExportHBaseData.java   |  2 +-
 .../org/apache/kylin/job/ImportHBaseData.java   |  2 +-
 .../apache/kylin/job/SampleCubeSetupTest.java   |  4 +-
 .../kylin/job/tools/CubeMigrationTests.java     |  4 +-
 .../java/org/apache/kylin/rest/DebugTomcat.java |  2 +-
 24 files changed, 125 insertions(+), 149 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/common/src/main/java/org/apache/kylin/common/KylinConfig.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/kylin/common/KylinConfig.java b/common/src/main/java/org/apache/kylin/common/KylinConfig.java
index 5656fd3..113afd4 100644
--- a/common/src/main/java/org/apache/kylin/common/KylinConfig.java
+++ b/common/src/main/java/org/apache/kylin/common/KylinConfig.java
@@ -127,7 +127,7 @@ public class KylinConfig {
     public static final String MAIL_SENDER = "mail.sender";
 
     public static final String KYLIN_HOME = "KYLIN_HOME";
-    public static final String KYLIN_CONF_HOME = "KYLIN_CONF_HOME";
+    public static final String KYLIN_CONF = "KYLIN_CONF";
 
     private static final Logger logger = LoggerFactory.getLogger(KylinConfig.class);
 
@@ -532,17 +532,17 @@ public class KylinConfig {
     }
 
     private static File getKylinProperties() {
-        String kylinConfHome = System.getProperty(KYLIN_CONF_HOME);
+        String kylinConfHome = System.getProperty(KYLIN_CONF);
         if (!StringUtils.isEmpty(kylinConfHome)) {
-            logger.info("Use KYLIN_CONF_HOME=" + kylinConfHome);
+            logger.info("Use KYLIN_CONF=" + kylinConfHome);
             return getKylinPropertiesFile(kylinConfHome);
         }
 
-        logger.warn("KYLIN_CONF_HOME property was not set, will seek KYLIN_HOME env variable");
+        logger.warn("KYLIN_CONF property was not set, will seek KYLIN_HOME env variable");
 
         String kylinHome = getKylinHome();
         if (StringUtils.isEmpty(kylinHome))
-            throw new RuntimeException("Didn't find KYLIN_CONF_HOME or KYLIN_HOME, please set one of them");
+            throw new RuntimeException("Didn't find KYLIN_CONF or KYLIN_HOME, please set one of them");
 
         String path = kylinHome + File.separator + "conf";
         return getKylinPropertiesFile(path);

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/common/src/main/java/org/apache/kylin/common/util/ClassUtil.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/kylin/common/util/ClassUtil.java b/common/src/main/java/org/apache/kylin/common/util/ClassUtil.java
new file mode 100644
index 0000000..b474c58
--- /dev/null
+++ b/common/src/main/java/org/apache/kylin/common/util/ClassUtil.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+package org.apache.kylin.common.util;
+
+import java.io.File;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+/**
+ * @author xduo
+ * 
+ */
+public class ClassUtil {
+
+    public static void addClasspath(String path) throws Exception {
+        System.out.println("Adding path " + path + " to class path");
+        File file = new File(path);
+
+        if (file.exists()) {
+            URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
+            Class<URLClassLoader> urlClass = URLClassLoader.class;
+            Method method = urlClass.getDeclaredMethod("addURL", new Class[] { URL.class });
+            method.setAccessible(true);
+            method.invoke(urlClassLoader, new Object[] { file.toURI().toURL() });
+        }
+    }
+    
+    @SuppressWarnings("unchecked")
+    public static <T> Class<? extends T> forName(String name, Class<T> clz) throws ClassNotFoundException {
+        if (name.startsWith("com.kylinolap")) {
+            name = "org.apache.kylin" + name.substring("com.kylinolap".length());
+        }
+        return (Class<? extends T>) Class.forName(name);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/common/src/main/java/org/apache/kylin/common/util/ClasspathUtil.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/kylin/common/util/ClasspathUtil.java b/common/src/main/java/org/apache/kylin/common/util/ClasspathUtil.java
deleted file mode 100644
index fc982f1..0000000
--- a/common/src/main/java/org/apache/kylin/common/util/ClasspathUtil.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.common.util;
-
-import java.io.File;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.net.URLClassLoader;
-
-/**
- * @author xduo
- * 
- */
-public class ClasspathUtil {
-
-    public static void addClasspath(String path) throws Exception {
-        System.out.println("Adding path " + path + " to class path");
-        File file = new File(path);
-
-        if (file.exists()) {
-            URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
-            Class<URLClassLoader> urlClass = URLClassLoader.class;
-            Method method = urlClass.getDeclaredMethod("addURL", new Class[] { URL.class });
-            method.setAccessible(true);
-            method.invoke(urlClassLoader, new Object[] { file.toURI().toURL() });
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/common/src/test/java/org/apache/kylin/common/persistence/ResourceToolTest.java
----------------------------------------------------------------------
diff --git a/common/src/test/java/org/apache/kylin/common/persistence/ResourceToolTest.java b/common/src/test/java/org/apache/kylin/common/persistence/ResourceToolTest.java
index bac8e00..8a72cdf 100644
--- a/common/src/test/java/org/apache/kylin/common/persistence/ResourceToolTest.java
+++ b/common/src/test/java/org/apache/kylin/common/persistence/ResourceToolTest.java
@@ -26,7 +26,7 @@ import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
 
-import org.apache.kylin.common.util.ClasspathUtil;
+import org.apache.kylin.common.util.ClassUtil;
 
 /**
  * Created by honma on 9/18/14.
@@ -35,7 +35,7 @@ import org.apache.kylin.common.util.ClasspathUtil;
 public class ResourceToolTest {
     @Before
     public void setup() throws Exception {
-        ClasspathUtil.addClasspath(new File("../examples/test_case_data/hadoop-site").getAbsolutePath());
+        ClassUtil.addClasspath(new File("../examples/test_case_data/hadoop-site").getAbsolutePath());
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/common/src/test/java/org/apache/kylin/common/util/AbstractKylinTestCase.java
----------------------------------------------------------------------
diff --git a/common/src/test/java/org/apache/kylin/common/util/AbstractKylinTestCase.java b/common/src/test/java/org/apache/kylin/common/util/AbstractKylinTestCase.java
index 7734e48..36a9287 100644
--- a/common/src/test/java/org/apache/kylin/common/util/AbstractKylinTestCase.java
+++ b/common/src/test/java/org/apache/kylin/common/util/AbstractKylinTestCase.java
@@ -50,14 +50,14 @@ public abstract class AbstractKylinTestCase {
 
         KylinConfig.destoryInstance();
 
-        if (System.getProperty(KylinConfig.KYLIN_CONF_HOME) == null && System.getenv(KylinConfig.KYLIN_CONF_HOME) == null)
-            System.setProperty(KylinConfig.KYLIN_CONF_HOME, kylinConfigFolder);
+        if (System.getProperty(KylinConfig.KYLIN_CONF) == null && System.getenv(KylinConfig.KYLIN_CONF) == null)
+            System.setProperty(KylinConfig.KYLIN_CONF, kylinConfigFolder);
 
     }
 
     public static void staticCleanupTestMetadata() {
         cleanupCache();
-        System.clearProperty(KylinConfig.KYLIN_CONF_HOME);
+        System.clearProperty(KylinConfig.KYLIN_CONF);
         KylinConfig.destoryInstance();
 
     }

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/common/src/test/java/org/apache/kylin/common/util/BasicHadoopTest.java
----------------------------------------------------------------------
diff --git a/common/src/test/java/org/apache/kylin/common/util/BasicHadoopTest.java b/common/src/test/java/org/apache/kylin/common/util/BasicHadoopTest.java
index 7d5f6f4..8278939 100644
--- a/common/src/test/java/org/apache/kylin/common/util/BasicHadoopTest.java
+++ b/common/src/test/java/org/apache/kylin/common/util/BasicHadoopTest.java
@@ -41,7 +41,7 @@ public class BasicHadoopTest {
 
     @BeforeClass
     public static void setup() throws Exception {
-        ClasspathUtil.addClasspath(new File("../examples/test_case_data/hadoop-site").getAbsolutePath());
+        ClassUtil.addClasspath(new File("../examples/test_case_data/hadoop-site").getAbsolutePath());
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/common/src/test/java/org/apache/kylin/common/util/HBaseMetadataTestCase.java
----------------------------------------------------------------------
diff --git a/common/src/test/java/org/apache/kylin/common/util/HBaseMetadataTestCase.java b/common/src/test/java/org/apache/kylin/common/util/HBaseMetadataTestCase.java
index 17f660d..90970e5 100644
--- a/common/src/test/java/org/apache/kylin/common/util/HBaseMetadataTestCase.java
+++ b/common/src/test/java/org/apache/kylin/common/util/HBaseMetadataTestCase.java
@@ -28,7 +28,7 @@ public class HBaseMetadataTestCase extends AbstractKylinTestCase {
     static {
         if (useSandbox()) {
             try {
-                ClasspathUtil.addClasspath(new File("../examples/test_case_data/sandbox/").getAbsolutePath());
+                ClassUtil.addClasspath(new File("../examples/test_case_data/sandbox/").getAbsolutePath());
             } catch (Exception e) {
                 e.printStackTrace();
             }

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java
----------------------------------------------------------------------
diff --git a/common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java b/common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java
index 56afe51..60db6eb 100644
--- a/common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java
+++ b/common/src/test/java/org/apache/kylin/common/util/LocalFileMetadataTestCase.java
@@ -47,8 +47,8 @@ public class LocalFileMetadataTestCase extends AbstractKylinTestCase {
             e.printStackTrace();
         }
 
-        if (System.getProperty(KylinConfig.KYLIN_CONF_HOME) == null && System.getenv(KylinConfig.KYLIN_CONF_HOME) == null)
-            System.setProperty(KylinConfig.KYLIN_CONF_HOME, tempTestMetadataUrl);
+        if (System.getProperty(KylinConfig.KYLIN_CONF) == null && System.getenv(KylinConfig.KYLIN_CONF) == null)
+            System.setProperty(KylinConfig.KYLIN_CONF, tempTestMetadataUrl);
 
         KylinConfig.getInstanceFromEnv().setMetadataUrl(tempTestMetadataUrl);
     }

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/dictionary/src/main/java/org/apache/kylin/dict/DictionaryInfoSerializer.java
----------------------------------------------------------------------
diff --git a/dictionary/src/main/java/org/apache/kylin/dict/DictionaryInfoSerializer.java b/dictionary/src/main/java/org/apache/kylin/dict/DictionaryInfoSerializer.java
index 14cb845..5b7a318 100644
--- a/dictionary/src/main/java/org/apache/kylin/dict/DictionaryInfoSerializer.java
+++ b/dictionary/src/main/java/org/apache/kylin/dict/DictionaryInfoSerializer.java
@@ -23,6 +23,7 @@ import java.io.DataOutputStream;
 import java.io.IOException;
 
 import org.apache.kylin.common.persistence.Serializer;
+import org.apache.kylin.common.util.ClassUtil;
 import org.apache.kylin.common.util.JsonUtil;
 
 /**
@@ -61,7 +62,7 @@ public class DictionaryInfoSerializer implements Serializer<DictionaryInfo> {
         if (infoOnly == false) {
             Dictionary<?> dict;
             try {
-                dict = (Dictionary<?>) Util.classForName(obj.getDictionaryClass()).newInstance();
+                dict = (Dictionary<?>) ClassUtil.forName(obj.getDictionaryClass(), Dictionary.class).newInstance();
             } catch (InstantiationException e) {
                 throw new RuntimeException(e);
             } catch (IllegalAccessException e) {

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/dictionary/src/main/java/org/apache/kylin/dict/TrieDictionary.java
----------------------------------------------------------------------
diff --git a/dictionary/src/main/java/org/apache/kylin/dict/TrieDictionary.java b/dictionary/src/main/java/org/apache/kylin/dict/TrieDictionary.java
index aafbcc4..ef845ce 100644
--- a/dictionary/src/main/java/org/apache/kylin/dict/TrieDictionary.java
+++ b/dictionary/src/main/java/org/apache/kylin/dict/TrieDictionary.java
@@ -29,6 +29,7 @@ import java.util.Arrays;
 import java.util.HashMap;
 
 import org.apache.kylin.common.util.BytesUtil;
+import org.apache.kylin.common.util.ClassUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -101,7 +102,7 @@ public class TrieDictionary<T> extends Dictionary<T> {
 
             String converterName = headIn.readUTF();
             if (converterName.isEmpty() == false)
-                this.bytesConvert = (BytesConverter<T>) Util.classForName(converterName).newInstance();
+                this.bytesConvert = (BytesConverter<T>) ClassUtil.forName(converterName, BytesConverter.class).newInstance();
 
             this.nValues = BytesUtil.readUnsigned(trieBytes, headSize + sizeChildOffset, sizeNoValuesBeneath);
             this.sizeOfId = BytesUtil.sizeForValue(baseId + nValues + 1); // note baseId could raise 1 byte in ID space, +1 to reserve all 0xFF for NULL case

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/dictionary/src/main/java/org/apache/kylin/dict/Util.java
----------------------------------------------------------------------
diff --git a/dictionary/src/main/java/org/apache/kylin/dict/Util.java b/dictionary/src/main/java/org/apache/kylin/dict/Util.java
deleted file mode 100644
index f10041f..0000000
--- a/dictionary/src/main/java/org/apache/kylin/dict/Util.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.dict;
-
-class Util {
-    
-    /*
-     * There are class names serialized into dict files. After apache package renaming, the old class names
-     * requires adjustment in order to find the right class under new package.
-     */
-    static Class<?> classForName(String className) throws ClassNotFoundException {
-        try {
-            return Class.forName(className);
-        } catch (ClassNotFoundException e) {
-            
-            // if package names were changed?
-            int cut = className.lastIndexOf('.');
-            String pkg = className.substring(0, cut);
-            String newPkg = Util.class.getPackage().getName();
-            if (pkg.equals(newPkg))
-                throw e;
-            
-            // find again under new package
-            String newClassName = newPkg + className.substring(cut);
-            return Class.forName(newClassName);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/job/src/main/java/org/apache/kylin/job/CubeMetadataUpgrade.java
----------------------------------------------------------------------
diff --git a/job/src/main/java/org/apache/kylin/job/CubeMetadataUpgrade.java b/job/src/main/java/org/apache/kylin/job/CubeMetadataUpgrade.java
index fadaa8c..ae03e26 100644
--- a/job/src/main/java/org/apache/kylin/job/CubeMetadataUpgrade.java
+++ b/job/src/main/java/org/apache/kylin/job/CubeMetadataUpgrade.java
@@ -89,7 +89,7 @@ public class CubeMetadataUpgrade {
 
     public CubeMetadataUpgrade(String newMetadataUrl) {
         KylinConfig.destoryInstance();
-        System.setProperty(KylinConfig.KYLIN_CONF_HOME, newMetadataUrl);
+        System.setProperty(KylinConfig.KYLIN_CONF, newMetadataUrl);
         KylinConfig.getInstanceFromEnv().setMetadataUrl(newMetadataUrl);
 
 

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/job/src/main/java/org/apache/kylin/job/common/HadoopShellExecutable.java
----------------------------------------------------------------------
diff --git a/job/src/main/java/org/apache/kylin/job/common/HadoopShellExecutable.java b/job/src/main/java/org/apache/kylin/job/common/HadoopShellExecutable.java
index bc1c419..371e078 100644
--- a/job/src/main/java/org/apache/kylin/job/common/HadoopShellExecutable.java
+++ b/job/src/main/java/org/apache/kylin/job/common/HadoopShellExecutable.java
@@ -25,6 +25,8 @@ import java.lang.reflect.Constructor;
 import org.apache.hadoop.util.ToolRunner;
 
 import com.google.common.base.Preconditions;
+
+import org.apache.kylin.common.util.ClassUtil;
 import org.apache.kylin.job.exception.ExecuteException;
 import org.apache.kylin.job.execution.ExecutableContext;
 import org.apache.kylin.job.execution.ExecuteResult;
@@ -43,7 +45,6 @@ public class HadoopShellExecutable extends AbstractExecutable {
         super();
     }
 
-    @SuppressWarnings("unchecked")
     @Override
     protected ExecuteResult doWork(ExecutableContext context) throws ExecuteException {
         final String mapReduceJobClass = getJobClass();
@@ -51,7 +52,7 @@ public class HadoopShellExecutable extends AbstractExecutable {
         Preconditions.checkNotNull(mapReduceJobClass);
         Preconditions.checkNotNull(params);
         try {
-            final Constructor<? extends AbstractHadoopJob> constructor = (Constructor<? extends AbstractHadoopJob>) Class.forName(mapReduceJobClass).getConstructor();
+            final Constructor<? extends AbstractHadoopJob> constructor = ClassUtil.forName(mapReduceJobClass, AbstractHadoopJob.class).getConstructor();
             final AbstractHadoopJob job = constructor.newInstance();
             String[] args = params.trim().split("\\s+");
             logger.info("parameters of the HadoopShellExecutable:");

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/job/src/main/java/org/apache/kylin/job/common/MapReduceExecutable.java
----------------------------------------------------------------------
diff --git a/job/src/main/java/org/apache/kylin/job/common/MapReduceExecutable.java b/job/src/main/java/org/apache/kylin/job/common/MapReduceExecutable.java
index 1ea1620..0b8d5b6 100644
--- a/job/src/main/java/org/apache/kylin/job/common/MapReduceExecutable.java
+++ b/job/src/main/java/org/apache/kylin/job/common/MapReduceExecutable.java
@@ -18,27 +18,33 @@
 
 package org.apache.kylin.job.common;
 
-import com.google.common.base.Preconditions;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.lang.reflect.Constructor;
+import java.util.Map;
+
 import org.apache.commons.lang.StringUtils;
-import org.apache.kylin.common.KylinConfig;
-import org.apache.kylin.job.constant.ExecutableConstants;
-import org.apache.kylin.job.constant.JobStepStatusEnum;
-import org.apache.kylin.job.exception.ExecuteException;
-import org.apache.kylin.job.execution.*;
-import org.apache.kylin.job.hadoop.AbstractHadoopJob;
-import org.apache.kylin.job.tools.HadoopStatusChecker;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.mapreduce.Cluster;
 import org.apache.hadoop.mapreduce.Job;
 import org.apache.hadoop.mapreduce.JobID;
 import org.apache.hadoop.mapreduce.JobStatus;
 import org.apache.hadoop.util.ToolRunner;
+import org.apache.kylin.common.KylinConfig;
+import org.apache.kylin.common.util.ClassUtil;
+import org.apache.kylin.job.constant.ExecutableConstants;
+import org.apache.kylin.job.constant.JobStepStatusEnum;
+import org.apache.kylin.job.exception.ExecuteException;
+import org.apache.kylin.job.execution.AbstractExecutable;
+import org.apache.kylin.job.execution.ExecutableContext;
+import org.apache.kylin.job.execution.ExecutableState;
+import org.apache.kylin.job.execution.ExecuteResult;
+import org.apache.kylin.job.execution.Output;
+import org.apache.kylin.job.hadoop.AbstractHadoopJob;
+import org.apache.kylin.job.tools.HadoopStatusChecker;
 
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.lang.reflect.Constructor;
-import java.util.Map;
+import com.google.common.base.Preconditions;
 
 /**
  * Created by qianzhou on 12/25/14.
@@ -82,7 +88,6 @@ public class MapReduceExecutable extends AbstractExecutable {
         }
     }
 
-    @SuppressWarnings("unchecked")
     @Override
     protected ExecuteResult doWork(ExecutableContext context) throws ExecuteException {
         final String mapReduceJobClass = getMapReduceJobClass();
@@ -96,7 +101,7 @@ public class MapReduceExecutable extends AbstractExecutable {
                 job = new Cluster(new Configuration()).getJob(JobID.forName(extra.get(ExecutableConstants.MR_JOB_ID)));
                 logger.info("mr_job_id:" + extra.get(ExecutableConstants.MR_JOB_ID + " resumed"));
             } else {
-                final Constructor<? extends AbstractHadoopJob> constructor = (Constructor<? extends AbstractHadoopJob>) Class.forName(mapReduceJobClass).getConstructor();
+                final Constructor<? extends AbstractHadoopJob> constructor = ClassUtil.forName(mapReduceJobClass, AbstractHadoopJob.class).getConstructor();
                 final AbstractHadoopJob hadoopJob = constructor.newInstance();
                 hadoopJob.setAsync(true); // so the ToolRunner.run() returns right away
                 logger.info("parameters of the MapReduceExecutable:");

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/job/src/main/java/org/apache/kylin/job/engine/JobEngineConfig.java
----------------------------------------------------------------------
diff --git a/job/src/main/java/org/apache/kylin/job/engine/JobEngineConfig.java b/job/src/main/java/org/apache/kylin/job/engine/JobEngineConfig.java
index 08a5a2e..8cc44bf 100644
--- a/job/src/main/java/org/apache/kylin/job/engine/JobEngineConfig.java
+++ b/job/src/main/java/org/apache/kylin/job/engine/JobEngineConfig.java
@@ -35,7 +35,7 @@ public class JobEngineConfig {
     public static String HADOOP_JOB_CONF_FILENAME = "kylin_job_conf";
 
     private static File getJobConfig(String fileName) {
-        String path = System.getProperty(KylinConfig.KYLIN_CONF_HOME);
+        String path = System.getProperty(KylinConfig.KYLIN_CONF);
         if (StringUtils.isNotEmpty(path)) {
             return new File(path, fileName);
         }

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/job/src/main/java/org/apache/kylin/job/hadoop/AbstractHadoopJob.java
----------------------------------------------------------------------
diff --git a/job/src/main/java/org/apache/kylin/job/hadoop/AbstractHadoopJob.java b/job/src/main/java/org/apache/kylin/job/hadoop/AbstractHadoopJob.java
index 1997327..a8dc687 100644
--- a/job/src/main/java/org/apache/kylin/job/hadoop/AbstractHadoopJob.java
+++ b/job/src/main/java/org/apache/kylin/job/hadoop/AbstractHadoopJob.java
@@ -303,7 +303,7 @@ public abstract class AbstractHadoopJob extends Configured implements Tool {
 
     public static KylinConfig loadKylinPropsAndMetadata(Configuration conf) throws IOException {
         File metaDir = new File("meta");
-        System.setProperty(KylinConfig.KYLIN_CONF_HOME, metaDir.getAbsolutePath());
+        System.setProperty(KylinConfig.KYLIN_CONF, metaDir.getAbsolutePath());
         logger.info("The absolute path for meta dir is " + metaDir.getAbsolutePath());
         KylinConfig kylinConfig = KylinConfig.getInstanceFromEnv();
         kylinConfig.setMetadataUrl(metaDir.getCanonicalPath());

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/job/src/main/java/org/apache/kylin/job/manager/ExecutableManager.java
----------------------------------------------------------------------
diff --git a/job/src/main/java/org/apache/kylin/job/manager/ExecutableManager.java b/job/src/main/java/org/apache/kylin/job/manager/ExecutableManager.java
index 46c145f..f51ff69 100644
--- a/job/src/main/java/org/apache/kylin/job/manager/ExecutableManager.java
+++ b/job/src/main/java/org/apache/kylin/job/manager/ExecutableManager.java
@@ -18,29 +18,32 @@
 
 package org.apache.kylin.job.manager;
 
-import com.google.common.base.Function;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
+import java.lang.reflect.Constructor;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javax.annotation.Nullable;
+
 import org.apache.kylin.common.KylinConfig;
+import org.apache.kylin.common.util.ClassUtil;
 import org.apache.kylin.job.dao.ExecutableDao;
 import org.apache.kylin.job.dao.ExecutableOutputPO;
 import org.apache.kylin.job.dao.ExecutablePO;
 import org.apache.kylin.job.exception.IllegalStateTranferException;
 import org.apache.kylin.job.exception.PersistentException;
+import org.apache.kylin.job.execution.AbstractExecutable;
+import org.apache.kylin.job.execution.DefaultChainedExecutable;
 import org.apache.kylin.job.execution.DefaultOutput;
 import org.apache.kylin.job.execution.ExecutableState;
 import org.apache.kylin.job.execution.Output;
-import org.apache.kylin.job.execution.AbstractExecutable;
-import org.apache.kylin.job.execution.DefaultChainedExecutable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.annotation.Nullable;
-import java.lang.reflect.Constructor;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
+import com.google.common.base.Function;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 
 /**
  * Created by qianzhou on 12/16/14.
@@ -49,6 +52,7 @@ public class ExecutableManager {
 
     private static final Logger logger = LoggerFactory.getLogger(ExecutableManager.class);
     private static final ConcurrentHashMap<KylinConfig, ExecutableManager> CACHE = new ConcurrentHashMap<KylinConfig, ExecutableManager>();
+    @SuppressWarnings("unused")
     private final KylinConfig config;
 
     private ExecutableDao executableDao;
@@ -280,7 +284,7 @@ public class ExecutableManager {
         }
         String type = executablePO.getType();
         try {
-            Class<? extends AbstractExecutable> clazz = (Class<? extends AbstractExecutable>) Class.forName(type);
+            Class<? extends AbstractExecutable> clazz = ClassUtil.forName(type, AbstractExecutable.class);
             Constructor<? extends AbstractExecutable> constructor = clazz.getConstructor();
             AbstractExecutable result = constructor.newInstance();
             result.setId(executablePO.getUuid());

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/job/src/test/java/org/apache/kylin/job/BuildCubeWithEngineTest.java
----------------------------------------------------------------------
diff --git a/job/src/test/java/org/apache/kylin/job/BuildCubeWithEngineTest.java b/job/src/test/java/org/apache/kylin/job/BuildCubeWithEngineTest.java
index de15b94..5e5b191 100644
--- a/job/src/test/java/org/apache/kylin/job/BuildCubeWithEngineTest.java
+++ b/job/src/test/java/org/apache/kylin/job/BuildCubeWithEngineTest.java
@@ -23,7 +23,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.util.AbstractKylinTestCase;
-import org.apache.kylin.common.util.ClasspathUtil;
+import org.apache.kylin.common.util.ClassUtil;
 import org.apache.kylin.common.util.HBaseMetadataTestCase;
 import org.apache.kylin.cube.CubeInstance;
 import org.apache.kylin.cube.CubeManager;
@@ -79,8 +79,8 @@ public class BuildCubeWithEngineTest {
     @BeforeClass
     public static void beforeClass() throws Exception {
         logger.info("Adding to classpath: " + new File(HBaseMetadataTestCase.SANDBOX_TEST_DATA).getAbsolutePath());
-        ClasspathUtil.addClasspath(new File(HBaseMetadataTestCase.SANDBOX_TEST_DATA).getAbsolutePath());
-        System.setProperty(KylinConfig.KYLIN_CONF_HOME, "../examples/test_case_data/sandbox");
+        ClassUtil.addClasspath(new File(HBaseMetadataTestCase.SANDBOX_TEST_DATA).getAbsolutePath());
+        System.setProperty(KylinConfig.KYLIN_CONF, "../examples/test_case_data/sandbox");
         System.setProperty("hdp.version", "2.2.0.0-2041"); // mapred-site.xml ref this
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/job/src/test/java/org/apache/kylin/job/BuildIIWithEngineTest.java
----------------------------------------------------------------------
diff --git a/job/src/test/java/org/apache/kylin/job/BuildIIWithEngineTest.java b/job/src/test/java/org/apache/kylin/job/BuildIIWithEngineTest.java
index 522f280..01e1d62 100644
--- a/job/src/test/java/org/apache/kylin/job/BuildIIWithEngineTest.java
+++ b/job/src/test/java/org/apache/kylin/job/BuildIIWithEngineTest.java
@@ -45,7 +45,7 @@ import com.google.common.collect.Lists;
 
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.util.AbstractKylinTestCase;
-import org.apache.kylin.common.util.ClasspathUtil;
+import org.apache.kylin.common.util.ClassUtil;
 import org.apache.kylin.common.util.HBaseMetadataTestCase;
 import org.apache.kylin.invertedindex.IIInstance;
 import org.apache.kylin.invertedindex.IIManager;
@@ -93,7 +93,7 @@ public class BuildIIWithEngineTest {
     @BeforeClass
     public static void beforeClass() throws Exception {
         logger.info("Adding to classpath: " + new File(HBaseMetadataTestCase.SANDBOX_TEST_DATA).getAbsolutePath());
-        ClasspathUtil.addClasspath(new File(HBaseMetadataTestCase.SANDBOX_TEST_DATA).getAbsolutePath());
+        ClassUtil.addClasspath(new File(HBaseMetadataTestCase.SANDBOX_TEST_DATA).getAbsolutePath());
         System.setProperty("hdp.version", "2.2.0.0-2041"); // mapred-site.xml ref this
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/job/src/test/java/org/apache/kylin/job/ExportHBaseData.java
----------------------------------------------------------------------
diff --git a/job/src/test/java/org/apache/kylin/job/ExportHBaseData.java b/job/src/test/java/org/apache/kylin/job/ExportHBaseData.java
index 802e934..919adeb 100644
--- a/job/src/test/java/org/apache/kylin/job/ExportHBaseData.java
+++ b/job/src/test/java/org/apache/kylin/job/ExportHBaseData.java
@@ -59,7 +59,7 @@ public class ExportHBaseData {
         backupArchive = "/tmp/kylin_" + currentTIME + ".tar.gz";
 
         KylinConfig.destoryInstance();
-        System.setProperty(KylinConfig.KYLIN_CONF_HOME, AbstractKylinTestCase.SANDBOX_TEST_DATA);
+        System.setProperty(KylinConfig.KYLIN_CONF, AbstractKylinTestCase.SANDBOX_TEST_DATA);
 
         kylinConfig = KylinConfig.getInstanceFromEnv();
         cli = kylinConfig.getCliCommandExecutor();

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/job/src/test/java/org/apache/kylin/job/ImportHBaseData.java
----------------------------------------------------------------------
diff --git a/job/src/test/java/org/apache/kylin/job/ImportHBaseData.java b/job/src/test/java/org/apache/kylin/job/ImportHBaseData.java
index 22ad069..0f77a20 100644
--- a/job/src/test/java/org/apache/kylin/job/ImportHBaseData.java
+++ b/job/src/test/java/org/apache/kylin/job/ImportHBaseData.java
@@ -51,7 +51,7 @@ public class ImportHBaseData {
     public void setup() throws IOException {
 
         KylinConfig.destoryInstance();
-        System.setProperty(KylinConfig.KYLIN_CONF_HOME, AbstractKylinTestCase.SANDBOX_TEST_DATA);
+        System.setProperty(KylinConfig.KYLIN_CONF, AbstractKylinTestCase.SANDBOX_TEST_DATA);
 
         kylinConfig = KylinConfig.getInstanceFromEnv();
         cli = kylinConfig.getCliCommandExecutor();

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/job/src/test/java/org/apache/kylin/job/SampleCubeSetupTest.java
----------------------------------------------------------------------
diff --git a/job/src/test/java/org/apache/kylin/job/SampleCubeSetupTest.java b/job/src/test/java/org/apache/kylin/job/SampleCubeSetupTest.java
index dabeef0..c643863 100644
--- a/job/src/test/java/org/apache/kylin/job/SampleCubeSetupTest.java
+++ b/job/src/test/java/org/apache/kylin/job/SampleCubeSetupTest.java
@@ -27,7 +27,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import org.apache.kylin.common.KylinConfig;
-import org.apache.kylin.common.util.ClasspathUtil;
+import org.apache.kylin.common.util.ClassUtil;
 import org.apache.kylin.common.util.HBaseMetadataTestCase;
 import org.apache.kylin.cube.CubeInstance;
 import org.apache.kylin.cube.CubeManager;
@@ -50,7 +50,7 @@ public class SampleCubeSetupTest extends HBaseMetadataTestCase {
             for (String path : paths) {
                 if (!StringUtils.isEmpty(path)) {
                     try {
-                        ClasspathUtil.addClasspath(new File(path).getAbsolutePath());
+                        ClassUtil.addClasspath(new File(path).getAbsolutePath());
                     } catch (Exception e) {
                         System.out.println(e.getLocalizedMessage());
                         System.out.println(e.getStackTrace());

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/job/src/test/java/org/apache/kylin/job/tools/CubeMigrationTests.java
----------------------------------------------------------------------
diff --git a/job/src/test/java/org/apache/kylin/job/tools/CubeMigrationTests.java b/job/src/test/java/org/apache/kylin/job/tools/CubeMigrationTests.java
index f02cdf8..0f204e6 100644
--- a/job/src/test/java/org/apache/kylin/job/tools/CubeMigrationTests.java
+++ b/job/src/test/java/org/apache/kylin/job/tools/CubeMigrationTests.java
@@ -28,7 +28,7 @@ import org.junit.Ignore;
 import org.junit.Test;
 
 import org.apache.kylin.common.util.AbstractKylinTestCase;
-import org.apache.kylin.common.util.ClasspathUtil;
+import org.apache.kylin.common.util.ClassUtil;
 import org.apache.kylin.common.util.LocalFileMetadataTestCase;
 
 /**
@@ -39,7 +39,7 @@ public class CubeMigrationTests extends LocalFileMetadataTestCase {
     @Before
     public void setup() throws Exception {
         super.createTestMetadata();
-        ClasspathUtil.addClasspath(new File(AbstractKylinTestCase.SANDBOX_TEST_DATA).getAbsolutePath());
+        ClassUtil.addClasspath(new File(AbstractKylinTestCase.SANDBOX_TEST_DATA).getAbsolutePath());
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/b928cc26/server/src/main/java/org/apache/kylin/rest/DebugTomcat.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/kylin/rest/DebugTomcat.java b/server/src/main/java/org/apache/kylin/rest/DebugTomcat.java
index 8588831..e3d0b09 100644
--- a/server/src/main/java/org/apache/kylin/rest/DebugTomcat.java
+++ b/server/src/main/java/org/apache/kylin/rest/DebugTomcat.java
@@ -42,7 +42,7 @@ public class DebugTomcat {
         
         // test_case_data/sandbox/ contains HDP 2.2 site xmls which is dev sandbox
         ClasspathUtil.addClasspath(new File("../examples/test_case_data/sandbox").getAbsolutePath());
-        System.setProperty(KylinConfig.KYLIN_CONF_HOME, "../examples/test_case_data/sandbox");
+        System.setProperty(KylinConfig.KYLIN_CONF, "../examples/test_case_data/sandbox");
         System.setProperty("hdp.version", "2.2.0.0-2041"); // mapred-site.xml ref this
 
         // workaround for job submission from win to linux -- https://issues.apache.org/jira/browse/MAPREDUCE-4052