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/11/24 03:29:13 UTC

incubator-kylin git commit: KYLIN-1160 Set default logger appender of log4j for JDBC Driver

Repository: incubator-kylin
Updated Branches:
  refs/heads/2.x-staging e62e0b3ef -> eb568c02e


KYLIN-1160 Set default logger appender of log4j for JDBC Driver

Signed-off-by: Li, Yang <ya...@ebay.com>


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

Branch: refs/heads/2.x-staging
Commit: eb568c02e6e2762f7889245108ad0d6b0bd05617
Parents: e62e0b3
Author: lidongsjtu <do...@ebay.com>
Authored: Tue Nov 24 09:43:48 2015 +0800
Committer: Li, Yang <ya...@ebay.com>
Committed: Tue Nov 24 10:28:51 2015 +0800

----------------------------------------------------------------------
 .../java/org/apache/kylin/jdbc/KylinClient.java | 196 +++++++++----------
 .../org/apache/kylin/jdbc/KylinConnection.java  |   4 +-
 .../kylin/jdbc/util/DefaultLoggerFactory.java   |  21 ++
 .../util/DefaultSslProtocolSocketFactory.java   |  35 ++--
 .../jdbc/util/DefaultX509TrustManager.java      |   3 +-
 5 files changed, 139 insertions(+), 120 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/eb568c02/jdbc/src/main/java/org/apache/kylin/jdbc/KylinClient.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinClient.java b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinClient.java
index b7b407e..a8f101e 100644
--- a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinClient.java
+++ b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinClient.java
@@ -36,16 +36,16 @@ import org.apache.kylin.jdbc.json.SQLResponseStub;
 import org.apache.kylin.jdbc.json.StatementParameter;
 import org.apache.kylin.jdbc.json.TableMetaStub;
 import org.apache.kylin.jdbc.json.TableMetaStub.ColumnMetaStub;
+import org.apache.kylin.jdbc.util.DefaultLoggerFactory;
 import org.apache.kylin.jdbc.util.DefaultSslProtocolSocketFactory;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 public class KylinClient implements IRemoteClient {
 
-    private static final Logger logger = LoggerFactory.getLogger(KylinClient.class);
+    private static final Logger logger = DefaultLoggerFactory.getLogger(KylinClient.class);
 
     private final KylinConnection conn;
     private final Properties connProps;
@@ -64,6 +64,102 @@ public class KylinClient implements IRemoteClient {
         }
     }
 
+    @SuppressWarnings("rawtypes")
+    public static Class convertType(int sqlType) {
+        Class result = Object.class;
+
+        switch (sqlType) {
+        case Types.CHAR:
+        case Types.VARCHAR:
+        case Types.LONGVARCHAR:
+            result = String.class;
+            break;
+        case Types.NUMERIC:
+        case Types.DECIMAL:
+            result = BigDecimal.class;
+            break;
+        case Types.BIT:
+            result = Boolean.class;
+            break;
+        case Types.TINYINT:
+            result = Byte.class;
+            break;
+        case Types.SMALLINT:
+            result = Short.class;
+            break;
+        case Types.INTEGER:
+            result = Integer.class;
+            break;
+        case Types.BIGINT:
+            result = Long.class;
+            break;
+        case Types.REAL:
+        case Types.FLOAT:
+        case Types.DOUBLE:
+            result = Double.class;
+            break;
+        case Types.BINARY:
+        case Types.VARBINARY:
+        case Types.LONGVARBINARY:
+            result = Byte[].class;
+            break;
+        case Types.DATE:
+            result = Date.class;
+            break;
+        case Types.TIME:
+            result = Time.class;
+            break;
+        case Types.TIMESTAMP:
+            result = Timestamp.class;
+            break;
+        }
+
+        return result;
+    }
+
+    public static Object wrapObject(String value, int sqlType) {
+        if (null == value) {
+            return null;
+        }
+
+        switch (sqlType) {
+        case Types.CHAR:
+        case Types.VARCHAR:
+        case Types.LONGVARCHAR:
+            return value;
+        case Types.NUMERIC:
+        case Types.DECIMAL:
+            return new BigDecimal(value);
+        case Types.BIT:
+            return Boolean.parseBoolean(value);
+        case Types.TINYINT:
+            return Byte.valueOf(value);
+        case Types.SMALLINT:
+            return Short.valueOf(value);
+        case Types.INTEGER:
+            return Integer.parseInt(value);
+        case Types.BIGINT:
+            return Long.parseLong(value);
+        case Types.FLOAT:
+            return Float.parseFloat(value);
+        case Types.REAL:
+        case Types.DOUBLE:
+            return Double.parseDouble(value);
+        case Types.BINARY:
+        case Types.VARBINARY:
+        case Types.LONGVARBINARY:
+            return value.getBytes();
+        case Types.DATE:
+            return Date.valueOf(value);
+        case Types.TIME:
+            return Time.valueOf(value);
+        case Types.TIMESTAMP:
+            return Timestamp.valueOf(value);
+        }
+
+        return value;
+    }
+
     private boolean isSSL() {
         return Boolean.parseBoolean(connProps.getProperty("ssl", "false"));
     }
@@ -271,102 +367,6 @@ public class KylinClient implements IRemoteClient {
         return new IOException(method + " failed, error code " + method.getStatusCode() + " and response: " + method.getResponseBodyAsString());
     }
 
-    @SuppressWarnings("rawtypes")
-    public static Class convertType(int sqlType) {
-        Class result = Object.class;
-
-        switch (sqlType) {
-        case Types.CHAR:
-        case Types.VARCHAR:
-        case Types.LONGVARCHAR:
-            result = String.class;
-            break;
-        case Types.NUMERIC:
-        case Types.DECIMAL:
-            result = BigDecimal.class;
-            break;
-        case Types.BIT:
-            result = Boolean.class;
-            break;
-        case Types.TINYINT:
-            result = Byte.class;
-            break;
-        case Types.SMALLINT:
-            result = Short.class;
-            break;
-        case Types.INTEGER:
-            result = Integer.class;
-            break;
-        case Types.BIGINT:
-            result = Long.class;
-            break;
-        case Types.REAL:
-        case Types.FLOAT:
-        case Types.DOUBLE:
-            result = Double.class;
-            break;
-        case Types.BINARY:
-        case Types.VARBINARY:
-        case Types.LONGVARBINARY:
-            result = Byte[].class;
-            break;
-        case Types.DATE:
-            result = Date.class;
-            break;
-        case Types.TIME:
-            result = Time.class;
-            break;
-        case Types.TIMESTAMP:
-            result = Timestamp.class;
-            break;
-        }
-
-        return result;
-    }
-
-    public static Object wrapObject(String value, int sqlType) {
-        if (null == value) {
-            return null;
-        }
-
-        switch (sqlType) {
-        case Types.CHAR:
-        case Types.VARCHAR:
-        case Types.LONGVARCHAR:
-            return value;
-        case Types.NUMERIC:
-        case Types.DECIMAL:
-            return new BigDecimal(value);
-        case Types.BIT:
-            return Boolean.parseBoolean(value);
-        case Types.TINYINT:
-            return Byte.valueOf(value);
-        case Types.SMALLINT:
-            return Short.valueOf(value);
-        case Types.INTEGER:
-            return Integer.parseInt(value);
-        case Types.BIGINT:
-            return Long.parseLong(value);
-        case Types.FLOAT:
-            return Float.parseFloat(value);
-        case Types.REAL:
-        case Types.DOUBLE:
-            return Double.parseDouble(value);
-        case Types.BINARY:
-        case Types.VARBINARY:
-        case Types.LONGVARBINARY:
-            return value.getBytes();
-        case Types.DATE:
-            return Date.valueOf(value);
-        case Types.TIME:
-            return Time.valueOf(value);
-        case Types.TIMESTAMP:
-            return Timestamp.valueOf(value);
-        }
-
-        return value;
-    }
-
     @Override
     public void close() throws IOException {
     }

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/eb568c02/jdbc/src/main/java/org/apache/kylin/jdbc/KylinConnection.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinConnection.java b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinConnection.java
index 86c8d1d..4558d0e 100644
--- a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinConnection.java
+++ b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinConnection.java
@@ -36,12 +36,12 @@ import org.apache.calcite.avatica.Meta;
 import org.apache.calcite.avatica.Meta.CursorFactory;
 import org.apache.calcite.avatica.Meta.Signature;
 import org.apache.calcite.avatica.UnregisteredDriver;
+import org.apache.kylin.jdbc.util.DefaultLoggerFactory;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class KylinConnection extends AvaticaConnection {
 
-    private static final Logger logger = LoggerFactory.getLogger(KylinConnection.class);
+    private static final Logger logger = DefaultLoggerFactory.getLogger(KylinConnection.class);
 
     private final String baseUrl;
     private final String project;

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/eb568c02/jdbc/src/main/java/org/apache/kylin/jdbc/util/DefaultLoggerFactory.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/kylin/jdbc/util/DefaultLoggerFactory.java b/jdbc/src/main/java/org/apache/kylin/jdbc/util/DefaultLoggerFactory.java
new file mode 100644
index 0000000..f5a1a28
--- /dev/null
+++ b/jdbc/src/main/java/org/apache/kylin/jdbc/util/DefaultLoggerFactory.java
@@ -0,0 +1,21 @@
+package org.apache.kylin.jdbc.util;
+
+import org.apache.log4j.ConsoleAppender;
+import org.apache.log4j.PatternLayout;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Created by dongli on 11/23/15.
+ */
+public class DefaultLoggerFactory {
+
+    private final static String DEFAULT_PATTERN_LAYOUT = "L4J [%d{yyyy-MM-dd HH:mm:ss,SSS}][%p][%c] - %m%n";
+
+    public static Logger getLogger(Class<?> clazz) {
+        org.apache.log4j.Logger log4jLogger = org.apache.log4j.Logger.getLogger(clazz);
+        if (log4jLogger != null && !log4jLogger.getAllAppenders().hasMoreElements())
+            log4jLogger.addAppender(new ConsoleAppender(new PatternLayout(DEFAULT_PATTERN_LAYOUT)));
+        return LoggerFactory.getLogger(clazz);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/eb568c02/jdbc/src/main/java/org/apache/kylin/jdbc/util/DefaultSslProtocolSocketFactory.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/kylin/jdbc/util/DefaultSslProtocolSocketFactory.java b/jdbc/src/main/java/org/apache/kylin/jdbc/util/DefaultSslProtocolSocketFactory.java
index 2e41148..28fc42a 100644
--- a/jdbc/src/main/java/org/apache/kylin/jdbc/util/DefaultSslProtocolSocketFactory.java
+++ b/jdbc/src/main/java/org/apache/kylin/jdbc/util/DefaultSslProtocolSocketFactory.java
@@ -32,13 +32,12 @@ import org.apache.commons.httpclient.params.HttpConnectionParams;
 import org.apache.commons.httpclient.protocol.ControllerThreadSocketFactory;
 import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  */
 public class DefaultSslProtocolSocketFactory implements SecureProtocolSocketFactory {
     /** Log object for this class. */
-    private static Logger logger = LoggerFactory.getLogger(DefaultSslProtocolSocketFactory.class);
+    private static Logger logger = DefaultLoggerFactory.getLogger(DefaultSslProtocolSocketFactory.class);
     private SSLContext sslcontext = null;
 
     /**
@@ -48,6 +47,18 @@ public class DefaultSslProtocolSocketFactory implements SecureProtocolSocketFact
         super();
     }
 
+    private static SSLContext createEasySSLContext() {
+        try {
+            SSLContext context = SSLContext.getInstance("TLS");
+            context.init(null, new TrustManager[] { new DefaultX509TrustManager(null) }, null);
+
+            return context;
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+            throw new HttpClientError(e.toString());
+        }
+    }
+
     /**
      * @see SecureProtocolSocketFactory#createSocket(java.lang.String,int,java.net.InetAddress,int)
      */
@@ -58,7 +69,7 @@ public class DefaultSslProtocolSocketFactory implements SecureProtocolSocketFact
     /**
      * Attempts to get a new socket connection to the given host within the
      * given time limit.
-     * 
+     *
      * <p>
      * To circumvent the limitations of older JREs that do not support connect
      * timeout a controller thread is executed. The controller thread attempts
@@ -66,7 +77,7 @@ public class DefaultSslProtocolSocketFactory implements SecureProtocolSocketFact
      * constructor does not return until the timeout expires, the controller
      * terminates and throws an {@link ConnectTimeoutException}
      * </p>
-     * 
+     *
      * @param host
      *            the host name/IP
      * @param port
@@ -77,9 +88,9 @@ public class DefaultSslProtocolSocketFactory implements SecureProtocolSocketFact
      *            the port on the local machine
      * @param params
      *            {@link HttpConnectionParams Http connection parameters}
-     * 
+     *
      * @return Socket a new socket
-     * 
+     *
      * @throws IOException
      *             if an I/O error occurs while creating the socket
      * @throws UnknownHostException
@@ -126,18 +137,6 @@ public class DefaultSslProtocolSocketFactory implements SecureProtocolSocketFact
         return DefaultX509TrustManager.class.hashCode();
     }
 
-    private static SSLContext createEasySSLContext() {
-        try {
-            SSLContext context = SSLContext.getInstance("TLS");
-            context.init(null, new TrustManager[] { new DefaultX509TrustManager(null) }, null);
-
-            return context;
-        } catch (Exception e) {
-            logger.error(e.getMessage(), e);
-            throw new HttpClientError(e.toString());
-        }
-    }
-
     private SSLContext getSSLContext() {
         if (this.sslcontext == null) {
             this.sslcontext = createEasySSLContext();

http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/eb568c02/jdbc/src/main/java/org/apache/kylin/jdbc/util/DefaultX509TrustManager.java
----------------------------------------------------------------------
diff --git a/jdbc/src/main/java/org/apache/kylin/jdbc/util/DefaultX509TrustManager.java b/jdbc/src/main/java/org/apache/kylin/jdbc/util/DefaultX509TrustManager.java
index 35be21b..863cc9f 100644
--- a/jdbc/src/main/java/org/apache/kylin/jdbc/util/DefaultX509TrustManager.java
+++ b/jdbc/src/main/java/org/apache/kylin/jdbc/util/DefaultX509TrustManager.java
@@ -30,7 +30,6 @@ import javax.net.ssl.TrustManagerFactory;
 import javax.net.ssl.X509TrustManager;
 
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * @author xduo
@@ -39,7 +38,7 @@ import org.slf4j.LoggerFactory;
 public class DefaultX509TrustManager implements X509TrustManager {
 
     /** Log object for this class. */
-    private static Logger logger = LoggerFactory.getLogger(DefaultX509TrustManager.class);
+    private static Logger logger = DefaultLoggerFactory.getLogger(DefaultX509TrustManager.class);
     private X509TrustManager standardTrustManager = null;
 
     /**