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.
*