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

jianglongtao 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 7b759ea1246 Refactor HikariDataSourcePoolPropertiesValidator (#28037)
7b759ea1246 is described below

commit 7b759ea12468bfbd35ae360bc962bb6d5aba4eae
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Aug 11 13:11:55 2023 +0800

    Refactor HikariDataSourcePoolPropertiesValidator (#28037)
    
    * Refactor HikariDataSourcePoolPropertiesValidator
    
    * Refactor HikariDataSourcePoolPropertiesValidator
---
 .../pool/metadata/DataSourcePoolMetaData.java      |  1 -
 .../HikariDataSourcePoolPropertiesValidator.java   | 85 ++++++++++------------
 2 files changed, 40 insertions(+), 46 deletions(-)

diff --git 
a/infra/datasource/core/src/main/java/org/apache/shardingsphere/infra/datasource/pool/metadata/DataSourcePoolMetaData.java
 
b/infra/datasource/core/src/main/java/org/apache/shardingsphere/infra/datasource/pool/metadata/DataSourcePoolMetaData.java
index a1cc0d93552..8678cf76948 100644
--- 
a/infra/datasource/core/src/main/java/org/apache/shardingsphere/infra/datasource/pool/metadata/DataSourcePoolMetaData.java
+++ 
b/infra/datasource/core/src/main/java/org/apache/shardingsphere/infra/datasource/pool/metadata/DataSourcePoolMetaData.java
@@ -73,5 +73,4 @@ public interface DataSourcePoolMetaData extends TypedSPI {
     default Optional<DataSourcePoolPropertiesValidator> 
getDataSourcePoolPropertiesValidator() {
         return Optional.empty();
     }
-    
 }
diff --git 
a/infra/datasource/type/hikari/src/main/java/org/apache/shardingsphere/infra/datasource/hikari/metadata/HikariDataSourcePoolPropertiesValidator.java
 
b/infra/datasource/type/hikari/src/main/java/org/apache/shardingsphere/infra/datasource/hikari/metadata/HikariDataSourcePoolPropertiesValidator.java
index a79122e6dbb..1a161550a1a 100644
--- 
a/infra/datasource/type/hikari/src/main/java/org/apache/shardingsphere/infra/datasource/hikari/metadata/HikariDataSourcePoolPropertiesValidator.java
+++ 
b/infra/datasource/type/hikari/src/main/java/org/apache/shardingsphere/infra/datasource/hikari/metadata/HikariDataSourcePoolPropertiesValidator.java
@@ -17,87 +17,82 @@
 
 package org.apache.shardingsphere.infra.datasource.hikari.metadata;
 
+import com.google.common.base.Preconditions;
 import 
org.apache.shardingsphere.infra.datasource.pool.metadata.DataSourcePoolPropertiesValidator;
 import 
org.apache.shardingsphere.infra.datasource.pool.props.DataSourceProperties;
-import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 
+import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 /**
- * Hikari data source pool properties validator.
+ * Data source pool properties validator of HikariCP.
  */
 public final class HikariDataSourcePoolPropertiesValidator implements 
DataSourcePoolPropertiesValidator {
     
-    private static final long CONNECTION_TIMEOUT_FLOOR = 250L;
+    private static final long MIN_CONNECTION_TIMEOUT_MILLISECONDS = 250L;
     
-    private static final long MAX_LIFETIME_FLOOR = 
TimeUnit.SECONDS.toMillis(30);
+    private static final long MIN_LIFETIME_MILLISECONDS = 
TimeUnit.SECONDS.toMillis(30L);
     
-    private static final long KEEP_ALIVE_TIME_FLOOR = 
TimeUnit.SECONDS.toMillis(30);
+    private static final long MIN_KEEP_ALIVE_TIME_MILLISECONDS = 
TimeUnit.SECONDS.toMillis(30L);
     
     @Override
     public void validate(final DataSourceProperties dataSourceProps) {
-        validateConnectionTimeout(dataSourceProps);
-        validateIdleTimeout(dataSourceProps);
-        validateMaxLifetime(dataSourceProps);
-        validateMaximumPoolSize(dataSourceProps);
-        validateMinimumIdle(dataSourceProps);
-        validateKeepAliveTime(dataSourceProps);
+        Map<String, Object> allLocalProperties = 
dataSourceProps.getAllLocalProperties();
+        validateConnectionTimeout(allLocalProperties);
+        validateIdleTimeout(allLocalProperties);
+        validateMaxLifetime(allLocalProperties);
+        validateMaximumPoolSize(allLocalProperties);
+        validateMinimumIdle(allLocalProperties);
+        validateKeepAliveTime(allLocalProperties);
     }
     
-    private void validateConnectionTimeout(final DataSourceProperties 
dataSourceProps) {
-        if (!checkValueExist(dataSourceProps, "connectionTimeout")) {
-            return;
+    private void validateConnectionTimeout(final Map<String, Object> 
allLocalProperties) {
+        if (isExisted(allLocalProperties, "connectionTimeout")) {
+            long connectionTimeout = 
Long.parseLong(allLocalProperties.get("connectionTimeout").toString());
+            Preconditions.checkState(connectionTimeout >= 
MIN_CONNECTION_TIMEOUT_MILLISECONDS, "connectionTimeout can not less than %s 
ms.", MIN_CONNECTION_TIMEOUT_MILLISECONDS);
         }
-        long connectionTimeout = 
Long.parseLong(dataSourceProps.getAllLocalProperties().get("connectionTimeout").toString());
-        ShardingSpherePreconditions.checkState(connectionTimeout >= 
CONNECTION_TIMEOUT_FLOOR,
-                () -> new 
IllegalArgumentException(String.format("connectionTimeout cannot be less than 
%sms", CONNECTION_TIMEOUT_FLOOR)));
     }
     
-    private void validateIdleTimeout(final DataSourceProperties 
dataSourceProps) {
-        if (!checkValueExist(dataSourceProps, "idleTimeout")) {
-            return;
+    private void validateIdleTimeout(final Map<String, Object> 
allLocalProperties) {
+        if (isExisted(allLocalProperties, "idleTimeout")) {
+            long idleTimeout = 
Long.parseLong(allLocalProperties.get("idleTimeout").toString());
+            Preconditions.checkState(idleTimeout >= 0, "idleTimeout can not be 
negative.");
         }
-        long idleTimeout = 
Long.parseLong(dataSourceProps.getAllLocalProperties().get("idleTimeout").toString());
-        ShardingSpherePreconditions.checkState(idleTimeout >= 0, () -> new 
IllegalArgumentException("idleTimeout cannot be negative"));
     }
     
-    private void validateMaxLifetime(final DataSourceProperties 
dataSourceProps) {
-        if (!checkValueExist(dataSourceProps, "maxLifetime")) {
-            return;
+    private void validateMaxLifetime(final Map<String, Object> 
allLocalProperties) {
+        if (isExisted(allLocalProperties, "maxLifetime")) {
+            long maxLifetime = 
Long.parseLong(allLocalProperties.get("maxLifetime").toString());
+            Preconditions.checkState(maxLifetime >= MIN_LIFETIME_MILLISECONDS, 
"maxLifetime can not less than %s ms.", MIN_LIFETIME_MILLISECONDS);
         }
-        long maxLifetime = 
Long.parseLong(dataSourceProps.getAllLocalProperties().get("maxLifetime").toString());
-        ShardingSpherePreconditions.checkState(maxLifetime >= 
MAX_LIFETIME_FLOOR, () -> new 
IllegalArgumentException(String.format("maxLifetime cannot be less than %sms", 
MAX_LIFETIME_FLOOR)));
     }
     
-    private void validateMaximumPoolSize(final DataSourceProperties 
dataSourceProps) {
-        if (!checkValueExist(dataSourceProps, "maximumPoolSize")) {
-            return;
+    private void validateMaximumPoolSize(final Map<String, Object> 
allLocalProperties) {
+        if (isExisted(allLocalProperties, "maximumPoolSize")) {
+            int maximumPoolSize = 
Integer.parseInt(allLocalProperties.get("maximumPoolSize").toString());
+            Preconditions.checkState(maximumPoolSize >= 1, "maxPoolSize can 
not less than 1.");
         }
-        int maximumPoolSize = 
Integer.parseInt(dataSourceProps.getAllLocalProperties().get("maximumPoolSize").toString());
-        ShardingSpherePreconditions.checkState(maximumPoolSize >= 1, () -> new 
IllegalArgumentException("maxPoolSize cannot be less than 1"));
     }
     
-    private void validateMinimumIdle(final DataSourceProperties 
dataSourceProps) {
-        if (!checkValueExist(dataSourceProps, "minimumIdle")) {
-            return;
+    private void validateMinimumIdle(final Map<String, Object> 
allLocalProperties) {
+        if (isExisted(allLocalProperties, "minimumIdle")) {
+            int minimumIdle = 
Integer.parseInt(allLocalProperties.get("minimumIdle").toString());
+            Preconditions.checkState(minimumIdle >= 0, "minimumIdle can not be 
negative.");
         }
-        int minimumIdle = 
Integer.parseInt(dataSourceProps.getAllLocalProperties().get("minimumIdle").toString());
-        ShardingSpherePreconditions.checkState(minimumIdle >= 0, () -> new 
IllegalArgumentException("minimumIdle cannot be negative"));
     }
     
-    private void validateKeepAliveTime(final DataSourceProperties 
dataSourceProps) {
-        if (!checkValueExist(dataSourceProps, "keepaliveTime")) {
+    private void validateKeepAliveTime(final Map<String, Object> 
allLocalProperties) {
+        if (!isExisted(allLocalProperties, "keepaliveTime")) {
             return;
         }
-        int keepAliveTime = 
Integer.parseInt(dataSourceProps.getAllLocalProperties().get("keepaliveTime").toString());
-        if (keepAliveTime == 0) {
+        int keepAliveTime = 
Integer.parseInt(allLocalProperties.get("keepaliveTime").toString());
+        if (0 == keepAliveTime) {
             return;
         }
-        ShardingSpherePreconditions.checkState(keepAliveTime >= 
KEEP_ALIVE_TIME_FLOOR,
-                () -> new 
IllegalArgumentException(String.format("keepaliveTime cannot be less than 
%sms", KEEP_ALIVE_TIME_FLOOR)));
+        Preconditions.checkState(keepAliveTime >= 
MIN_KEEP_ALIVE_TIME_MILLISECONDS, "keepaliveTime can not be less than %s ms.", 
MIN_KEEP_ALIVE_TIME_MILLISECONDS);
     }
     
-    private boolean checkValueExist(final DataSourceProperties 
dataSourceProps, final String key) {
-        return dataSourceProps.getAllLocalProperties().containsKey(key) && 
null != dataSourceProps.getAllLocalProperties().get(key);
+    private boolean isExisted(final Map<String, Object> allLocalProperties, 
final String key) {
+        return allLocalProperties.containsKey(key) && null != 
allLocalProperties.get(key);
     }
 }

Reply via email to