KYLIN-1160 Set default logger appender of log4j for JDBC Driver Signed-off-by: Li, Yang <yang...@ebay.com>
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/2a9c0ccf Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/2a9c0ccf Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/2a9c0ccf Branch: refs/heads/master Commit: 2a9c0ccf0deab44dd0c60a1d4c55b7766e8e47c5 Parents: 0132175 Author: lidongsjtu <don...@ebay.com> Authored: Tue Nov 24 09:43:27 2015 +0800 Committer: Li, Yang <yang...@ebay.com> Committed: Tue Nov 24 10:33:15 2015 +0800 ---------------------------------------------------------------------- .../java/org/apache/kylin/jdbc/KylinClient.java | 196 +++++++++---------- .../org/apache/kylin/jdbc/KylinConnection.java | 10 +- .../kylin/jdbc/util/DefaultLoggerFactory.java | 21 ++ .../util/DefaultSslProtocolSocketFactory.java | 35 ++-- .../jdbc/util/DefaultX509TrustManager.java | 3 +- 5 files changed, 142 insertions(+), 123 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/2a9c0ccf/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 ca95518..708bfd0 100644 --- a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinClient.java +++ b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinClient.java @@ -53,16 +53,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; @@ -81,6 +81,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")); } @@ -288,102 +384,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/kylin/blob/2a9c0ccf/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 84cffd8..5b99641 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; @@ -81,15 +81,15 @@ public class KylinConnection extends AvaticaConnection { Properties getConnectionProperties() { return info; } - + public boolean getAutoCommit() throws SQLException { - if(meta.connectionSync(handle, new ConnectionPropertiesImpl()).isAutoCommit() == null) + if (meta.connectionSync(handle, new ConnectionPropertiesImpl()).isAutoCommit() == null) setAutoCommit(true); return super.getAutoCommit(); } public boolean isReadOnly() throws SQLException { - if(meta.connectionSync(handle, new ConnectionPropertiesImpl()).isReadOnly() == null) + if (meta.connectionSync(handle, new ConnectionPropertiesImpl()).isReadOnly() == null) setReadOnly(true); return super.isReadOnly(); } http://git-wip-us.apache.org/repos/asf/kylin/blob/2a9c0ccf/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/kylin/blob/2a9c0ccf/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 93f7d15..3615568 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 LOG = LoggerFactory.getLogger(DefaultSslProtocolSocketFactory.class); + private static Logger LOG = 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) { + LOG.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) { - LOG.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/kylin/blob/2a9c0ccf/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 6cac78e..9c93676 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 LOG = LoggerFactory.getLogger(DefaultX509TrustManager.class); + private static Logger LOG = DefaultLoggerFactory.getLogger(DefaultX509TrustManager.class); private X509TrustManager standardTrustManager = null; /**