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

sunnianjun 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 6982e765764 Refactor StorageResourceCreator (#28597)
6982e765764 is described below

commit 6982e7657641b972ad1954a858a36ac8b54e3922
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Sep 27 14:43:27 2023 +0800

    Refactor StorageResourceCreator (#28597)
---
 .../DataSourceGeneratedDatabaseConfiguration.java    | 14 +++++++++++++-
 .../database/resource/StorageResourceCreator.java    | 20 --------------------
 2 files changed, 13 insertions(+), 21 deletions(-)

diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceGeneratedDatabaseConfiguration.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceGeneratedDatabaseConfiguration.java
index b29930cf096..6c481d63f62 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceGeneratedDatabaseConfiguration.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceGeneratedDatabaseConfiguration.java
@@ -21,10 +21,13 @@ import lombok.Getter;
 import org.apache.shardingsphere.infra.config.database.DatabaseConfiguration;
 import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.datasource.pool.config.DataSourceConfiguration;
+import 
org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolCreator;
 import 
org.apache.shardingsphere.infra.datasource.pool.props.creator.DataSourcePoolPropertiesCreator;
 import 
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.StorageResource;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.StorageResourceCreator;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapper;
 
 import javax.sql.DataSource;
 import java.util.Collection;
@@ -49,7 +52,16 @@ public final class DataSourceGeneratedDatabaseConfiguration 
implements DatabaseC
         ruleConfigurations = ruleConfigs;
         dataSourcePoolPropertiesMap = dataSourceConfigs.entrySet().stream()
                 .collect(Collectors.toMap(Entry::getKey, entry -> 
DataSourcePoolPropertiesCreator.create(entry.getValue()), (oldValue, 
currentValue) -> oldValue, LinkedHashMap::new));
-        storageResource = 
StorageResourceCreator.createStorageResource(dataSourcePoolPropertiesMap);
+        Map<String, StorageUnitNodeMapper> mappers = 
StorageResourceCreator.getStorageUnitNodeMappers(dataSourcePoolPropertiesMap);
+        storageResource = new 
StorageResource(getStorageNodeDataSourceMap(mappers), mappers);
+    }
+    
+    private Map<StorageNode, DataSource> getStorageNodeDataSourceMap(final 
Map<String, StorageUnitNodeMapper> mappers) {
+        Map<StorageNode, DataSource> result = new 
LinkedHashMap<>(mappers.size(), 1F);
+        for (Entry<String, StorageUnitNodeMapper> entry : mappers.entrySet()) {
+            result.computeIfAbsent(entry.getValue().getStorageNode(), key -> 
DataSourcePoolCreator.create(entry.getKey(), 
dataSourcePoolPropertiesMap.get(entry.getKey()), true, result.values()));
+        }
+        return result;
     }
     
     @Override
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/StorageResourceCreator.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/StorageResourceCreator.java
index 5dd9d6e2468..20c504edfc0 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/StorageResourceCreator.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/StorageResourceCreator.java
@@ -24,12 +24,10 @@ import 
org.apache.shardingsphere.infra.database.core.connector.url.StandardJdbcU
 import 
org.apache.shardingsphere.infra.database.core.connector.url.UnrecognizedDatabaseURLException;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeFactory;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
-import 
org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolCreator;
 import 
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapper;
 
-import javax.sql.DataSource;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
@@ -42,24 +40,6 @@ import java.util.Map.Entry;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class StorageResourceCreator {
     
-    /**
-     * Create storage resource.
-     *
-     * @param propsMap data source pool properties map
-     * @return created storage resource
-     */
-    public static StorageResource createStorageResource(final Map<String, 
DataSourcePoolProperties> propsMap) {
-        Map<StorageNode, DataSource> storageNodes = new LinkedHashMap<>();
-        Map<String, StorageUnitNodeMapper> mappers = new LinkedHashMap<>();
-        for (Entry<String, DataSourcePoolProperties> entry : 
propsMap.entrySet()) {
-            String storageUnitName = entry.getKey();
-            StorageUnitNodeMapper mapper = 
getStorageUnitNodeMapper(storageUnitName, entry.getValue());
-            mappers.put(storageUnitName, mapper);
-            storageNodes.computeIfAbsent(mapper.getStorageNode(), key -> 
DataSourcePoolCreator.create(storageUnitName, entry.getValue(), true, 
storageNodes.values()));
-        }
-        return new StorageResource(storageNodes, mappers);
-    }
-    
     /**
      * Get storage unit node mappers.
      *

Reply via email to