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 cbc908a  Refactor registry center node listeners
     new f90bdbd  Merge pull request #7185 from menghaoranss/issue7108-2
cbc908a is described below

commit cbc908a289fbb9f1560311478fb53f68c69b4209
Author: menghaoranss <[email protected]>
AuthorDate: Mon Aug 31 19:00:51 2020 +0800

    Refactor registry center node listeners
---
 .../core/facade/listener/GovernanceListenerManager.java  |  2 +-
 .../governance/core/registry/RegistryCenterNode.java     |  9 +++++++--
 .../listener/DataSourceStateChangedListener.java         | 16 ++++++++--------
 .../core/registry/listener/RegistryListenerManager.java  |  6 ++++--
 .../governance/core/registry/RegistryCenterNodeTest.java |  2 +-
 .../listener/DataSourceStateChangedListenerTest.java     |  5 +++--
 .../registry/listener/RegistryListenerManagerTest.java   |  4 +++-
 7 files changed, 27 insertions(+), 17 deletions(-)

diff --git 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-facade/src/main/java/org/apache/shardingsphere/governance/core/facade/listener/GovernanceListenerManager.java
 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-facade/src/main/java/org/apache/shardingsphere/governance/core/facade/listener/GovernanceListenerManager.java
index 639ff88..cee3349 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-facade/src/main/java/org/apache/shardingsphere/governance/core/facade/listener/GovernanceListenerManager.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-facade/src/main/java/org/apache/shardingsphere/governance/core/facade/listener/GovernanceListenerManager.java
@@ -38,7 +38,7 @@ public final class GovernanceListenerManager {
     
     public GovernanceListenerManager(final RegistryRepository 
registryRepository, final ConfigurationRepository configurationRepository, 
final Collection<String> schemaNames) {
         configurationListenerManager = new 
ConfigurationListenerManager(configurationRepository, schemaNames);
-        registryListenerManager = new 
RegistryListenerManager(registryRepository);
+        registryListenerManager = new 
RegistryListenerManager(registryRepository, schemaNames);
         metaDataListenerManager = new 
MetaDataListenerManager(configurationRepository, schemaNames);
     }
     
diff --git 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterNode.java
 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterNode.java
index 6fa1130..fe1889d 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterNode.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterNode.java
@@ -23,6 +23,9 @@ import 
org.apache.shardingsphere.governance.core.registry.schema.GovernanceSchem
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Optional;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * Registry center node.
@@ -82,8 +85,10 @@ public final class RegistryCenterNode {
      * @param dataSourceNodeFullPath data source node full path
      * @return governance sharding schema
      */
-    public GovernanceSchema getGovernanceShardingSchema(final String 
dataSourceNodeFullPath) {
-        return new 
GovernanceSchema(dataSourceNodeFullPath.replace(getDataSourcesNodeFullRootPath()
 + '/', ""));
+    public Optional<GovernanceSchema> getGovernanceShardingSchema(final String 
dataSourceNodeFullPath) {
+        Pattern pattern = Pattern.compile(getDataSourcesNodeFullRootPath() + 
"/" + "(\\w+)/(\\w+)$", Pattern.CASE_INSENSITIVE);
+        Matcher matcher = pattern.matcher(dataSourceNodeFullPath);
+        return matcher.find() ? Optional.of(new 
GovernanceSchema(matcher.group(1), matcher.group(2))) : Optional.empty();
     }
     
     /**
diff --git 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/DataSourceStateChangedListener.java
 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/DataSourceStateChangedListener.java
index ca2c929..a84da32 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/DataSourceStateChangedListener.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/DataSourceStateChangedListener.java
@@ -27,7 +27,7 @@ import 
org.apache.shardingsphere.governance.repository.api.RegistryRepository;
 import 
org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
 import 
org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.ChangedType;
 
-import java.util.Collections;
+import java.util.Collection;
 import java.util.Optional;
 
 /**
@@ -37,18 +37,18 @@ public final class DataSourceStateChangedListener extends 
PostGovernanceReposito
     
     private final RegistryCenterNode registryCenterNode;
     
-    public DataSourceStateChangedListener(final RegistryRepository 
registryRepository) {
-        super(registryRepository, Collections.singleton(new 
RegistryCenterNode().getDataSourcesNodeFullRootPath()));
+    public DataSourceStateChangedListener(final RegistryRepository 
registryRepository, final Collection<String> schemaNames) {
+        super(registryRepository, new 
RegistryCenterNode().getAllDataSourcesSchemaPaths(schemaNames));
         registryCenterNode = new RegistryCenterNode();
     }
     
     @Override
     protected Optional<GovernanceEvent> createGovernanceEvent(final 
DataChangedEvent event) {
-        return Optional.of(new 
DisabledStateChangedEvent(getShardingSchema(event.getKey()), 
isDataSourceDisabled(event)));
-    }
-    
-    private GovernanceSchema getShardingSchema(final String 
dataSourceNodeFullPath) {
-        return 
registryCenterNode.getGovernanceShardingSchema(dataSourceNodeFullPath);
+        Optional<GovernanceSchema> governanceSchema = 
registryCenterNode.getGovernanceShardingSchema(event.getKey());
+        if (governanceSchema.isPresent()) {
+            return Optional.of(new 
DisabledStateChangedEvent(governanceSchema.get(), isDataSourceDisabled(event)));
+        }
+        return Optional.empty();
     }
     
     private boolean isDataSourceDisabled(final DataChangedEvent event) {
diff --git 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/RegistryListenerManager.java
 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/RegistryListenerManager.java
index 4da8d19..2e2c985 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/RegistryListenerManager.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/RegistryListenerManager.java
@@ -20,6 +20,8 @@ package 
org.apache.shardingsphere.governance.core.registry.listener;
 import org.apache.shardingsphere.governance.repository.api.RegistryRepository;
 import 
org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.ChangedType;
 
+import java.util.Collection;
+
 /**
  * Registry listener manager.
  */
@@ -29,9 +31,9 @@ public final class RegistryListenerManager {
     
     private final DataSourceStateChangedListener 
dataSourceStateChangedListener;
     
-    public RegistryListenerManager(final RegistryRepository 
registryRepository) {
+    public RegistryListenerManager(final RegistryRepository 
registryRepository, final Collection<String> schemaNames) {
         instanceStateChangedListener = new 
InstanceStateChangedListener(registryRepository);
-        dataSourceStateChangedListener = new 
DataSourceStateChangedListener(registryRepository);
+        dataSourceStateChangedListener = new 
DataSourceStateChangedListener(registryRepository, schemaNames);
     }
     
     /**
diff --git 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterNodeTest.java
 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterNodeTest.java
index 1928378..6e3747f 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterNodeTest.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/RegistryCenterNodeTest.java
@@ -42,7 +42,7 @@ public final class RegistryCenterNodeTest {
     
     @Test
     public void assertGetGovernanceShardingSchema() {
-        
assertThat(registryCenterNode.getGovernanceShardingSchema("/registry/datasources/master_slave_db.slave_ds_0").getSchemaName(),
 is("master_slave_db"));
+        
assertThat(registryCenterNode.getGovernanceShardingSchema("/registry/datasources/master_slave_db/slave_ds_0").get().getSchemaName(),
 is("master_slave_db"));
     }
     
     @Test
diff --git 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/DataSourceStateChangedListenerTest.java
 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/DataSourceStateChangedListenerTest.java
index 23a1356..727cc55 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/DataSourceStateChangedListenerTest.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/DataSourceStateChangedListenerTest.java
@@ -29,6 +29,7 @@ import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
 
+import java.util.Arrays;
 import java.util.Optional;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -45,13 +46,13 @@ public final class DataSourceStateChangedListenerTest {
     
     @Before
     public void setUp() {
-        dataSourceStateChangedListener = new 
DataSourceStateChangedListener(registryRepository);
+        dataSourceStateChangedListener = new 
DataSourceStateChangedListener(registryRepository, Arrays.asList("sharding_db", 
"masterslave_db", "encrypt_db"));
     }
     
     @Test
     public void assertCreateGovernanceEvent() {
         Optional<GovernanceEvent> actual = 
dataSourceStateChangedListener.createGovernanceEvent(
-                new 
DataChangedEvent("/registry/datasources/master_slave_db.slave_ds_0", 
"disabled", ChangedType.UPDATED));
+                new 
DataChangedEvent("/registry/datasources/master_slave_db/slave_ds_0", 
"disabled", ChangedType.UPDATED));
         assertTrue(actual.isPresent());
         assertThat(((DisabledStateChangedEvent) 
actual.get()).getGovernanceSchema().getSchemaName(), is(new 
GovernanceSchema("master_slave_db", "slave_ds_0").getSchemaName()));
     }
diff --git 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/RegistryListenerManagerTest.java
 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/RegistryListenerManagerTest.java
index d926b17..a43cacc 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/RegistryListenerManagerTest.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-registry/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/RegistryListenerManagerTest.java
@@ -25,6 +25,8 @@ import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
 
+import java.util.Arrays;
+
 import static org.mockito.Mockito.verify;
 
 @RunWith(MockitoJUnitRunner.class)
@@ -41,7 +43,7 @@ public final class RegistryListenerManagerTest {
     
     @Test
     public void assertInitListeners() {
-        RegistryListenerManager actual = new 
RegistryListenerManager(registryRepository);
+        RegistryListenerManager actual = new 
RegistryListenerManager(registryRepository, Arrays.asList("sharding_db", 
"masterslave_db", "encrypt_db"));
         FieldUtil.setField(actual, "instanceStateChangedListener", 
instanceStateChangedListener);
         FieldUtil.setField(actual, "dataSourceStateChangedListener", 
dataSourceStateChangedListener);
         actual.initListeners();

Reply via email to