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 <[email protected]>
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;
+ }
+}