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 2c6b5e923c1 Remove StorageUnitNodeMapper (#28614)
2c6b5e923c1 is described below

commit 2c6b5e923c17fd6b38acdd598dfae6b6cec33d92
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Sep 28 18:28:04 2023 +0800

    Remove StorageUnitNodeMapper (#28614)
    
    * Remove StorageUnitNodeMapper
    
    * Remove StorageUnitNodeMapper
---
 .../DataSourceGeneratedDatabaseConfiguration.java  | 17 ++--
 .../DataSourceProvidedDatabaseConfiguration.java   |  4 +-
 .../metadata/database/ShardingSphereDatabase.java  |  2 +-
 .../database/resource/ResourceMetaData.java        | 10 +--
 .../database/resource/StorageResource.java         | 13 ++-
 .../database/resource/unit/StorageUnit.java        | 25 +++---
 .../resource/unit/StorageUnitMetaData.java         | 11 +--
 ...pperUtils.java => StorageUnitNodeMapUtils.java} | 29 +++----
 .../resource/unit/StorageUnitNodeMapper.java       | 34 --------
 .../context/ConfigurationContextManager.java       | 28 +++----
 .../manager/switcher/NewResourceSwitchManager.java | 46 +++++------
 .../manager/switcher/ResourceSwitchManager.java    | 96 +++++++++++-----------
 .../mode/manager/ContextManagerTest.java           | 12 +--
 13 files changed, 142 insertions(+), 185 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 0c450f59942..c96d9dce33c 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
@@ -25,9 +25,9 @@ import 
org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolCre
 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.unit.StorageUnitNodeMapperUtils;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNodeName;
-import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapper;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapUtils;
 
 import javax.sql.DataSource;
 import java.util.Collection;
@@ -52,15 +52,14 @@ 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));
-        Map<String, StorageUnitNodeMapper> mappers = 
StorageUnitNodeMapperUtils.fromDataSourcePoolProperties(dataSourcePoolPropertiesMap);
-        storageResource = new 
StorageResource(getStorageNodeDataSourceMap(mappers), mappers);
+        Map<String, StorageNode> storageUnitNodeMap = 
StorageUnitNodeMapUtils.fromDataSourcePoolProperties(dataSourcePoolPropertiesMap);
+        storageResource = new 
StorageResource(getStorageNodeDataSourceMap(storageUnitNodeMap), 
storageUnitNodeMap);
     }
     
-    private Map<StorageNodeName, DataSource> getStorageNodeDataSourceMap(final 
Map<String, StorageUnitNodeMapper> mappers) {
-        Map<StorageNodeName, DataSource> result = new 
LinkedHashMap<>(mappers.size(), 1F);
-        for (Entry<String, StorageUnitNodeMapper> entry : mappers.entrySet()) {
-            result.computeIfAbsent(entry.getValue().getStorageNode().getName(),
-                    key -> DataSourcePoolCreator.create(entry.getKey(), 
dataSourcePoolPropertiesMap.get(entry.getKey()), true, result.values()));
+    private Map<StorageNodeName, DataSource> getStorageNodeDataSourceMap(final 
Map<String, StorageNode> storageUnitNodeMap) {
+        Map<StorageNodeName, DataSource> result = new 
LinkedHashMap<>(storageUnitNodeMap.size(), 1F);
+        for (Entry<String, StorageNode> entry : storageUnitNodeMap.entrySet()) 
{
+            result.computeIfAbsent(entry.getValue().getName(), key -> 
DataSourcePoolCreator.create(entry.getKey(), 
dataSourcePoolPropertiesMap.get(entry.getKey()), true, result.values()));
         }
         return result;
     }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceProvidedDatabaseConfiguration.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceProvidedDatabaseConfiguration.java
index fa0e04c6b61..19773c80750 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceProvidedDatabaseConfiguration.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/config/database/impl/DataSourceProvidedDatabaseConfiguration.java
@@ -25,7 +25,7 @@ import 
org.apache.shardingsphere.infra.datasource.pool.props.creator.DataSourceP
 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.node.StorageNodeUtils;
-import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapperUtils;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapUtils;
 
 import javax.sql.DataSource;
 import java.util.Collection;
@@ -49,7 +49,7 @@ public final class DataSourceProvidedDatabaseConfiguration 
implements DatabaseCo
     
     public DataSourceProvidedDatabaseConfiguration(final Map<String, 
DataSource> dataSources, final Collection<RuleConfiguration> ruleConfigs) {
         this.ruleConfigurations = ruleConfigs;
-        storageResource = new 
StorageResource(StorageNodeUtils.getStorageNodeDataSources(dataSources), 
StorageUnitNodeMapperUtils.fromDataSources(dataSources));
+        storageResource = new 
StorageResource(StorageNodeUtils.getStorageNodeDataSources(dataSources), 
StorageUnitNodeMapUtils.fromDataSources(dataSources));
         dataSourcePoolPropertiesMap = 
createDataSourcePoolPropertiesMap(dataSources);
     }
     
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
index d7571a1280d..087c5dedb01 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabase.java
@@ -124,7 +124,7 @@ public final class ShardingSphereDatabase {
     }
     
     private static ResourceMetaData createResourceMetaData(final String 
databaseName, final StorageResource storageResource, final Map<String, 
DataSourcePoolProperties> propsMap) {
-        return new ResourceMetaData(databaseName, 
storageResource.getDataSourceMap(), 
storageResource.getStorageUnitNodeMappers(), propsMap);
+        return new ResourceMetaData(databaseName, 
storageResource.getDataSourceMap(), storageResource.getStorageUnitNodeMap(), 
propsMap);
     }
     
     /**
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ResourceMetaData.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ResourceMetaData.java
index 7564aa9c395..51ab60a081c 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ResourceMetaData.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/ResourceMetaData.java
@@ -22,12 +22,12 @@ import 
org.apache.shardingsphere.infra.database.core.connector.ConnectionPropert
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 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.node.StorageNode;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNodeName;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNodeUtils;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitMetaData;
-import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapper;
-import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapperUtils;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapUtils;
 
 import javax.sql.DataSource;
 import java.util.Collection;
@@ -51,13 +51,13 @@ public final class ResourceMetaData {
         dataSourceMap = 
StorageNodeUtils.getStorageNodeDataSources(dataSources);
         storageUnitMetaData = new StorageUnitMetaData(null, dataSourceMap, 
dataSources.entrySet().stream()
                 .collect(Collectors.toMap(Entry::getKey, entry -> 
DataSourcePoolPropertiesCreator.create(entry.getValue()), (oldValue, 
currentValue) -> oldValue, LinkedHashMap::new)),
-                StorageUnitNodeMapperUtils.fromDataSources(dataSources));
+                StorageUnitNodeMapUtils.fromDataSources(dataSources));
     }
     
     public ResourceMetaData(final String databaseName, final 
Map<StorageNodeName, DataSource> dataSourceMap,
-                            final Map<String, StorageUnitNodeMapper> 
storageUnitNodeMappers, final Map<String, DataSourcePoolProperties> propsMap) {
+                            final Map<String, StorageNode> storageUnitNodeMap, 
final Map<String, DataSourcePoolProperties> propsMap) {
         this.dataSourceMap = dataSourceMap;
-        storageUnitMetaData = new StorageUnitMetaData(databaseName, 
dataSourceMap, propsMap, storageUnitNodeMappers);
+        storageUnitMetaData = new StorageUnitMetaData(databaseName, 
dataSourceMap, propsMap, storageUnitNodeMap);
     }
     
     /**
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/StorageResource.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/StorageResource.java
index d5f960f63bf..bc995f8d5ce 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/StorageResource.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/StorageResource.java
@@ -21,7 +21,6 @@ import lombok.Getter;
 import 
org.apache.shardingsphere.infra.datasource.pool.CatalogSwitchableDataSource;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNodeName;
-import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapper;
 
 import javax.sql.DataSource;
 import java.util.LinkedHashMap;
@@ -36,20 +35,20 @@ public final class StorageResource {
     
     private final Map<StorageNodeName, DataSource> dataSourceMap;
     
-    private final Map<String, StorageUnitNodeMapper> storageUnitNodeMappers;
+    private final Map<String, StorageNode> storageUnitNodeMap;
     
     private final Map<String, DataSource> wrappedDataSources;
     
-    public StorageResource(final Map<StorageNodeName, DataSource> 
dataSourceMap, final Map<String, StorageUnitNodeMapper> storageUnitNodeMappers) 
{
+    public StorageResource(final Map<StorageNodeName, DataSource> 
dataSourceMap, final Map<String, StorageNode> storageUnitNodeMap) {
         this.dataSourceMap = dataSourceMap;
-        this.storageUnitNodeMappers = storageUnitNodeMappers;
+        this.storageUnitNodeMap = storageUnitNodeMap;
         wrappedDataSources = createWrappedDataSources();
     }
     
     private Map<String, DataSource> createWrappedDataSources() {
-        Map<String, DataSource> result = new 
LinkedHashMap<>(storageUnitNodeMappers.size(), 1F);
-        for (Entry<String, StorageUnitNodeMapper> entry : 
storageUnitNodeMappers.entrySet()) {
-            StorageNode storageNode = entry.getValue().getStorageNode();
+        Map<String, DataSource> result = new 
LinkedHashMap<>(storageUnitNodeMap.size(), 1F);
+        for (Entry<String, StorageNode> entry : storageUnitNodeMap.entrySet()) 
{
+            StorageNode storageNode = entry.getValue();
             DataSource dataSource = dataSourceMap.get(storageNode.getName());
             if (null != dataSource) {
                 result.put(entry.getKey(), new 
CatalogSwitchableDataSource(dataSource, storageNode.getCatalog(), 
storageNode.getUrl()));
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnit.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnit.java
index 75864e6b474..a1f8dc7f373 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnit.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnit.java
@@ -46,7 +46,7 @@ public final class StorageUnit {
     
     private final DataSourcePoolProperties dataSourcePoolProperties;
     
-    private final StorageUnitNodeMapper unitNodeMapper;
+    private final StorageNode storageNode;
     
     private final DataSource dataSource;
     
@@ -55,17 +55,16 @@ public final class StorageUnit {
     private final ConnectionProperties connectionProperties;
     
     public StorageUnit(final String databaseName, final Map<StorageNodeName, 
DataSource> storageNodeDataSources,
-                       final DataSourcePoolProperties props, final 
StorageUnitNodeMapper unitNodeMapper) {
+                       final DataSourcePoolProperties props, final StorageNode 
storageNode) {
         this.dataSourcePoolProperties = props;
-        this.unitNodeMapper = unitNodeMapper;
-        dataSource = getStorageUnitDataSource(storageNodeDataSources, 
unitNodeMapper);
+        this.storageNode = storageNode;
+        dataSource = getStorageUnitDataSource(storageNodeDataSources);
         Map<StorageNodeName, DataSource> enabledStorageNodeDataSources = 
getEnabledStorageNodeDataSources(databaseName, storageNodeDataSources);
-        storageType = createStorageType(enabledStorageNodeDataSources, 
unitNodeMapper);
-        connectionProperties = 
createConnectionProperties(enabledStorageNodeDataSources, unitNodeMapper, 
storageType).orElse(null);
+        storageType = createStorageType(enabledStorageNodeDataSources);
+        connectionProperties = 
createConnectionProperties(enabledStorageNodeDataSources).orElse(null);
     }
     
-    private DataSource getStorageUnitDataSource(final Map<StorageNodeName, 
DataSource> storageNodeDataSources, final StorageUnitNodeMapper mapper) {
-        StorageNode storageNode = mapper.getStorageNode();
+    private DataSource getStorageUnitDataSource(final Map<StorageNodeName, 
DataSource> storageNodeDataSources) {
         DataSource dataSource = 
storageNodeDataSources.get(storageNode.getName());
         return new CatalogSwitchableDataSource(dataSource, 
storageNode.getCatalog(), storageNode.getUrl());
     }
@@ -80,15 +79,13 @@ public final class StorageUnit {
                 .filter(entry -> 
enabledDataSources.containsKey(entry.getKey().getName())).collect(Collectors.toMap(Entry::getKey,
 Entry::getValue));
     }
     
-    private DatabaseType createStorageType(final Map<StorageNodeName, 
DataSource> enabledStorageNodeDataSources, final StorageUnitNodeMapper 
unitNodeMapper) {
-        return 
DatabaseTypeEngine.getStorageType(enabledStorageNodeDataSources.containsKey(unitNodeMapper.getStorageNode().getName())
-                ? 
Collections.singleton(enabledStorageNodeDataSources.get(unitNodeMapper.getStorageNode().getName()))
+    private DatabaseType createStorageType(final Map<StorageNodeName, 
DataSource> enabledStorageNodeDataSources) {
+        return 
DatabaseTypeEngine.getStorageType(enabledStorageNodeDataSources.containsKey(storageNode.getName())
+                ? 
Collections.singleton(enabledStorageNodeDataSources.get(storageNode.getName()))
                 : Collections.emptyList());
     }
     
-    private Optional<ConnectionProperties> createConnectionProperties(final 
Map<StorageNodeName, DataSource> enabledStorageNodeDataSources,
-                                                                      final 
StorageUnitNodeMapper mapper, final DatabaseType storageType) {
-        StorageNode storageNode = mapper.getStorageNode();
+    private Optional<ConnectionProperties> createConnectionProperties(final 
Map<StorageNodeName, DataSource> enabledStorageNodeDataSources) {
         if (!enabledStorageNodeDataSources.containsKey(storageNode.getName())) 
{
             return Optional.empty();
         }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnitMetaData.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnitMetaData.java
index 81ef617ad7a..0dfa7ce06c0 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnitMetaData.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnitMetaData.java
@@ -19,6 +19,7 @@ package 
org.apache.shardingsphere.infra.metadata.database.resource.unit;
 
 import lombok.Getter;
 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.node.StorageNodeName;
 
 import javax.sql.DataSource;
@@ -34,7 +35,7 @@ import java.util.stream.Collectors;
 public final class StorageUnitMetaData {
     
     // TODO zhangliang: should refactor
-    private final Map<String, StorageUnitNodeMapper> unitNodeMappers;
+    private final Map<String, StorageNode> storageUnitNodeMap;
     
     private final Map<String, StorageUnit> storageUnits;
     
@@ -42,10 +43,10 @@ public final class StorageUnitMetaData {
     private final Map<String, DataSource> dataSources;
     
     public StorageUnitMetaData(final String databaseName, final 
Map<StorageNodeName, DataSource> storageNodeDataSources,
-                               final Map<String, DataSourcePoolProperties> 
dataSourcePoolPropertiesMap, final Map<String, StorageUnitNodeMapper> 
unitNodeMappers) {
-        this.unitNodeMappers = unitNodeMappers;
-        storageUnits = new LinkedHashMap<>(unitNodeMappers.size(), 1F);
-        for (Entry<String, StorageUnitNodeMapper> entry : 
unitNodeMappers.entrySet()) {
+                               final Map<String, DataSourcePoolProperties> 
dataSourcePoolPropertiesMap, final Map<String, StorageNode> storageUnitNodeMap) 
{
+        this.storageUnitNodeMap = storageUnitNodeMap;
+        storageUnits = new LinkedHashMap<>(this.storageUnitNodeMap.size(), 1F);
+        for (Entry<String, StorageNode> entry : 
this.storageUnitNodeMap.entrySet()) {
             storageUnits.put(entry.getKey(), new StorageUnit(databaseName, 
storageNodeDataSources, dataSourcePoolPropertiesMap.get(entry.getKey()), 
entry.getValue()));
         }
         dataSources = createDataSources();
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnitNodeMapperUtils.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnitNodeMapUtils.java
similarity index 76%
rename from 
infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnitNodeMapperUtils.java
rename to 
infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnitNodeMapUtils.java
index 2bb78e1275e..cad759e8908 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnitNodeMapperUtils.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnitNodeMapUtils.java
@@ -36,36 +36,36 @@ import java.util.Map.Entry;
 import java.util.stream.Collectors;
 
 /**
- * Storage unit node mapper utility class.
+ * Storage unit node map utility class.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class StorageUnitNodeMapperUtils {
+public final class StorageUnitNodeMapUtils {
     
     /**
-     * Get storage unit node mappers from data sources.
+     * Get storage unit node map from data sources.
      *
      * @param dataSources data sources
      * @return storage unit node mappers
      */
-    public static Map<String, StorageUnitNodeMapper> fromDataSources(final 
Map<String, DataSource> dataSources) {
+    public static Map<String, StorageNode> fromDataSources(final Map<String, 
DataSource> dataSources) {
         return dataSources.entrySet().stream()
                 .collect(Collectors.toMap(Entry::getKey, entry -> 
fromDataSource(entry.getKey(), entry.getValue()), (oldValue, currentValue) -> 
currentValue, LinkedHashMap::new));
     }
     
-    private static StorageUnitNodeMapper fromDataSource(final String 
storageUnitName, final DataSource dataSource) {
+    private static StorageNode fromDataSource(final String storageUnitName, 
final DataSource dataSource) {
         DataSourcePoolProperties props = 
DataSourcePoolPropertiesCreator.create(dataSource);
         String url = 
props.getConnectionPropertySynonyms().getStandardProperties().get("url").toString();
-        return new StorageUnitNodeMapper(storageUnitName, new StorageNode(new 
StorageNodeName(storageUnitName), url));
+        return new StorageNode(new StorageNodeName(storageUnitName), url);
     }
     
     /**
-     * Get storage unit node mappers from data source pool properties.
+     * Get storage unit node map from data source pool properties.
      *
      * @param propsMap data source pool properties map
      * @return storage unit node mappers
      */
-    public static Map<String, StorageUnitNodeMapper> 
fromDataSourcePoolProperties(final Map<String, DataSourcePoolProperties> 
propsMap) {
-        Map<String, StorageUnitNodeMapper> result = new LinkedHashMap<>();
+    public static Map<String, StorageNode> fromDataSourcePoolProperties(final 
Map<String, DataSourcePoolProperties> propsMap) {
+        Map<String, StorageNode> result = new LinkedHashMap<>();
         for (Entry<String, DataSourcePoolProperties> entry : 
propsMap.entrySet()) {
             String storageUnitName = entry.getKey();
             result.put(storageUnitName, 
fromDataSourcePoolProperties(storageUnitName, entry.getValue()));
@@ -73,12 +73,12 @@ public final class StorageUnitNodeMapperUtils {
         return result;
     }
     
-    private static StorageUnitNodeMapper fromDataSourcePoolProperties(final 
String storageUnitName, final DataSourcePoolProperties props) {
+    private static StorageNode fromDataSourcePoolProperties(final String 
storageUnitName, final DataSourcePoolProperties props) {
         Map<String, Object> standardProps = 
props.getConnectionPropertySynonyms().getStandardProperties();
         String url = standardProps.get("url").toString();
         boolean isInstanceConnectionAvailable = new 
DatabaseTypeRegistry(DatabaseTypeFactory.get(url)).getDialectDatabaseMetaData().isInstanceConnectionAvailable();
         StorageNodeName storageNodeName = getStorageNodeName(storageUnitName, 
url, standardProps.get("username").toString(), isInstanceConnectionAvailable);
-        return createStorageUnitNodeMapper(storageNodeName, storageUnitName, 
url, isInstanceConnectionAvailable);
+        return createStorageNode(storageNodeName, url, 
isInstanceConnectionAvailable);
     }
     
     private static StorageNodeName getStorageNodeName(final String 
dataSourceName, final String url, final String username, final boolean 
isInstanceConnectionAvailable) {
@@ -90,11 +90,8 @@ public final class StorageUnitNodeMapperUtils {
         }
     }
     
-    private static StorageUnitNodeMapper createStorageUnitNodeMapper(final 
StorageNodeName storageNodeName,
-                                                                     final 
String storageUnitName, final String url, final boolean 
isInstanceConnectionAvailable) {
-        return isInstanceConnectionAvailable
-                ? new StorageUnitNodeMapper(storageUnitName, new 
StorageNode(storageNodeName, url, new 
StandardJdbcUrlParser().parse(url).getDatabase()))
-                : new StorageUnitNodeMapper(storageUnitName, new 
StorageNode(storageNodeName, url));
+    private static StorageNode createStorageNode(final StorageNodeName 
storageNodeName, final String url, final boolean isInstanceConnectionAvailable) 
{
+        return isInstanceConnectionAvailable ? new 
StorageNode(storageNodeName, url, new 
StandardJdbcUrlParser().parse(url).getDatabase()) : new 
StorageNode(storageNodeName, url);
     }
     
     /**
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnitNodeMapper.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnitNodeMapper.java
deleted file mode 100644
index 9ac4e1891c4..00000000000
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/resource/unit/StorageUnitNodeMapper.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.infra.metadata.database.resource.unit;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
-
-/**
- * Storage unit and node mapper.
- */
-@RequiredArgsConstructor
-@Getter
-public final class StorageUnitNodeMapper {
-    
-    private final String name;
-    
-    private final StorageNode storageNode;
-}
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
index f79132f3c51..66e798088bd 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/context/ConfigurationContextManager.java
@@ -25,14 +25,14 @@ import 
org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.config.rule.scope.DatabaseRuleConfiguration;
 import 
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
-import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNodeName;
-import 
org.apache.shardingsphere.infra.metadata.database.resource.StorageResource;
-import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
-import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapper;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.StorageResource;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNodeName;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import org.apache.shardingsphere.infra.metadata.database.schema.SchemaManager;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
@@ -275,11 +275,11 @@ public final class ConfigurationContextManager {
      */
     public Map<String, ShardingSphereDatabase> renewDatabase(final 
ShardingSphereDatabase database, final SwitchingResource resource) {
         Map<StorageNodeName, DataSource> newStorageNodes = 
getNewStorageNodes(database.getResourceMetaData().getDataSourceMap(), resource);
-        Map<String, StorageUnitNodeMapper> newStorageUnitNodeMappers = 
getNewStorageUnitNodeMappers(database.getResourceMetaData().getStorageUnitMetaData().getStorageUnits(),
 resource);
+        Map<String, StorageNode> newStorageUnitNodeMap = 
getNewStorageUnitNodeMap(database.getResourceMetaData().getStorageUnitMetaData().getStorageUnits(),
 resource);
         Map<String, DataSourcePoolProperties> propsMap = 
database.getResourceMetaData().getStorageUnitMetaData().getStorageUnits().entrySet().stream()
                 .collect(Collectors.toMap(Entry::getKey, entry -> 
entry.getValue().getDataSourcePoolProperties(), (oldValue, currentValue) -> 
currentValue, LinkedHashMap::new));
         return Collections.singletonMap(database.getName().toLowerCase(), new 
ShardingSphereDatabase(database.getName(), database.getProtocolType(),
-                new ResourceMetaData(database.getName(), newStorageNodes, 
newStorageUnitNodeMappers, propsMap), database.getRuleMetaData(), 
database.getSchemas()));
+                new ResourceMetaData(database.getName(), newStorageNodes, 
newStorageUnitNodeMap, propsMap), database.getRuleMetaData(), 
database.getSchemas()));
     }
     
     private Map<StorageNodeName, DataSource> getNewStorageNodes(final 
Map<StorageNodeName, DataSource> currentStorageNodes, final SwitchingResource 
resource) {
@@ -292,11 +292,11 @@ public final class ConfigurationContextManager {
         return result;
     }
     
-    private Map<String, StorageUnitNodeMapper> 
getNewStorageUnitNodeMappers(final Map<String, StorageUnit> 
currentStorageUnits, final SwitchingResource resource) {
-        Map<String, StorageUnitNodeMapper> result = new 
LinkedHashMap<>(currentStorageUnits.size(), 1F);
+    private Map<String, StorageNode> getNewStorageUnitNodeMap(final 
Map<String, StorageUnit> currentStorageUnits, final SwitchingResource resource) 
{
+        Map<String, StorageNode> result = new 
LinkedHashMap<>(currentStorageUnits.size(), 1F);
         for (Entry<String, StorageUnit> entry : 
currentStorageUnits.entrySet()) {
-            if 
(!resource.getStaleStorageResource().getStorageUnitNodeMappers().containsKey(entry.getKey()))
 {
-                result.put(entry.getKey(), 
entry.getValue().getUnitNodeMapper());
+            if 
(!resource.getStaleStorageResource().getStorageUnitNodeMap().containsKey(entry.getKey()))
 {
+                result.put(entry.getKey(), entry.getValue().getStorageNode());
             }
         }
         return result;
@@ -365,14 +365,14 @@ public final class ConfigurationContextManager {
     
     private StorageResource getMergedStorageResource(final ResourceMetaData 
currentResourceMetaData, final SwitchingResource switchingResource) {
         Map<StorageNodeName, DataSource> storageNodeDataSources = 
currentResourceMetaData.getDataSourceMap();
-        Map<String, StorageUnitNodeMapper> storageUnitNodeMappers = 
currentResourceMetaData.getStorageUnitMetaData().getUnitNodeMappers();
+        Map<String, StorageNode> storageUnitNodeMap = 
currentResourceMetaData.getStorageUnitMetaData().getStorageUnitNodeMap();
         if (null != switchingResource && null != 
switchingResource.getNewStorageResource() && 
!switchingResource.getNewStorageResource().getDataSourceMap().isEmpty()) {
             
storageNodeDataSources.putAll(switchingResource.getNewStorageResource().getDataSourceMap());
         }
-        if (null != switchingResource && null != 
switchingResource.getNewStorageResource() && 
!switchingResource.getNewStorageResource().getStorageUnitNodeMappers().isEmpty())
 {
-            
storageUnitNodeMappers.putAll(switchingResource.getNewStorageResource().getStorageUnitNodeMappers());
+        if (null != switchingResource && null != 
switchingResource.getNewStorageResource() && 
!switchingResource.getNewStorageResource().getStorageUnitNodeMap().isEmpty()) {
+            
storageUnitNodeMap.putAll(switchingResource.getNewStorageResource().getStorageUnitNodeMap());
         }
-        return new StorageResource(storageNodeDataSources, 
storageUnitNodeMappers);
+        return new StorageResource(storageNodeDataSources, storageUnitNodeMap);
     }
     
     private ShardingSphereDatabase createChangedDatabase(final String 
databaseName, final boolean internalLoadMetaData, final 
MetaDataBasedPersistService persistService,
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/switcher/NewResourceSwitchManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/switcher/NewResourceSwitchManager.java
index 5448050a69a..a4f4368b2d5 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/switcher/NewResourceSwitchManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/switcher/NewResourceSwitchManager.java
@@ -21,9 +21,9 @@ import 
org.apache.shardingsphere.infra.datasource.pool.creator.DataSourcePoolCre
 import 
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.StorageResource;
-import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapperUtils;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNodeName;
-import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapper;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapUtils;
 
 import javax.sql.DataSource;
 import java.util.Collection;
@@ -50,22 +50,22 @@ public final class NewResourceSwitchManager {
     public SwitchingResource registerStorageUnit(final ResourceMetaData 
resourceMetaData, final Map<String, DataSourcePoolProperties> 
storageUnitDataSourcePoolProps) {
         Map<String, DataSourcePoolProperties> mergedPropsMap = new 
HashMap<>(resourceMetaData.getStorageUnitMetaData().getDataSourcePoolPropertiesMap());
         mergedPropsMap.putAll(storageUnitDataSourcePoolProps);
-        Map<String, StorageUnitNodeMapper> toBeCreatedMappers = 
StorageUnitNodeMapperUtils.fromDataSourcePoolProperties(storageUnitDataSourcePoolProps);
-        return new SwitchingResource(resourceMetaData, 
getRegisterNewStorageResource(resourceMetaData, toBeCreatedMappers, 
storageUnitDataSourcePoolProps),
+        Map<String, StorageNode> toBeCreatedStorageUintNodeMap = 
StorageUnitNodeMapUtils.fromDataSourcePoolProperties(storageUnitDataSourcePoolProps);
+        return new SwitchingResource(resourceMetaData, 
getRegisterNewStorageResource(resourceMetaData, toBeCreatedStorageUintNodeMap, 
storageUnitDataSourcePoolProps),
                 new StorageResource(Collections.emptyMap(), 
Collections.emptyMap()), mergedPropsMap);
     }
     
     private StorageResource getRegisterNewStorageResource(final 
ResourceMetaData resourceMetaData,
-                                                          final Map<String, 
StorageUnitNodeMapper> mappers, final Map<String, DataSourcePoolProperties> 
storageUnitDataSourcePoolProps) {
-        Collection<StorageNodeName> storageNodeNames = 
mappers.values().stream().map(each -> 
each.getStorageNode().getName()).collect(Collectors.toSet());
-        Map<StorageNodeName, DataSourcePoolProperties> 
storageNodeDataSourcePoolProps = 
StorageUnitNodeMapperUtils.getStorageNodeDataSourcePoolProperties(storageUnitDataSourcePoolProps);
+                                                          final Map<String, 
StorageNode> storageUintNodeMap, final Map<String, DataSourcePoolProperties> 
storageUnitDataSourcePoolProps) {
+        Collection<StorageNodeName> storageNodeNames = 
storageUintNodeMap.values().stream().map(StorageNode::getName).collect(Collectors.toSet());
+        Map<StorageNodeName, DataSourcePoolProperties> 
storageNodeDataSourcePoolProps = 
StorageUnitNodeMapUtils.getStorageNodeDataSourcePoolProperties(storageUnitDataSourcePoolProps);
         Map<StorageNodeName, DataSource> newStorageNodes = new 
LinkedHashMap<>(storageNodeNames.size(), 1F);
         for (StorageNodeName each : storageNodeNames) {
             if (!resourceMetaData.getDataSourceMap().containsKey(each)) {
                 newStorageNodes.put(each, 
DataSourcePoolCreator.create(storageNodeDataSourcePoolProps.get(each)));
             }
         }
-        return new StorageResource(newStorageNodes, mappers);
+        return new StorageResource(newStorageNodes, storageUintNodeMap);
     }
     
     /**
@@ -78,30 +78,30 @@ public final class NewResourceSwitchManager {
     public SwitchingResource alterStorageUnit(final ResourceMetaData 
resourceMetaData, final Map<String, DataSourcePoolProperties> propsMap) {
         Map<String, DataSourcePoolProperties> 
mergedDataSourcePoolPropertiesMap = new 
HashMap<>(resourceMetaData.getStorageUnitMetaData().getDataSourcePoolPropertiesMap());
         mergedDataSourcePoolPropertiesMap.putAll(propsMap);
-        Map<String, StorageUnitNodeMapper> toBeAlteredMappers = 
StorageUnitNodeMapperUtils.fromDataSourcePoolProperties(mergedDataSourcePoolPropertiesMap);
-        return new SwitchingResource(resourceMetaData, 
getAlterNewStorageResource(toBeAlteredMappers, 
mergedDataSourcePoolPropertiesMap),
-                getStaleStorageResource(resourceMetaData, toBeAlteredMappers), 
mergedDataSourcePoolPropertiesMap);
+        Map<String, StorageNode> toBeAlteredStorageUintNodeMap = 
StorageUnitNodeMapUtils.fromDataSourcePoolProperties(mergedDataSourcePoolPropertiesMap);
+        return new SwitchingResource(resourceMetaData, 
getAlterNewStorageResource(toBeAlteredStorageUintNodeMap, 
mergedDataSourcePoolPropertiesMap),
+                getStaleStorageResource(resourceMetaData, 
toBeAlteredStorageUintNodeMap), mergedDataSourcePoolPropertiesMap);
     }
     
-    private StorageResource getAlterNewStorageResource(final Map<String, 
StorageUnitNodeMapper> mappers, final Map<String, DataSourcePoolProperties> 
storageUnitDataSourcePoolProps) {
-        Collection<StorageNodeName> toBeAlteredStorageNodeNames = 
mappers.values().stream().map(each -> 
each.getStorageNode().getName()).collect(Collectors.toSet());
-        Map<StorageNodeName, DataSourcePoolProperties> 
storageNodeDataSourcePoolProps = 
StorageUnitNodeMapperUtils.getStorageNodeDataSourcePoolProperties(storageUnitDataSourcePoolProps);
+    private StorageResource getAlterNewStorageResource(final Map<String, 
StorageNode> storageUintNodeMap, final Map<String, DataSourcePoolProperties> 
storageUnitDataSourcePoolProps) {
+        Collection<StorageNodeName> toBeAlteredStorageNodeNames = 
storageUintNodeMap.values().stream().map(StorageNode::getName).collect(Collectors.toSet());
+        Map<StorageNodeName, DataSourcePoolProperties> 
storageNodeDataSourcePoolProps = 
StorageUnitNodeMapUtils.getStorageNodeDataSourcePoolProperties(storageUnitDataSourcePoolProps);
         Map<StorageNodeName, DataSource> storageNodes = new 
LinkedHashMap<>(toBeAlteredStorageNodeNames.size(), 1F);
         for (StorageNodeName each : toBeAlteredStorageNodeNames) {
             storageNodes.put(each, 
DataSourcePoolCreator.create(storageNodeDataSourcePoolProps.get(each)));
         }
-        return new StorageResource(storageNodes, mappers);
+        return new StorageResource(storageNodes, storageUintNodeMap);
     }
     
-    private StorageResource getStaleStorageResource(final ResourceMetaData 
resourceMetaData, final Map<String, StorageUnitNodeMapper> mappers) {
-        Collection<StorageNodeName> toBeAlteredStorageNodeNames = 
mappers.values().stream().map(each -> 
each.getStorageNode().getName()).collect(Collectors.toSet());
+    private StorageResource getStaleStorageResource(final ResourceMetaData 
resourceMetaData, final Map<String, StorageNode> storageUintNodeMap) {
+        Collection<StorageNodeName> toBeAlteredStorageNodeNames = 
storageUintNodeMap.values().stream().map(StorageNode::getName).collect(Collectors.toSet());
         Map<StorageNodeName, DataSource> storageNodes = new 
LinkedHashMap<>(toBeAlteredStorageNodeNames.size(), 1F);
         for (Entry<StorageNodeName, DataSource> entry : 
resourceMetaData.getDataSourceMap().entrySet()) {
             if (toBeAlteredStorageNodeNames.contains(entry.getKey())) {
                 storageNodes.put(entry.getKey(), entry.getValue());
             }
         }
-        return new StorageResource(storageNodes, mappers);
+        return new StorageResource(storageNodes, storageUintNodeMap);
     }
     
     /**
@@ -120,12 +120,12 @@ public final class NewResourceSwitchManager {
     }
     
     private StorageResource getToBeRemovedStaleStorageResource(final 
ResourceMetaData resourceMetaData, final String storageUnitName) {
-        StorageUnitNodeMapper storageUnitNodeMapper = 
resourceMetaData.getStorageUnitMetaData().getUnitNodeMappers().remove(storageUnitName);
-        Map<String, StorageUnitNodeMapper> reservedStorageUnitNodeMappers = 
resourceMetaData.getStorageUnitMetaData().getUnitNodeMappers();
+        StorageNode storageNode = 
resourceMetaData.getStorageUnitMetaData().getStorageUnitNodeMap().remove(storageUnitName);
+        Map<String, StorageNode> reservedStorageUintNodeMap = 
resourceMetaData.getStorageUnitMetaData().getStorageUnitNodeMap();
         Map<StorageNodeName, DataSource> storageNodes = new LinkedHashMap<>(1, 
1F);
-        if (reservedStorageUnitNodeMappers.values().stream().noneMatch(each -> 
each.getStorageNode().equals(storageUnitNodeMapper.getStorageNode()))) {
-            storageNodes.put(storageUnitNodeMapper.getStorageNode().getName(), 
resourceMetaData.getDataSourceMap().get(storageUnitNodeMapper.getStorageNode().getName()));
+        if (reservedStorageUintNodeMap.values().stream().noneMatch(each -> 
each.equals(storageNode))) {
+            storageNodes.put(storageNode.getName(), 
resourceMetaData.getDataSourceMap().get(storageNode.getName()));
         }
-        return new StorageResource(storageNodes, 
Collections.singletonMap(storageUnitName, storageUnitNodeMapper));
+        return new StorageResource(storageNodes, 
Collections.singletonMap(storageUnitName, storageNode));
     }
 }
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/switcher/ResourceSwitchManager.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/switcher/ResourceSwitchManager.java
index e4d5429209c..6da5665c2ea 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/switcher/ResourceSwitchManager.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/manager/switcher/ResourceSwitchManager.java
@@ -22,10 +22,10 @@ import 
org.apache.shardingsphere.infra.datasource.pool.props.creator.DataSourceP
 import 
org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.StorageResource;
-import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapperUtils;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNodeName;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
-import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapper;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapUtils;
 
 import javax.sql.DataSource;
 import java.util.Collection;
@@ -51,9 +51,9 @@ public final class ResourceSwitchManager {
     public SwitchingResource create(final ResourceMetaData resourceMetaData, 
final Map<String, DataSourcePoolProperties> toBeChangedPropsMap) {
         Map<String, DataSourcePoolProperties> mergedPropsMap = new 
HashMap<>(resourceMetaData.getStorageUnitMetaData().getDataSourcePoolPropertiesMap());
         mergedPropsMap.putAll(toBeChangedPropsMap);
-        Map<String, StorageUnitNodeMapper> toBeChangedMappers = 
StorageUnitNodeMapperUtils.fromDataSourcePoolProperties(toBeChangedPropsMap);
-        return new SwitchingResource(resourceMetaData, 
createNewStorageResource(resourceMetaData, toBeChangedMappers, 
toBeChangedPropsMap),
-                getStaleDataSources(resourceMetaData, toBeChangedMappers, 
mergedPropsMap), mergedPropsMap);
+        Map<String, StorageNode> toBeChangedStorageUnitNodeMap = 
StorageUnitNodeMapUtils.fromDataSourcePoolProperties(toBeChangedPropsMap);
+        return new SwitchingResource(resourceMetaData, 
createNewStorageResource(resourceMetaData, toBeChangedStorageUnitNodeMap, 
toBeChangedPropsMap),
+                getStaleDataSources(resourceMetaData, 
toBeChangedStorageUnitNodeMap, mergedPropsMap), mergedPropsMap);
     }
     
     /**
@@ -66,9 +66,9 @@ public final class ResourceSwitchManager {
     public SwitchingResource createByDropResource(final ResourceMetaData 
resourceMetaData, final Map<String, DataSourcePoolProperties> 
toBeDeletedPropsMap) {
         Map<String, DataSourcePoolProperties> 
mergedDataSourcePoolPropertiesMap = new 
HashMap<>(resourceMetaData.getStorageUnitMetaData().getDataSourcePoolPropertiesMap());
         
mergedDataSourcePoolPropertiesMap.keySet().removeIf(toBeDeletedPropsMap::containsKey);
-        Map<String, StorageUnitNodeMapper> toRemovedMappers = 
StorageUnitNodeMapperUtils.fromDataSourcePoolProperties(toBeDeletedPropsMap);
+        Map<String, StorageNode> toRemovedStorageUnitNodeMap = 
StorageUnitNodeMapUtils.fromDataSourcePoolProperties(toBeDeletedPropsMap);
         return new SwitchingResource(resourceMetaData, new 
StorageResource(Collections.emptyMap(), Collections.emptyMap()),
-                getToBeRemovedStaleDataSources(resourceMetaData, 
toRemovedMappers), mergedDataSourcePoolPropertiesMap);
+                getToBeRemovedStaleDataSources(resourceMetaData, 
toRemovedStorageUnitNodeMap), mergedDataSourcePoolPropertiesMap);
     }
     
     /**
@@ -82,24 +82,24 @@ public final class ResourceSwitchManager {
         Map<String, DataSourcePoolProperties> 
mergedDataSourcePoolPropertiesMap = new 
HashMap<>(resourceMetaData.getStorageUnitMetaData().getDataSourcePoolPropertiesMap());
         mergedDataSourcePoolPropertiesMap.keySet().removeIf(each -> 
!toBeChangedPropsMap.containsKey(each));
         mergedDataSourcePoolPropertiesMap.putAll(toBeChangedPropsMap);
-        Map<String, StorageUnitNodeMapper> toBeChangedMappers = 
StorageUnitNodeMapperUtils.fromDataSourcePoolProperties(toBeChangedPropsMap);
-        StorageResource staleStorageResource = 
getStaleDataSources(resourceMetaData, toBeChangedMappers, toBeChangedPropsMap);
-        Collection<StorageNodeName> toBeChangedStorageNodeNames = 
toBeChangedMappers.values().stream().map(each -> 
each.getStorageNode().getName()).collect(Collectors.toSet());
+        Map<String, StorageNode> toBeChangedStorageUnitNodeMap = 
StorageUnitNodeMapUtils.fromDataSourcePoolProperties(toBeChangedPropsMap);
+        StorageResource staleStorageResource = 
getStaleDataSources(resourceMetaData, toBeChangedStorageUnitNodeMap, 
toBeChangedPropsMap);
+        Collection<StorageNodeName> toBeChangedStorageNodeNames = 
toBeChangedStorageUnitNodeMap.values().stream().map(StorageNode::getName).collect(Collectors.toSet());
         
staleStorageResource.getDataSourceMap().putAll(getToBeDeletedDataSources(resourceMetaData.getDataSourceMap(),
 toBeChangedStorageNodeNames));
-        staleStorageResource.getStorageUnitNodeMappers().putAll(
-                
getToBeDeletedStorageUnitNodeMappers(resourceMetaData.getStorageUnitMetaData().getStorageUnits(),
 toBeChangedMappers.keySet()));
+        staleStorageResource.getStorageUnitNodeMap().putAll(
+                
getToBeDeletedStorageUnitNodeMappers(resourceMetaData.getStorageUnitMetaData().getStorageUnits(),
 toBeChangedStorageUnitNodeMap.keySet()));
         return new SwitchingResource(resourceMetaData,
-                createNewStorageResource(resourceMetaData, toBeChangedMappers, 
toBeChangedPropsMap), staleStorageResource, mergedDataSourcePoolPropertiesMap);
+                createNewStorageResource(resourceMetaData, 
toBeChangedStorageUnitNodeMap, toBeChangedPropsMap), staleStorageResource, 
mergedDataSourcePoolPropertiesMap);
     }
     
     private StorageResource createNewStorageResource(final ResourceMetaData 
resourceMetaData,
-                                                     final Map<String, 
StorageUnitNodeMapper> toBeChangedMappers, final Map<String, 
DataSourcePoolProperties> storageUnitDataSourcePoolProps) {
-        Collection<StorageNodeName> toBeChangedStorageNodeName = 
toBeChangedMappers.values().stream().map(each -> 
each.getStorageNode().getName()).collect(Collectors.toSet());
-        Map<StorageNodeName, DataSourcePoolProperties> 
storageNodeDataSourcePoolProps = 
StorageUnitNodeMapperUtils.getStorageNodeDataSourcePoolProperties(storageUnitDataSourcePoolProps);
+                                                     final Map<String, 
StorageNode> toBeChangedStorageUnitNodeMap, final Map<String, 
DataSourcePoolProperties> storageUnitDataSourcePoolProps) {
+        Collection<StorageNodeName> toBeChangedStorageNodeName = 
toBeChangedStorageUnitNodeMap.values().stream().map(StorageNode::getName).collect(Collectors.toSet());
+        Map<StorageNodeName, DataSourcePoolProperties> 
storageNodeDataSourcePoolProps = 
StorageUnitNodeMapUtils.getStorageNodeDataSourcePoolProperties(storageUnitDataSourcePoolProps);
         Map<StorageNodeName, DataSource> storageNodes =
                 getNewStorageNodes(resourceMetaData, 
toBeChangedStorageNodeName, storageNodeDataSourcePoolProps);
-        Map<String, StorageUnitNodeMapper> storageUnitNodeMappers = 
getNewStorageUnitNodeMappers(resourceMetaData, toBeChangedMappers);
-        return new StorageResource(storageNodes, storageUnitNodeMappers);
+        Map<String, StorageNode> storageUnitNodeMap = 
getNewStorageUnitNodeMap(resourceMetaData, toBeChangedStorageUnitNodeMap);
+        return new StorageResource(storageNodes, storageUnitNodeMap);
     }
     
     private Map<StorageNodeName, DataSource> getNewStorageNodes(final 
ResourceMetaData resourceMetaData, final Collection<StorageNodeName> 
toBeChangedStorageNodeName,
@@ -111,11 +111,11 @@ public final class ResourceSwitchManager {
         return result;
     }
     
-    private Map<String, StorageUnitNodeMapper> 
getNewStorageUnitNodeMappers(final ResourceMetaData resourceMetaData, final 
Map<String, StorageUnitNodeMapper> toBeChangedStorageUnitNodeMappers) {
-        Map<String, StorageUnitNodeMapper> result = new 
LinkedHashMap<>(resourceMetaData.getStorageUnitMetaData().getUnitNodeMappers());
-        
result.keySet().removeAll(getToBeDeletedStorageUnitNodeMappers(resourceMetaData.getStorageUnitMetaData().getStorageUnits(),
 toBeChangedStorageUnitNodeMappers.keySet()).keySet());
-        
result.putAll(getChangedStorageUnitNodeMappers(resourceMetaData.getStorageUnitMetaData().getStorageUnits(),
 toBeChangedStorageUnitNodeMappers));
-        
result.putAll(getToBeAddedStorageUnitNodeMappers(resourceMetaData.getStorageUnitMetaData().getUnitNodeMappers(),
 toBeChangedStorageUnitNodeMappers));
+    private Map<String, StorageNode> getNewStorageUnitNodeMap(final 
ResourceMetaData resourceMetaData, final Map<String, StorageNode> 
toBeChangedStorageUnitNodeMap) {
+        Map<String, StorageNode> result = new 
LinkedHashMap<>(resourceMetaData.getStorageUnitMetaData().getStorageUnitNodeMap());
+        
result.keySet().removeAll(getToBeDeletedStorageUnitNodeMappers(resourceMetaData.getStorageUnitMetaData().getStorageUnits(),
 toBeChangedStorageUnitNodeMap.keySet()).keySet());
+        
result.putAll(getChangedStorageUnitNodeMap(resourceMetaData.getStorageUnitMetaData().getStorageUnits(),
 toBeChangedStorageUnitNodeMap));
+        
result.putAll(getToBeAddedStorageUnitNodeMap(resourceMetaData.getStorageUnitMetaData().getStorageUnitNodeMap(),
 toBeChangedStorageUnitNodeMap));
         return result;
     }
     
@@ -147,26 +147,26 @@ public final class ResourceSwitchManager {
         return result;
     }
     
-    private StorageResource getToBeRemovedStaleDataSources(final 
ResourceMetaData resourceMetaData, final Map<String, StorageUnitNodeMapper> 
toRemovedMappers) {
-        Map<String, StorageUnitNodeMapper> reservedStorageUnitNodeMappers = 
resourceMetaData.getStorageUnitMetaData().getStorageUnits().entrySet().stream()
-                .filter(entry -> !toRemovedMappers.containsKey(entry.getKey()))
-                .collect(Collectors.toMap(Entry::getKey, entry -> 
entry.getValue().getUnitNodeMapper()));
-        Collection<StorageNodeName> toBeRemovedStorageNodeNames = 
toRemovedMappers.values().stream().map(each -> 
each.getStorageNode().getName()).collect(Collectors.toSet());
-        Collection<StorageNodeName> inUsedDataSourceNames = 
reservedStorageUnitNodeMappers.values().stream().map(each -> 
each.getStorageNode().getName()).collect(Collectors.toSet());
+    private StorageResource getToBeRemovedStaleDataSources(final 
ResourceMetaData resourceMetaData, final Map<String, StorageNode> 
toRemovedStorageUnitNodeMap) {
+        Map<String, StorageNode> reservedStorageUnitNodeMap = 
resourceMetaData.getStorageUnitMetaData().getStorageUnits().entrySet().stream()
+                .filter(entry -> 
!toRemovedStorageUnitNodeMap.containsKey(entry.getKey()))
+                .collect(Collectors.toMap(Entry::getKey, entry -> 
entry.getValue().getStorageNode()));
+        Collection<StorageNodeName> toBeRemovedStorageNodeNames = 
toRemovedStorageUnitNodeMap.values().stream().map(StorageNode::getName).collect(Collectors.toSet());
+        Collection<StorageNodeName> inUsedDataSourceNames = 
reservedStorageUnitNodeMap.values().stream().map(StorageNode::getName).collect(Collectors.toSet());
         Map<StorageNodeName, DataSource> staleStorageNodes = 
resourceMetaData.getDataSourceMap().entrySet().stream()
                 .filter(entry -> 
toBeRemovedStorageNodeNames.contains(entry.getKey()) && 
!inUsedDataSourceNames.contains(entry.getKey()))
                 .collect(Collectors.toMap(Entry::getKey, Entry::getValue));
-        Map<String, StorageUnitNodeMapper> staleStorageUnitNodeMappers = 
resourceMetaData.getStorageUnitMetaData().getStorageUnits().entrySet().stream()
-                .filter(entry -> 
!reservedStorageUnitNodeMappers.containsKey(entry.getKey())).collect(Collectors.toMap(Entry::getKey,
 entry -> entry.getValue().getUnitNodeMapper()));
-        return new StorageResource(staleStorageNodes, 
staleStorageUnitNodeMappers);
+        Map<String, StorageNode> staleStorageUnitNodeMap = 
resourceMetaData.getStorageUnitMetaData().getStorageUnits().entrySet().stream()
+                .filter(entry -> 
!reservedStorageUnitNodeMap.containsKey(entry.getKey())).collect(Collectors.toMap(Entry::getKey,
 entry -> entry.getValue().getStorageNode()));
+        return new StorageResource(staleStorageNodes, staleStorageUnitNodeMap);
     }
     
-    private StorageResource getStaleDataSources(final ResourceMetaData 
resourceMetaData, final Map<String, StorageUnitNodeMapper> toBeChangedMappers,
+    private StorageResource getStaleDataSources(final ResourceMetaData 
resourceMetaData, final Map<String, StorageNode> toBeChangedStorageUnitNodeMap,
                                                 final Map<String, 
DataSourcePoolProperties> storageUnitDataSourcePoolProps) {
         Map<StorageNodeName, DataSource> storageNodes = new 
LinkedHashMap<>(resourceMetaData.getDataSourceMap().size(), 1F);
-        Map<String, StorageUnitNodeMapper> storageUnitNodeMappers = new 
LinkedHashMap<>(resourceMetaData.getStorageUnitMetaData().getUnitNodeMappers().size(),
 1F);
-        
storageNodes.putAll(getToBeChangedDataSources(resourceMetaData.getDataSourceMap(),
 
StorageUnitNodeMapperUtils.getStorageNodeDataSourcePoolProperties(storageUnitDataSourcePoolProps)));
-        
storageUnitNodeMappers.putAll(getChangedStorageUnitNodeMappers(resourceMetaData.getStorageUnitMetaData().getStorageUnits(),
 toBeChangedMappers));
+        Map<String, StorageNode> storageUnitNodeMappers = new 
LinkedHashMap<>(resourceMetaData.getStorageUnitMetaData().getStorageUnitNodeMap().size(),
 1F);
+        
storageNodes.putAll(getToBeChangedDataSources(resourceMetaData.getDataSourceMap(),
 
StorageUnitNodeMapUtils.getStorageNodeDataSourcePoolProperties(storageUnitDataSourcePoolProps)));
+        
storageUnitNodeMappers.putAll(getChangedStorageUnitNodeMap(resourceMetaData.getStorageUnitMetaData().getStorageUnits(),
 toBeChangedStorageUnitNodeMap));
         return new StorageResource(storageNodes, storageUnitNodeMappers);
     }
     
@@ -193,30 +193,28 @@ public final class ResourceSwitchManager {
         return result;
     }
     
-    private Map<String, StorageUnitNodeMapper> 
getToBeDeletedStorageUnitNodeMappers(final Map<String, StorageUnit> 
storageUnits,
-                                                                               
     final Collection<String> toBeChangedStorageUnitNames) {
-        Map<String, StorageUnitNodeMapper> result = new 
LinkedHashMap<>(storageUnits.size(), 1F);
+    private Map<String, StorageNode> 
getToBeDeletedStorageUnitNodeMappers(final Map<String, StorageUnit> 
storageUnits,
+                                                                          
final Collection<String> toBeChangedStorageUnitNames) {
+        Map<String, StorageNode> result = new 
LinkedHashMap<>(storageUnits.size(), 1F);
         for (Entry<String, StorageUnit> entry : storageUnits.entrySet()) {
             if (!toBeChangedStorageUnitNames.contains(entry.getKey())) {
-                result.put(entry.getKey(), 
entry.getValue().getUnitNodeMapper());
+                result.put(entry.getKey(), entry.getValue().getStorageNode());
             }
         }
         return result;
     }
     
-    private Map<String, StorageUnitNodeMapper> 
getChangedStorageUnitNodeMappers(final Map<String, StorageUnit> storageUnits,
-                                                                               
 final Map<String, StorageUnitNodeMapper> toBeChangedStorageUnitNodeMappers) {
-        return 
toBeChangedStorageUnitNodeMappers.entrySet().stream().filter(entry -> 
isModifiedStorageUnitNodeMapper(storageUnits, entry.getKey(), entry.getValue()))
+    private Map<String, StorageNode> getChangedStorageUnitNodeMap(final 
Map<String, StorageUnit> storageUnits, final Map<String, StorageNode> 
toBeChangedStorageUnitNodeMap) {
+        return toBeChangedStorageUnitNodeMap.entrySet().stream().filter(entry 
-> isModifiedStorageUnitNodeMap(storageUnits, entry.getKey(), entry.getValue()))
                 .collect(Collectors.toMap(Entry::getKey, Entry::getValue, 
(oldValue, currentValue) -> oldValue, LinkedHashMap::new));
     }
     
-    private boolean isModifiedStorageUnitNodeMapper(final Map<String, 
StorageUnit> originalStorageUnits,
-                                                    final String 
dataSourceName, final StorageUnitNodeMapper storageUnitNodeMapper) {
-        return originalStorageUnits.containsKey(dataSourceName) && 
!storageUnitNodeMapper.equals(originalStorageUnits.get(dataSourceName).getUnitNodeMapper());
+    private boolean isModifiedStorageUnitNodeMap(final Map<String, 
StorageUnit> originalStorageUnits,
+                                                 final String dataSourceName, 
final StorageNode storageNode) {
+        return originalStorageUnits.containsKey(dataSourceName) && 
!storageNode.equals(originalStorageUnits.get(dataSourceName).getStorageNode());
     }
     
-    private Map<String, StorageUnitNodeMapper> 
getToBeAddedStorageUnitNodeMappers(final Map<String, StorageUnitNodeMapper> 
storageUnitNodeMappers,
-                                                                               
   final Map<String, StorageUnitNodeMapper> toBeChangedStorageUnitNodeMappers) {
-        return 
toBeChangedStorageUnitNodeMappers.entrySet().stream().filter(entry -> 
!storageUnitNodeMappers.containsKey(entry.getKey())).collect(Collectors.toMap(Entry::getKey,
 Entry::getValue));
+    private Map<String, StorageNode> getToBeAddedStorageUnitNodeMap(final 
Map<String, StorageNode> storageUnitNodeMap, final Map<String, StorageNode> 
toBeChangedStorageUnitNodeMap) {
+        return toBeChangedStorageUnitNodeMap.entrySet().stream().filter(entry 
-> 
!storageUnitNodeMap.containsKey(entry.getKey())).collect(Collectors.toMap(Entry::getKey,
 Entry::getValue));
     }
 }
diff --git 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
index 3c637828390..fb2908342ac 100644
--- 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
+++ 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/manager/ContextManagerTest.java
@@ -28,12 +28,12 @@ import 
org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.instance.mode.ModeContextManager;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
-import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNodeUtils;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNodeName;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNodeUtils;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitMetaData;
-import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapper;
-import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapperUtils;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnitNodeMapUtils;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
@@ -256,12 +256,12 @@ class ContextManagerTest {
         
when(result.getStorageUnitMetaData().getDataSources()).thenReturn(originalDataSources);
         Map<StorageNodeName, DataSource> storageNodeDataSourceMap = 
StorageNodeUtils.getStorageNodeDataSources(originalDataSources);
         Map<String, StorageUnit> storageUnits = new LinkedHashMap<>(2, 1F);
-        Map<String, StorageUnitNodeMapper> storageUnitNodeMappers = 
StorageUnitNodeMapperUtils.fromDataSources(originalDataSources);
-        for (Entry<String, StorageUnitNodeMapper> entry : 
storageUnitNodeMappers.entrySet()) {
+        Map<String, StorageNode> storageUnitNodeMap = 
StorageUnitNodeMapUtils.fromDataSources(originalDataSources);
+        for (Entry<String, StorageNode> entry : storageUnitNodeMap.entrySet()) 
{
             storageUnits.put(entry.getKey(), new StorageUnit("foo_db", 
storageNodeDataSourceMap, mock(DataSourcePoolProperties.class), 
entry.getValue()));
         }
         
when(result.getStorageUnitMetaData().getStorageUnits()).thenReturn(storageUnits);
-        
when(result.getStorageUnitMetaData().getUnitNodeMappers()).thenReturn(storageUnitNodeMappers);
+        
when(result.getStorageUnitMetaData().getStorageUnitNodeMap()).thenReturn(storageUnitNodeMap);
         when(result.getDataSourceMap()).thenReturn(storageNodeDataSourceMap);
         return result;
     }

Reply via email to