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"));
-    }
-}

Reply via email to