This is an automated email from the ASF dual-hosted git repository.

panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 1bead03  Refactor JdbcUrlAppender (#14674)
1bead03 is described below

commit 1bead03d4ac384499dd48e99fdef569574a32f9e
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Jan 10 20:30:02 2022 +0800

    Refactor JdbcUrlAppender (#14674)
---
 .../database/metadata/url/JdbcUrlAppender.java     | 31 ++++++++++++----------
 1 file changed, 17 insertions(+), 14 deletions(-)

diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/url/JdbcUrlAppender.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/url/JdbcUrlAppender.java
index 501d170..c9e799c 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/url/JdbcUrlAppender.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/metadata/url/JdbcUrlAppender.java
@@ -30,27 +30,30 @@ public final class JdbcUrlAppender {
     /**
      * Append query properties.
      *
-     * @param jdbcURL JDBC URL to be appended
+     * @param jdbcUrl JDBC URL to be appended
      * @param queryProps query properties to be appended
      * @return appended JDBC URL
      */
-    public String appendQueryProperties(final String jdbcURL, final Properties 
queryProps) {
-        Properties currentQueryProps = 
DatabaseTypeRegistry.getDatabaseTypeByURL(jdbcURL).getDataSourceMetaData(jdbcURL,
 null).getQueryProperties();
-        if (hasConflictedQueryProperties(currentQueryProps, queryProps)) {
-            Properties mergedQueryProps = new Properties();
-            mergedQueryProps.putAll(currentQueryProps);
-            mergedQueryProps.putAll(queryProps);
-            return appendQueryPropertiesOnURLBuilder(jdbcURL.substring(0, 
jdbcURL.indexOf('?') + 1), mergedQueryProps);
-        }
-        return appendQueryPropertiesOnURLBuilder(jdbcURL + 
(currentQueryProps.isEmpty() ? "?" : "&"), queryProps);
+    public String appendQueryProperties(final String jdbcUrl, final Properties 
queryProps) {
+        Properties currentQueryProps = 
DatabaseTypeRegistry.getDatabaseTypeByURL(jdbcUrl).getDataSourceMetaData(jdbcUrl,
 null).getQueryProperties();
+        return hasConflictedQueryProperties(currentQueryProps, queryProps)
+                ? concat(jdbcUrl.substring(0, jdbcUrl.indexOf('?') + 1), 
getMergedProperties(currentQueryProps, queryProps))
+                : concat(jdbcUrl + (currentQueryProps.isEmpty() ? "?" : "&"), 
queryProps);
+    }
+    
+    private boolean hasConflictedQueryProperties(final Properties 
currentQueryProps, final Properties toBeAppendedQueryProps) {
+        return 
toBeAppendedQueryProps.keySet().stream().anyMatch(currentQueryProps::containsKey);
     }
     
-    private boolean hasConflictedQueryProperties(final Properties 
currentQueryProps, final Properties tobeAppendedQueryProps) {
-        return 
tobeAppendedQueryProps.keySet().stream().anyMatch(currentQueryProps::containsKey);
+    private Properties getMergedProperties(final Properties currentQueryProps, 
final Properties toBeAppendedQueryProps) {
+        Properties result = new Properties();
+        result.putAll(currentQueryProps);
+        result.putAll(toBeAppendedQueryProps);
+        return result;
     }
     
-    private String appendQueryPropertiesOnURLBuilder(final String 
jdbcUrlPrefix, final Properties queryProps) {
-        StringBuilder result = new StringBuilder(jdbcUrlPrefix);
+    private String concat(final String jdbcUrl, final Properties queryProps) {
+        StringBuilder result = new StringBuilder(jdbcUrl);
         for (Entry<Object, Object> entry : queryProps.entrySet()) {
             result.append(entry.getKey());
             if (null != entry.getValue()) {

Reply via email to