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;
/**