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()) {