This is an automated email from the ASF dual-hosted git repository.
panjuan 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 e12d8ce Minor improve for MetaDataContextsBuilder (#11530)
e12d8ce is described below
commit e12d8cea88c06bf66de9044d5ea8c5774fb82a75
Author: Haoran Meng <[email protected]>
AuthorDate: Tue Jul 27 13:52:07 2021 +0800
Minor improve for MetaDataContextsBuilder (#11530)
---
.../metadata/GovernanceMetaDataContexts.java | 40 ++++++-------
.../core/schema/GovernanceSchemaGroup.java | 65 ----------------------
.../core/schema/GovernanceSchemaGroupTest.java | 59 --------------------
3 files changed, 16 insertions(+), 148 deletions(-)
diff --git
a/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
b/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
index 8979a2a..60af405 100644
---
a/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
+++
b/shardingsphere-governance/shardingsphere-governance-context/src/main/java/org/apache/shardingsphere/governance/context/metadata/GovernanceMetaDataContexts.java
@@ -180,20 +180,17 @@ public final class GovernanceMetaDataContexts implements
MetaDataContexts {
/**
* Renew to persist meta data.
*
- * @param event schma added event
+ * @param event schema added event
* @throws SQLException SQL exception
*/
@Subscribe
public synchronized void renew(final SchemaAddedEvent event) throws
SQLException {
- Map<String, ShardingSphereMetaData> metaDataMap = new
HashMap<>(metaDataContexts.getMetaDataMap());
- ShardingSphereMetaData metaData = buildMetaData(event);
- metaDataMap.put(event.getSchemaName(), metaData);
+ persistSchema(event.getSchemaName());
+ ShardingSphereMetaData metaData = buildMetaData(event.getSchemaName());
metaDataContexts.getOptimizeContextFactory().getSchemaMetadatas().getSchemas().put(event.getSchemaName(),
new FederateSchemaMetadata(event.getSchemaName(),
metaData.getSchema().getTables()));
- metaDataContexts = new
StandardMetaDataContexts(distMetaDataPersistService, metaDataMap,
metaDataContexts.getGlobalRuleMetaData(), metaDataContexts.getExecutorEngine(),
- metaDataContexts.getProps(),
metaDataContexts.getOptimizeContextFactory());
-
distMetaDataPersistService.getSchemaMetaDataService().persist(event.getSchemaName(),
metaDataContexts.getMetaDataMap().get(event.getSchemaName()).getSchema());
+ metaDataContexts.getMetaDataMap().put(event.getSchemaName(), metaData);
ShardingSphereEventBus.getInstance().post(new
DataSourceChangeCompletedEvent(event.getSchemaName(),
-
metaDataContexts.getMetaDataMap().get(event.getSchemaName()).getResource().getDatabaseType(),
metaDataMap.get(event.getSchemaName()).getResource().getDataSources()));
+
metaDataContexts.getMetaDataMap().get(event.getSchemaName()).getResource().getDatabaseType(),
metaData.getResource().getDataSources()));
}
/**
@@ -348,21 +345,19 @@ public final class GovernanceMetaDataContexts implements
MetaDataContexts {
return newMetaDataMap;
}
- private ShardingSphereMetaData buildMetaData(final SchemaAddedEvent event)
throws SQLException {
- String schemaName = event.getSchemaName();
- if
(!distMetaDataPersistService.getDataSourceService().isExisted(schemaName)) {
-
distMetaDataPersistService.getDataSourceService().persist(schemaName, new
LinkedHashMap<>());
- }
- if
(!distMetaDataPersistService.getSchemaRuleService().isExisted(schemaName)) {
-
distMetaDataPersistService.getSchemaRuleService().persist(schemaName, new
LinkedList<>());
- }
+ private void persistSchema(final String schemaName) {
+ distMetaDataPersistService.getDataSourceService().persist(schemaName,
new LinkedHashMap<>());
+ distMetaDataPersistService.getSchemaRuleService().persist(schemaName,
new LinkedList<>());
+
distMetaDataPersistService.getSchemaMetaDataService().persist(schemaName, new
ShardingSphereSchema());
+ }
+
+ private ShardingSphereMetaData buildMetaData(final String schemaName)
throws SQLException {
Map<String, Map<String, DataSource>> dataSourcesMap =
createDataSourcesMap(Collections.singletonMap(schemaName,
distMetaDataPersistService.getDataSourceService().load(schemaName)));
- MetaDataContextsBuilder metaDataContextsBuilder = new
MetaDataContextsBuilder(dataSourcesMap,
+ return new MetaDataContextsBuilder(dataSourcesMap,
Collections.singletonMap(schemaName,
distMetaDataPersistService.getSchemaRuleService().load(schemaName)),
distMetaDataPersistService.getGlobalRuleService().load(),
- metaDataContexts.getProps().getProps());
- return
metaDataContextsBuilder.build(distMetaDataPersistService).getMetaDataMap().get(schemaName);
+
metaDataContexts.getProps().getProps()).build(distMetaDataPersistService).getMetaData(schemaName);
}
private ShardingSphereMetaData getChangedMetaData(final
ShardingSphereMetaData oldMetaData, final ShardingSphereSchema schema, final
String schemaName) {
@@ -421,10 +416,7 @@ public final class GovernanceMetaDataContexts implements
MetaDataContexts {
}
private Map<String, Map<String, DataSource>> createDataSourcesMap(final
Map<String, Map<String, DataSourceConfiguration>> dataSourcesConfigs) {
- Map<String, Map<String, DataSource>> result = new
LinkedHashMap<>(dataSourcesConfigs.size(), 1);
- for (Entry<String, Map<String, DataSourceConfiguration>> entry :
dataSourcesConfigs.entrySet()) {
- result.put(entry.getKey(),
DataSourceConverter.getDataSourceMap(entry.getValue()));
- }
- return result;
+ return
dataSourcesConfigs.entrySet().stream().collect(Collectors.toMap(Entry::getKey,
+ entry -> DataSourceConverter.getDataSourceMap(entry.getValue())));
}
}
diff --git
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/schema/GovernanceSchemaGroup.java
b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/schema/GovernanceSchemaGroup.java
deleted file mode 100644
index 2ece23ec..0000000
---
a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/schema/GovernanceSchemaGroup.java
+++ /dev/null
@@ -1,65 +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.governance.core.schema;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.Map;
-
-/**
- * Governance schema group.
- */
-public final class GovernanceSchemaGroup {
-
- private final Map<String, Collection<String>> schemaGroup = new
HashMap<>();
-
- /**
- * Add governance schema.
- *
- * @param governanceSchema governance schema
- */
- public void add(final GovernanceSchema governanceSchema) {
- String schemaName = governanceSchema.getSchemaName();
- if (!schemaGroup.containsKey(schemaName)) {
- schemaGroup.put(schemaName, new LinkedList<>());
- }
- schemaGroup.get(schemaName).add(governanceSchema.getDataSourceName());
- }
-
- /**
- * Put governance schema.
- *
- * @param schemaName schema name
- * @param dataSourceNames data source names
- */
- public void put(final String schemaName, final Collection<String>
dataSourceNames) {
- schemaGroup.put(schemaName, dataSourceNames);
- }
-
- /**
- * Get data source names.
- *
- * @param schemaName schema name
- * @return data source names
- */
- public Collection<String> getDataSourceNames(final String schemaName) {
- return schemaGroup.getOrDefault(schemaName, Collections.emptyList());
- }
-}
diff --git
a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/schema/GovernanceSchemaGroupTest.java
b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/schema/GovernanceSchemaGroupTest.java
deleted file mode 100644
index 76bf898..0000000
---
a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/schema/GovernanceSchemaGroupTest.java
+++ /dev/null
@@ -1,59 +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.governance.core.schema;
-
-import org.junit.Test;
-
-import java.util.Arrays;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
-public final class GovernanceSchemaGroupTest {
-
- @Test
- public void assertAddWithExistedSchemaName() {
- GovernanceSchemaGroup actual = new GovernanceSchemaGroup();
- actual.add(new GovernanceSchema("test_0.ds_0"));
- actual.add(new GovernanceSchema("test_0.ds_1"));
- assertThat(actual.getDataSourceNames("test_0").size(), is(2));
- assertTrue(actual.getDataSourceNames("test_0").contains("ds_0"));
- assertTrue(actual.getDataSourceNames("test_0").contains("ds_1"));
- }
-
- @Test
- public void assertAddWithoutExistedSchemaName() {
- GovernanceSchemaGroup actual = new GovernanceSchemaGroup();
- actual.add(new GovernanceSchema("test_0.ds_0"));
- actual.add(new GovernanceSchema("test_1.ds_1"));
- assertThat(actual.getDataSourceNames("test_0").size(), is(1));
- assertTrue(actual.getDataSourceNames("test_0").contains("ds_0"));
- assertThat(actual.getDataSourceNames("test_1").size(), is(1));
- assertTrue(actual.getDataSourceNames("test_1").contains("ds_1"));
- }
-
- @Test
- public void assertPut() {
- GovernanceSchemaGroup actual = new GovernanceSchemaGroup();
- actual.put("test", Arrays.asList("ds_0", "ds_1"));
- assertThat(actual.getDataSourceNames("test").size(), is(2));
- assertTrue(actual.getDataSourceNames("test").contains("ds_0"));
- assertTrue(actual.getDataSourceNames("test").contains("ds_1"));
- }
-}