From 566b456fac4dfda6a2ecb51c5eb5526f5c0a9a91 Mon Sep 17 00:00:00 2001 From: coderzc Date: Wed, 22 Dec 2021 16:05:54 +0800 Subject: [PATCH] Bump httpclient to 4.5.13 and fix start with 'jdbc:' problem --- pom.xml | 2 +- .../loader/source/jdbc/JDBCVendor.java | 24 +++++++++++++++---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index c2340799a..f298c1f47 100644 --- a/pom.xml +++ b/pom.xml @@ -182,7 +182,7 @@ org.apache.httpcomponents httpclient - 4.5.2 + 4.5.13 org.tukaani diff --git a/src/main/java/com/baidu/hugegraph/loader/source/jdbc/JDBCVendor.java b/src/main/java/com/baidu/hugegraph/loader/source/jdbc/JDBCVendor.java index fd30acd18..82e4754d0 100644 --- a/src/main/java/com/baidu/hugegraph/loader/source/jdbc/JDBCVendor.java +++ b/src/main/java/com/baidu/hugegraph/loader/source/jdbc/JDBCVendor.java @@ -19,11 +19,14 @@ package com.baidu.hugegraph.loader.source.jdbc; +import java.net.URISyntaxException; + import org.apache.http.client.utils.URIBuilder; import com.baidu.hugegraph.loader.constant.Constants; -import com.baidu.hugegraph.loader.reader.line.Line; +import com.baidu.hugegraph.loader.exception.LoadException; import com.baidu.hugegraph.loader.reader.jdbc.JDBCUtil; +import com.baidu.hugegraph.loader.reader.line.Line; import com.baidu.hugegraph.util.E; public enum JDBCVendor { @@ -283,6 +286,8 @@ public String checkSchema(JDBCSource source) { return schema == null ? this.defaultSchema(source) : schema; } + private static final String JDBC_PREFIX = "jdbc:"; + public String buildUrl(JDBCSource source) { String url = source.url(); if (url.endsWith("/")) { @@ -291,14 +296,23 @@ public String buildUrl(JDBCSource source) { url = String.format("%s/%s", url, source.database()); } - URIBuilder uriBuilder = new URIBuilder(); - uriBuilder.setPath(url) - .setParameter("useSSL", "false") + E.checkArgument(url.startsWith(JDBC_PREFIX), + "The url must start with '%s': '%s'", + JDBC_PREFIX, url); + String urlWithoutJdbc = url.substring(JDBC_PREFIX.length()); + + URIBuilder uriBuilder; + try { + uriBuilder = new URIBuilder(urlWithoutJdbc); + } catch (URISyntaxException e) { + throw new LoadException("Invalid url '%s'", e, url); + } + uriBuilder.setParameter("useSSL", "false") .setParameter("characterEncoding", Constants.CHARSET.name()) .setParameter("rewriteBatchedStatements", "true") .setParameter("useServerPrepStmts", "false") .setParameter("autoReconnect", "true"); - return uriBuilder.toString(); + return JDBC_PREFIX + uriBuilder.toString(); } public abstract String buildGetHeaderSql(JDBCSource source);