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

duanzhengqiang 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 73a6c78ef7f Refactor ShardingSphereMetaData (#28563)
73a6c78ef7f is described below

commit 73a6c78ef7f1dc5ba77b51f76c23a7af55937972
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Sep 24 15:43:59 2023 +0800

    Refactor ShardingSphereMetaData (#28563)
    
    * Refactor ShardingSphereMetaData
    
    * Refactor ShardingSphereMetaData
---
 .../infra/metadata/ShardingSphereMetaData.java     | 29 +++++++-------------
 .../infra/metadata/ShardingSphereMetaDataTest.java | 21 ---------------
 .../database/ShardingSphereDatabaseTest.java       | 31 ++++++++++++++++++++++
 3 files changed, 40 insertions(+), 41 deletions(-)

diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
index 6b01992d6ee..edc56a025b2 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
@@ -51,8 +51,7 @@ public final class ShardingSphereMetaData {
     private final TemporaryConfigurationProperties temporaryProps;
     
     public ShardingSphereMetaData() {
-        this(new LinkedHashMap<>(), new 
ResourceMetaData(Collections.emptyMap()), new 
RuleMetaData(Collections.emptyList()),
-                new ConfigurationProperties(new Properties()));
+        this(new LinkedHashMap<>(), new 
ResourceMetaData(Collections.emptyMap()), new 
RuleMetaData(Collections.emptyList()), new ConfigurationProperties(new 
Properties()));
     }
     
     public ShardingSphereMetaData(final Map<String, ShardingSphereDatabase> 
databases, final ResourceMetaData globalResourceMetaData,
@@ -65,19 +64,6 @@ public final class ShardingSphereMetaData {
         temporaryProps = new 
TemporaryConfigurationProperties(props.getProps());
     }
     
-    /**
-     * Add database.
-     *
-     * @param databaseName database name
-     * @param protocolType protocol database type
-     * @param props configuration properties
-     */
-    public void addDatabase(final String databaseName, final DatabaseType 
protocolType, final ConfigurationProperties props) {
-        ShardingSphereDatabase database = 
ShardingSphereDatabase.create(databaseName, protocolType, props);
-        putDatabase(database);
-        globalRuleMetaData.findRules(ResourceHeldRule.class).forEach(each -> 
each.addResource(database));
-    }
-    
     /**
      * Judge contains database from meta data or not.
      *
@@ -99,12 +85,16 @@ public final class ShardingSphereMetaData {
     }
     
     /**
-     * Put database.
+     * Add database.
      *
-     * @param database database
+     * @param databaseName database name
+     * @param protocolType protocol database type
+     * @param props configuration properties
      */
-    public void putDatabase(final ShardingSphereDatabase database) {
+    public void addDatabase(final String databaseName, final DatabaseType 
protocolType, final ConfigurationProperties props) {
+        ShardingSphereDatabase database = 
ShardingSphereDatabase.create(databaseName, protocolType, props);
         databases.put(database.getName().toLowerCase(), database);
+        globalRuleMetaData.findRules(ResourceHeldRule.class).forEach(each -> 
each.addResource(database));
     }
     
     /**
@@ -113,8 +103,7 @@ public final class ShardingSphereMetaData {
      * @param databaseName database name
      */
     public void dropDatabase(final String databaseName) {
-        ShardingSphereDatabase toBeRemovedDatabase = 
databases.remove(databaseName.toLowerCase());
-        closeResources(toBeRemovedDatabase);
+        closeResources(databases.remove(databaseName.toLowerCase()));
     }
     
     private void closeResources(final ShardingSphereDatabase database) {
diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java
 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java
index da1846beea8..0b97e1b9c90 100644
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java
+++ 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java
@@ -17,16 +17,13 @@
 
 package org.apache.shardingsphere.infra.metadata;
 
-import 
org.apache.shardingsphere.infra.config.database.impl.DataSourceProvidedDatabaseConfiguration;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.instance.InstanceContext;
 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.storage.StorageUnit;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import org.apache.shardingsphere.infra.rule.identifier.type.ResourceHeldRule;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource;
 import org.apache.shardingsphere.test.mock.AutoMockExtension;
 import org.apache.shardingsphere.test.mock.StaticMockSettings;
@@ -36,7 +33,6 @@ import org.mockito.junit.jupiter.MockitoSettings;
 import org.mockito.quality.Strictness;
 
 import javax.sql.DataSource;
-import java.sql.SQLException;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
@@ -44,7 +40,6 @@ import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
@@ -96,20 +91,4 @@ class ShardingSphereMetaDataTest {
         when(result.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.singleton(databaseResourceHeldRule)));
         return result;
     }
-    
-    @Test
-    void assertGetPostgreSQLDefaultSchema() throws SQLException {
-        DatabaseType databaseType = 
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL");
-        ShardingSphereDatabase actual = 
ShardingSphereDatabase.create("foo_db", databaseType, 
Collections.singletonMap("", databaseType),
-                mock(DataSourceProvidedDatabaseConfiguration.class), new 
ConfigurationProperties(new Properties()), mock(InstanceContext.class));
-        assertNotNull(actual.getSchema("public"));
-    }
-    
-    @Test
-    void assertGetMySQLDefaultSchema() throws SQLException {
-        DatabaseType databaseType = 
TypedSPILoader.getService(DatabaseType.class, "MySQL");
-        ShardingSphereDatabase actual = 
ShardingSphereDatabase.create("foo_db", databaseType, 
Collections.singletonMap("", databaseType),
-                mock(DataSourceProvidedDatabaseConfiguration.class), new 
ConfigurationProperties(new Properties()), mock(InstanceContext.class));
-        assertNotNull(actual.getSchema("foo_db"));
-    }
 }
diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabaseTest.java
 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabaseTest.java
index 6b8b899ec1b..a96960679cb 100644
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabaseTest.java
+++ 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/ShardingSphereDatabaseTest.java
@@ -17,27 +17,42 @@
 
 package org.apache.shardingsphere.infra.metadata.database;
 
+import 
org.apache.shardingsphere.infra.config.database.impl.DataSourceProvidedDatabaseConfiguration;
+import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.instance.InstanceContext;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
 import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import 
org.apache.shardingsphere.infra.rule.identifier.type.DataSourceContainedRule;
 import 
org.apache.shardingsphere.infra.rule.identifier.type.MutableDataNodeRule;
 import org.apache.shardingsphere.infra.rule.identifier.type.TableContainedRule;
+import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource;
+import org.apache.shardingsphere.test.mock.AutoMockExtension;
+import org.apache.shardingsphere.test.mock.StaticMockSettings;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoSettings;
+import org.mockito.quality.Strictness;
 
+import java.sql.SQLException;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedList;
+import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
 
+@ExtendWith(AutoMockExtension.class)
+@StaticMockSettings(ShardingSphereDatabase.class)
+@MockitoSettings(strictness = Strictness.LENIENT)
 class ShardingSphereDatabaseTest {
     
     @Test
@@ -73,4 +88,20 @@ class ShardingSphereDatabaseTest {
         database.reloadRules(MutableDataNodeRule.class);
         assertThat(database.getRuleMetaData().getRules().size(), is(3));
     }
+    
+    @Test
+    void assertGetPostgreSQLDefaultSchema() throws SQLException {
+        DatabaseType databaseType = 
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL");
+        ShardingSphereDatabase actual = 
ShardingSphereDatabase.create("foo_db", databaseType, 
Collections.singletonMap("", databaseType),
+                mock(DataSourceProvidedDatabaseConfiguration.class), new 
ConfigurationProperties(new Properties()), mock(InstanceContext.class));
+        assertNotNull(actual.getSchema("public"));
+    }
+    
+    @Test
+    void assertGetMySQLDefaultSchema() throws SQLException {
+        DatabaseType databaseType = 
TypedSPILoader.getService(DatabaseType.class, "MySQL");
+        ShardingSphereDatabase actual = 
ShardingSphereDatabase.create("foo_db", databaseType, 
Collections.singletonMap("", databaseType),
+                mock(DataSourceProvidedDatabaseConfiguration.class), new 
ConfigurationProperties(new Properties()), mock(InstanceContext.class));
+        assertNotNull(actual.getSchema("foo_db"));
+    }
 }

Reply via email to