You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by xi...@apache.org on 2020/11/06 06:12:59 UTC

[shardingsphere] branch master updated: Move ShardingSphereMetaData.close() method to ShardingSphereResource class (#8047)

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

xiaoyu 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 8ddfdf8  Move ShardingSphereMetaData.close() method to ShardingSphereResource class (#8047)
8ddfdf8 is described below

commit 8ddfdf8cba8bf73a522e8612d29e2b54205e222a
Author: Liang Zhang <te...@163.com>
AuthorDate: Fri Nov 6 14:02:01 2020 +0800

    Move ShardingSphereMetaData.close() method to ShardingSphereResource class (#8047)
---
 .../context/schema/GovernanceSchemaContexts.java   |  4 +-
 .../infra/metadata/ShardingSphereMetaData.java     | 25 ---------
 .../metadata/resource/ShardingSphereResource.java  | 25 +++++++++
 .../infra/metadata/ShardingSphereMetaDataTest.java | 39 +------------
 .../resource/ShardingSphereResourceTest.java       | 65 ++++++++++++++++++++++
 5 files changed, 93 insertions(+), 65 deletions(-)

diff --git a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/main/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContexts.java b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/main/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContexts.java
index 29ba2b3..02087c0 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/main/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContexts.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/main/java/org/apache/shardingsphere/governance/context/schema/GovernanceSchemaContexts.java
@@ -313,8 +313,8 @@ public final class GovernanceSchemaContexts implements SchemaContexts {
     private ShardingSphereMetaData getChangedMetaData(final ShardingSphereMetaData oldMetaData, final Map<String, DataSourceConfiguration> newDataSourceConfigs) throws SQLException {
         Collection<String> deletedDataSources = getDeletedDataSources(oldMetaData, newDataSourceConfigs);
         Map<String, DataSource> modifiedDataSources = getModifiedDataSources(oldMetaData, newDataSourceConfigs);
-        oldMetaData.closeDataSources(deletedDataSources);
-        oldMetaData.closeDataSources(modifiedDataSources.keySet());
+        oldMetaData.getResource().close(deletedDataSources);
+        oldMetaData.getResource().close(modifiedDataSources.keySet());
         Map<String, Map<String, DataSource>> dataSourcesMap = Collections.singletonMap(oldMetaData.getName(), 
                 getNewDataSources(oldMetaData.getResource().getDataSources(), getAddedDataSources(oldMetaData, newDataSourceConfigs), modifiedDataSources, deletedDataSources));
         return new SchemaContextsBuilder(schemaContexts.getDatabaseType(), dataSourcesMap,
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
index a065517..b1fae59 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaData.java
@@ -24,8 +24,6 @@ import org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import org.apache.shardingsphere.infra.schema.model.ShardingSphereSchema;
 
-import javax.sql.DataSource;
-import java.sql.SQLException;
 import java.util.Collection;
 
 /**
@@ -53,27 +51,4 @@ public final class ShardingSphereMetaData {
     public boolean isComplete() {
         return !rules.isEmpty() && !resource.getDataSources().isEmpty();
     }
-    
-    /**
-     * Close data sources.
-     * @param dataSources data sources
-     * @throws SQLException exception
-     */
-    public void closeDataSources(final Collection<String> dataSources) throws SQLException {
-        for (String each :dataSources) {
-            close(resource.getDataSources().get(each));
-        }
-    }
-    
-    private void close(final DataSource dataSource) throws SQLException {
-        if (dataSource instanceof AutoCloseable) {
-            try {
-                ((AutoCloseable) dataSource).close();
-            // CHECKSTYLE:OFF
-            } catch (final Exception e) {
-            // CHECKSTYLE:ON
-                throw new SQLException(e);
-            }
-        }
-    }
 }
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/resource/ShardingSphereResource.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/resource/ShardingSphereResource.java
index 472ddd6..a758018 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/resource/ShardingSphereResource.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/resource/ShardingSphereResource.java
@@ -23,6 +23,8 @@ import org.apache.shardingsphere.infra.schema.model.datasource.CachedDatabaseMet
 import org.apache.shardingsphere.infra.schema.model.datasource.DataSourcesMetaData;
 
 import javax.sql.DataSource;
+import java.sql.SQLException;
+import java.util.Collection;
 import java.util.Map;
 
 /**
@@ -37,4 +39,27 @@ public final class ShardingSphereResource {
     private final DataSourcesMetaData dataSourcesMetaData;
     
     private final CachedDatabaseMetaData cachedDatabaseMetaData;
+    
+    /**
+     * Close data sources.
+     * @param dataSources data sources to be closed
+     * @throws SQLException exception
+     */
+    public void close(final Collection<String> dataSources) throws SQLException {
+        for (String each :dataSources) {
+            close(this.dataSources.get(each));
+        }
+    }
+    
+    private void close(final DataSource dataSource) throws SQLException {
+        if (dataSource instanceof AutoCloseable) {
+            try {
+                ((AutoCloseable) dataSource).close();
+                // CHECKSTYLE:OFF
+            } catch (final Exception ex) {
+                // CHECKSTYLE:ON
+                throw new SQLException(ex);
+            }
+        }
+    }
 }
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java
index 0189541..dc1ffe9 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/ShardingSphereMetaDataTest.java
@@ -19,42 +19,21 @@ package org.apache.shardingsphere.infra.metadata;
 
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
-import org.apache.shardingsphere.infra.schema.fixture.datasource.CloseableDataSource;
-import org.apache.shardingsphere.infra.schema.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
+import org.apache.shardingsphere.infra.schema.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.schema.model.datasource.CachedDatabaseMetaData;
 import org.apache.shardingsphere.infra.schema.model.datasource.DataSourcesMetaData;
 import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
 
 import javax.sql.DataSource;
-import java.io.IOException;
-import java.sql.SQLException;
-import java.util.Arrays;
 import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
 
-@RunWith(MockitoJUnitRunner.class)
 public final class ShardingSphereMetaDataTest {
     
-    @Mock
-    private CloseableDataSource dataSource0;
-    
-    @Mock
-    private CloseableDataSource dataSource1;
-    
-    @Mock
-    private DataSource dataSource2;
-    
     @Test
     public void assertIsComplete() {
         ShardingSphereResource resource = new ShardingSphereResource(Collections.singletonMap("ds", mock(DataSource.class)), mock(DataSourcesMetaData.class), mock(CachedDatabaseMetaData.class));
@@ -77,20 +56,4 @@ public final class ShardingSphereMetaDataTest {
                 "name", Collections.singleton(mock(RuleConfiguration.class)), Collections.singleton(mock(ShardingSphereRule.class)), resource, mock(ShardingSphereSchema.class));
         assertFalse(metaData.isComplete());
     }
-    
-    @Test
-    public void assertCloseDataSources() throws SQLException, IOException {
-        ShardingSphereResource resource = new ShardingSphereResource(createDataSources(), mock(DataSourcesMetaData.class), mock(CachedDatabaseMetaData.class));
-        new ShardingSphereMetaData("name", Collections.emptyList(), Collections.emptyList(), resource, mock(ShardingSphereSchema.class)).closeDataSources(Arrays.asList("ds_0", "ds_2"));
-        verify(dataSource0).close();
-        verify(dataSource1, times(0)).close();
-    }
-    
-    private Map<String, DataSource> createDataSources() {
-        Map<String, DataSource> result = new HashMap<>(3, 1);
-        result.put("ds_0", dataSource0);
-        result.put("ds_1", dataSource1);
-        result.put("ds_2", dataSource2);
-        return result;
-    }
 }
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/resource/ShardingSphereResourceTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/resource/ShardingSphereResourceTest.java
new file mode 100644
index 0000000..ff2a353
--- /dev/null
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/resource/ShardingSphereResourceTest.java
@@ -0,0 +1,65 @@
+/*
+ * 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.resource;
+
+import org.apache.shardingsphere.infra.schema.fixture.datasource.CloseableDataSource;
+import org.apache.shardingsphere.infra.schema.model.datasource.CachedDatabaseMetaData;
+import org.apache.shardingsphere.infra.schema.model.datasource.DataSourcesMetaData;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+import javax.sql.DataSource;
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+@RunWith(MockitoJUnitRunner.class)
+public final class ShardingSphereResourceTest {
+    
+    @Mock
+    private CloseableDataSource dataSource0;
+    
+    @Mock
+    private CloseableDataSource dataSource1;
+    
+    @Mock
+    private DataSource dataSource2;
+    
+    @Test
+    public void assertClose() throws SQLException, IOException {
+        new ShardingSphereResource(createDataSources(), mock(DataSourcesMetaData.class), mock(CachedDatabaseMetaData.class)).close(Arrays.asList("ds_0", "ds_2"));
+        verify(dataSource0).close();
+        verify(dataSource1, times(0)).close();
+    }
+    
+    private Map<String, DataSource> createDataSources() {
+        Map<String, DataSource> result = new HashMap<>(3, 1);
+        result.put("ds_0", dataSource0);
+        result.put("ds_1", dataSource1);
+        result.put("ds_2", dataSource2);
+        return result;
+    }
+}