Repository: kylin
Updated Branches:
  refs/heads/master 44ee970ca -> 696fb89aa


minor, introduce KylinConfigCannotInitException


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

Branch: refs/heads/master
Commit: 696fb89aa2eb684408d1009218f80fe323dffd3b
Parents: 44ee970
Author: Hongbin Ma <mahong...@apache.org>
Authored: Wed Jul 20 17:19:19 2016 +0800
Committer: Hongbin Ma <mahong...@apache.org>
Committed: Wed Jul 20 17:19:34 2016 +0800

----------------------------------------------------------------------
 .../org/apache/kylin/common/KylinConfig.java    |  2 +-
 .../common/KylinConfigCannotInitException.java  | 25 ++++++++++++++++++++
 .../kylin/common/persistence/ResourceStore.java |  2 +-
 .../kylin/measure/MeasureTypeFactory.java       | 23 ++++++++++++++----
 4 files changed, 45 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/696fb89a/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java 
b/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
index b73e5fa..14d7be3 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
@@ -185,7 +185,7 @@ public class KylinConfig extends KylinConfigBase {
 
         String kylinHome = getKylinHome();
         if (StringUtils.isEmpty(kylinHome))
-            throw new RuntimeException("Didn't find KYLIN_CONF or KYLIN_HOME, 
please set one of them");
+            throw new KylinConfigCannotInitException("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/kylin/blob/696fb89a/core-common/src/main/java/org/apache/kylin/common/KylinConfigCannotInitException.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/KylinConfigCannotInitException.java
 
b/core-common/src/main/java/org/apache/kylin/common/KylinConfigCannotInitException.java
new file mode 100644
index 0000000..7113872
--- /dev/null
+++ 
b/core-common/src/main/java/org/apache/kylin/common/KylinConfigCannotInitException.java
@@ -0,0 +1,25 @@
+/*
+ * 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;
+
+public class KylinConfigCannotInitException extends RuntimeException {
+    public KylinConfigCannotInitException(String message) {
+        super(message);
+    }
+}

http://git-wip-us.apache.org/repos/asf/kylin/blob/696fb89a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
 
b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
index 99a9695..532e7aa 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
@@ -69,7 +69,7 @@ abstract public class ResourceStore {
             try {
                 
knownImpl.add(ClassUtil.forName("org.apache.kylin.storage.hbase.HBaseResourceStore",
 ResourceStore.class));
             } catch (Throwable e) {
-                logger.warn("Failed to load ResourceStore impl class: " + 
e.toString());
+                logger.warn("Failed to load HBaseResourceStore impl class: " + 
e.toString());
             }
         }
         return knownImpl;

http://git-wip-us.apache.org/repos/asf/kylin/blob/696fb89a/core-metadata/src/main/java/org/apache/kylin/measure/MeasureTypeFactory.java
----------------------------------------------------------------------
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/measure/MeasureTypeFactory.java 
b/core-metadata/src/main/java/org/apache/kylin/measure/MeasureTypeFactory.java
index d7a9305..17d841a 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/measure/MeasureTypeFactory.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/measure/MeasureTypeFactory.java
@@ -22,6 +22,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.kylin.common.KylinConfig;
+import org.apache.kylin.common.KylinConfigCannotInitException;
 import org.apache.kylin.measure.basic.BasicMeasureType;
 import org.apache.kylin.measure.bitmap.BitmapMeasureType;
 import org.apache.kylin.measure.dim.DimCountDistinctMeasureType;
@@ -31,6 +32,8 @@ import org.apache.kylin.measure.raw.RawMeasureType;
 import org.apache.kylin.measure.topn.TopNMeasureType;
 import org.apache.kylin.metadata.datatype.DataType;
 import org.apache.kylin.metadata.datatype.DataTypeSerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -62,6 +65,8 @@ import com.google.common.collect.Maps;
  */
 abstract public class MeasureTypeFactory<T> {
 
+    private static final Logger logger = 
LoggerFactory.getLogger(MeasureTypeFactory.class);
+
     /**
      * Create a measure type with specified aggregation function and data type.
      * 
@@ -102,12 +107,19 @@ abstract public class MeasureTypeFactory<T> {
         factoryInsts.add(new RawMeasureType.Factory());
         factoryInsts.add(new ExtendedColumnMeasureType.Factory());
 
-        for (String customFactory : 
KylinConfig.getInstanceFromEnv().getCubeCustomMeasureTypes().values()) {
-            try {
-                factoryInsts.add((MeasureTypeFactory<?>) 
Class.forName(customFactory).newInstance());
-            } catch (Exception e) {
-                throw new IllegalArgumentException("Unrecognized 
MeasureTypeFactory classname: " + customFactory, e);
+        logger.info("Checking custom measure types from kylin config");
+
+        try {
+            for (String customFactory : 
KylinConfig.getInstanceFromEnv().getCubeCustomMeasureTypes().values()) {
+                try {
+                    logger.info("Checking custom measure types from kylin 
config: " + customFactory);
+                    factoryInsts.add((MeasureTypeFactory<?>) 
Class.forName(customFactory).newInstance());
+                } catch (Exception e) {
+                    throw new IllegalArgumentException("Unrecognized 
MeasureTypeFactory classname: " + customFactory, e);
+                }
             }
+        } catch (KylinConfigCannotInitException e) {
+            logger.warn("Will not add custome MeasureTypeFactory as KYLIN_CONF 
nor KYLIN_HOME is set");
         }
 
         // register factories & data type serializers
@@ -120,6 +132,7 @@ abstract public class MeasureTypeFactory<T> {
                 throw new IllegalArgumentException("Aggregation data type name 
'" + dataTypeName + "' must be in lower case");
             Class<? extends DataTypeSerializer<?>> serializer = 
factory.getAggrDataTypeSerializer();
 
+            logger.info("registering " + dataTypeName);
             DataType.register(dataTypeName);
             DataTypeSerializer.register(dataTypeName, serializer);
             List<MeasureTypeFactory<?>> list = factories.get(funcName);

Reply via email to