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

zhangliang 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 90c0251  refactor eventbus (#7313)
90c0251 is described below

commit 90c0251a7bd6286af88c98951075f48ba8f03263
Author: kimmking <[email protected]>
AuthorDate: Tue Sep 8 13:30:39 2020 +0800

    refactor eventbus (#7313)
    
    * refactor eventbus
    
    * add services
---
 .../core/event/persist/DataSourcePersistEvent.java |  5 ++-
 .../core/event/persist/MetaDataPersistEvent.java   |  5 ++-
 .../core/event/persist/RulePersistEvent.java       |  5 ++-
 .../core/event/persist/SchemaNamePersistEvent.java |  5 ++-
 .../core}/eventbus/ShardingSphereEventBus.java     |  2 +-
 .../PostGovernanceRepositoryEventListener.java     |  2 +-
 .../core}/eventbus/ShardingSphereEventBusTest.java |  2 +-
 .../governance/core/config/ConfigCenter.java       | 14 +++---
 .../governance/core/config/ConfigCenterTest.java   | 16 +++----
 .../context/schema/GovernanceSchemaContexts.java   |  2 +-
 .../transaction/GovernanceTransactionContexts.java |  2 +-
 .../governance/core/metadata/MetaDataCenter.java   |  6 +--
 .../schema/spi/RuleMetaDataNotifier.java}          | 20 ++++-----
 .../driver/executor/PreparedStatementExecutor.java | 19 ++++++--
 .../driver/executor/StatementExecutor.java         | 19 ++++++--
 .../metadata/RuleSchemaMetaDataNotifier.java       | 50 ++++++++++++++++++++++
 ....infra.metadata.schema.spi.RuleMetaDataNotifier | 18 ++++++++
 .../jdbc/JDBCDatabaseCommunicationEngine.java      |  6 +--
 .../backend/text/admin/RDLBackendHandler.java      | 16 +++----
 19 files changed, 156 insertions(+), 58 deletions(-)

diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/eventbus/event/DataSourceEvent.java
 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/event/persist/DataSourcePersistEvent.java
similarity index 84%
rename from 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/eventbus/event/DataSourceEvent.java
rename to 
shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/event/persist/DataSourcePersistEvent.java
index 9e505b2..14dcaa8 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/eventbus/event/DataSourceEvent.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/event/persist/DataSourcePersistEvent.java
@@ -15,10 +15,11 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.eventbus.event;
+package org.apache.shardingsphere.governance.core.event.persist;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.governance.core.event.GovernanceEvent;
 import 
org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
 
 import java.util.Map;
@@ -28,7 +29,7 @@ import java.util.Map;
  */
 @RequiredArgsConstructor
 @Getter
-public final class DataSourceEvent {
+public final class DataSourcePersistEvent implements GovernanceEvent {
     
     private final String schemaName;
     
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/eventbus/event/MetaDataEvent.java
 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/event/persist/MetaDataPersistEvent.java
similarity index 84%
copy from 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/eventbus/event/MetaDataEvent.java
copy to 
shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/event/persist/MetaDataPersistEvent.java
index b68f2e4..14a5f8f 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/eventbus/event/MetaDataEvent.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/event/persist/MetaDataPersistEvent.java
@@ -15,10 +15,11 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.eventbus.event;
+package org.apache.shardingsphere.governance.core.event.persist;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.governance.core.event.GovernanceEvent;
 import org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaData;
 
 /**
@@ -26,7 +27,7 @@ import 
org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaData;
  */
 @RequiredArgsConstructor
 @Getter
-public final class MetaDataEvent {
+public final class MetaDataPersistEvent implements GovernanceEvent {
     
     private final String schemaName;
     
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/eventbus/event/RuleEvent.java
 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/event/persist/RulePersistEvent.java
similarity index 84%
rename from 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/eventbus/event/RuleEvent.java
rename to 
shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/event/persist/RulePersistEvent.java
index 2a09e5f..444f321 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/eventbus/event/RuleEvent.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/event/persist/RulePersistEvent.java
@@ -15,10 +15,11 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.eventbus.event;
+package org.apache.shardingsphere.governance.core.event.persist;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.governance.core.event.GovernanceEvent;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 
 import java.util.Collection;
@@ -28,7 +29,7 @@ import java.util.Collection;
  */
 @RequiredArgsConstructor
 @Getter
-public final class RuleEvent {
+public final class RulePersistEvent implements GovernanceEvent {
     
     private final String schemaName;
     
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/eventbus/event/SchemaNameEvent.java
 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/event/persist/SchemaNamePersistEvent.java
similarity index 82%
rename from 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/eventbus/event/SchemaNameEvent.java
rename to 
shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/event/persist/SchemaNamePersistEvent.java
index 25b3199..8c60c9e 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/eventbus/event/SchemaNameEvent.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/event/persist/SchemaNamePersistEvent.java
@@ -15,17 +15,18 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.eventbus.event;
+package org.apache.shardingsphere.governance.core.event.persist;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.governance.core.event.GovernanceEvent;
 
 /**
  * Schema name event.
  */
 @RequiredArgsConstructor
 @Getter
-public final class SchemaNameEvent {
+public final class SchemaNamePersistEvent implements GovernanceEvent {
     
     private final String schemaName;
     
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/eventbus/ShardingSphereEventBus.java
 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/eventbus/ShardingSphereEventBus.java
similarity index 95%
rename from 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/eventbus/ShardingSphereEventBus.java
rename to 
shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/eventbus/ShardingSphereEventBus.java
index 4e37ba5..4951d10 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/eventbus/ShardingSphereEventBus.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/eventbus/ShardingSphereEventBus.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.eventbus;
+package org.apache.shardingsphere.governance.core.eventbus;
 
 import com.google.common.eventbus.EventBus;
 import lombok.AccessLevel;
diff --git 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/listener/PostGovernanceRepositoryEventListener.java
 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/listener/PostGovernanceRepositoryEventListener.java
index d8bd3ad..c776964 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/listener/PostGovernanceRepositoryEventListener.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/main/java/org/apache/shardingsphere/governance/core/listener/PostGovernanceRepositoryEventListener.java
@@ -22,7 +22,7 @@ import 
org.apache.shardingsphere.governance.core.event.GovernanceEvent;
 import 
org.apache.shardingsphere.governance.repository.api.GovernanceRepository;
 import 
org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
 import 
org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.ChangedType;
-import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
+import 
org.apache.shardingsphere.governance.core.eventbus.ShardingSphereEventBus;
 
 import java.util.Arrays;
 import java.util.Collection;
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/eventbus/ShardingSphereEventBusTest.java
 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/test/java/org/apache/shardingsphere/governance/core/eventbus/ShardingSphereEventBusTest.java
similarity index 94%
rename from 
shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/eventbus/ShardingSphereEventBusTest.java
rename to 
shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/test/java/org/apache/shardingsphere/governance/core/eventbus/ShardingSphereEventBusTest.java
index 4320dca..f4de8f6 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/eventbus/ShardingSphereEventBusTest.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-common/src/test/java/org/apache/shardingsphere/governance/core/eventbus/ShardingSphereEventBusTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.eventbus;
+package org.apache.shardingsphere.governance.core.eventbus;
 
 import org.junit.Test;
 
diff --git 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-config/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenter.java
 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-config/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenter.java
index fde736b..93f0498 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-config/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenter.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-config/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenter.java
@@ -32,10 +32,10 @@ import 
org.apache.shardingsphere.infra.auth.yaml.config.YamlAuthenticationConfig
 import 
org.apache.shardingsphere.infra.auth.yaml.swapper.AuthenticationYamlSwapper;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
-import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
-import org.apache.shardingsphere.infra.eventbus.event.DataSourceEvent;
-import org.apache.shardingsphere.infra.eventbus.event.RuleEvent;
-import org.apache.shardingsphere.infra.eventbus.event.SchemaNameEvent;
+import 
org.apache.shardingsphere.governance.core.eventbus.ShardingSphereEventBus;
+import 
org.apache.shardingsphere.governance.core.event.persist.DataSourcePersistEvent;
+import 
org.apache.shardingsphere.governance.core.event.persist.RulePersistEvent;
+import 
org.apache.shardingsphere.governance.core.event.persist.SchemaNamePersistEvent;
 import org.apache.shardingsphere.infra.yaml.config.YamlRootRuleConfigurations;
 import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
 import 
org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapperEngine;
@@ -104,7 +104,7 @@ public final class ConfigCenter {
      * @param event Data source event.
      */
     @Subscribe
-    public synchronized void renew(final DataSourceEvent event) {
+    public synchronized void renew(final DataSourcePersistEvent event) {
         persistDataSourceConfigurations(event.getSchemaName(), 
event.getDataSourceConfigurations());
     }
     
@@ -114,7 +114,7 @@ public final class ConfigCenter {
      * @param event Rule event.
      */
     @Subscribe
-    public synchronized void renew(final RuleEvent event) {
+    public synchronized void renew(final RulePersistEvent event) {
         persistRuleConfigurations(event.getSchemaName(), 
event.getRuleConfigurations());
     }
     
@@ -124,7 +124,7 @@ public final class ConfigCenter {
      * @param event Schema name event.
      */
     @Subscribe
-    public synchronized void renew(final SchemaNameEvent event) {
+    public synchronized void renew(final SchemaNamePersistEvent event) {
         persistSchema(event.getSchemaName(), event.isDrop());
     }
     
diff --git 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-config/src/test/java/org/apache/shardingsphere/governance/core/config/ConfigCenterTest.java
 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-config/src/test/java/org/apache/shardingsphere/governance/core/config/ConfigCenterTest.java
index 5ffaf80..cbb31c0 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-config/src/test/java/org/apache/shardingsphere/governance/core/config/ConfigCenterTest.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-config/src/test/java/org/apache/shardingsphere/governance/core/config/ConfigCenterTest.java
@@ -28,9 +28,9 @@ import 
org.apache.shardingsphere.infra.config.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
 import 
org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
 import 
org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
-import org.apache.shardingsphere.infra.eventbus.event.DataSourceEvent;
-import org.apache.shardingsphere.infra.eventbus.event.RuleEvent;
-import org.apache.shardingsphere.infra.eventbus.event.SchemaNameEvent;
+import 
org.apache.shardingsphere.governance.core.event.persist.DataSourcePersistEvent;
+import 
org.apache.shardingsphere.governance.core.event.persist.RulePersistEvent;
+import 
org.apache.shardingsphere.governance.core.event.persist.SchemaNamePersistEvent;
 import org.apache.shardingsphere.infra.yaml.config.YamlRootRuleConfigurations;
 import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
 import 
org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapperEngine;
@@ -445,7 +445,7 @@ public final class ConfigCenterTest {
     
     @Test
     public void assertRenewDataSourceEvent() {
-        DataSourceEvent event = new DataSourceEvent("sharding_db", 
createDataSourceConfigurations());
+        DataSourcePersistEvent event = new 
DataSourcePersistEvent("sharding_db", createDataSourceConfigurations());
         ConfigCenter configCenter = new ConfigCenter(configurationRepository);
         configCenter.renew(event);
         
verify(configurationRepository).persist(eq("/config/schema/sharding_db/datasource"),
 anyString());
@@ -453,7 +453,7 @@ public final class ConfigCenterTest {
     
     @Test
     public void assertRenewRuleEvent() {
-        RuleEvent event = new RuleEvent("sharding_db", 
createRuleConfigurations());
+        RulePersistEvent event = new RulePersistEvent("sharding_db", 
createRuleConfigurations());
         ConfigCenter configCenter = new ConfigCenter(configurationRepository);
         configCenter.renew(event);
         
verify(configurationRepository).persist(eq("/config/schema/sharding_db/rule"), 
anyString());
@@ -461,7 +461,7 @@ public final class ConfigCenterTest {
     
     @Test
     public void assertRenewSchemaNameEventWithDrop() {
-        SchemaNameEvent event = new SchemaNameEvent("sharding_db", true);
+        SchemaNamePersistEvent event = new 
SchemaNamePersistEvent("sharding_db", true);
         
when(configurationRepository.get("/config/schema")).thenReturn("sharding_db,master_slave_db");
         ConfigCenter configCenter = new ConfigCenter(configurationRepository);
         configCenter.renew(event);
@@ -470,7 +470,7 @@ public final class ConfigCenterTest {
     
     @Test
     public void assertRenewSchemaNameEventWithAdd() {
-        SchemaNameEvent event = new SchemaNameEvent("sharding_db", false);
+        SchemaNamePersistEvent event = new 
SchemaNamePersistEvent("sharding_db", false);
         
when(configurationRepository.get("/config/schema")).thenReturn("master_slave_db");
         ConfigCenter configCenter = new ConfigCenter(configurationRepository);
         configCenter.renew(event);
@@ -479,7 +479,7 @@ public final class ConfigCenterTest {
     
     @Test
     public void assertRenewSchemaNameEventWithAddAndExist() {
-        SchemaNameEvent event = new SchemaNameEvent("sharding_db", false);
+        SchemaNamePersistEvent event = new 
SchemaNamePersistEvent("sharding_db", false);
         
when(configurationRepository.get("/config/schema")).thenReturn("sharding_db,master_slave_db");
         ConfigCenter configCenter = new ConfigCenter(configurationRepository);
         configCenter.renew(event);
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 b11d68d..0925336 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
@@ -45,7 +45,7 @@ import 
org.apache.shardingsphere.infra.context.runtime.RuntimeContext;
 import org.apache.shardingsphere.infra.context.schema.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.type.DatabaseTypes;
-import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
+import 
org.apache.shardingsphere.governance.core.eventbus.ShardingSphereEventBus;
 import org.apache.shardingsphere.infra.executor.kernel.ExecutorKernel;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaData;
diff --git 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/main/java/org/apache/shardingsphere/governance/context/transaction/GovernanceTransactionContexts.java
 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/main/java/org/apache/shardingsphere/governance/context/transaction/GovernanceTransactionContexts.java
index 670fdad..1e166fd 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/main/java/org/apache/shardingsphere/governance/context/transaction/GovernanceTransactionContexts.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-context/src/main/java/org/apache/shardingsphere/governance/context/transaction/GovernanceTransactionContexts.java
@@ -19,7 +19,7 @@ package 
org.apache.shardingsphere.governance.context.transaction;
 
 import com.google.common.eventbus.Subscribe;
 import 
org.apache.shardingsphere.governance.core.event.datasource.DataSourceChangeCompletedEvent;
-import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
+import 
org.apache.shardingsphere.governance.core.eventbus.ShardingSphereEventBus;
 import org.apache.shardingsphere.transaction.ShardingTransactionManagerEngine;
 import org.apache.shardingsphere.transaction.context.TransactionContexts;
 
diff --git 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-metadata/src/main/java/org/apache/shardingsphere/governance/core/metadata/MetaDataCenter.java
 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-metadata/src/main/java/org/apache/shardingsphere/governance/core/metadata/MetaDataCenter.java
index edf3c00..dd164d8 100644
--- 
a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-metadata/src/main/java/org/apache/shardingsphere/governance/core/metadata/MetaDataCenter.java
+++ 
b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-metadata/src/main/java/org/apache/shardingsphere/governance/core/metadata/MetaDataCenter.java
@@ -22,8 +22,8 @@ import com.google.common.eventbus.Subscribe;
 import 
org.apache.shardingsphere.governance.repository.api.GovernanceRepository;
 import 
org.apache.shardingsphere.governance.core.metadata.yaml.RuleSchemaMetaDataYamlSwapper;
 import 
org.apache.shardingsphere.governance.core.metadata.yaml.YamlRuleSchemaMetaData;
-import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
-import org.apache.shardingsphere.infra.eventbus.event.MetaDataEvent;
+import 
org.apache.shardingsphere.governance.core.eventbus.ShardingSphereEventBus;
+import 
org.apache.shardingsphere.governance.core.event.persist.MetaDataPersistEvent;
 import org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaData;
 import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
 
@@ -74,7 +74,7 @@ public final class MetaDataCenter {
      * @param event Meta data event.
      */
     @Subscribe
-    public synchronized void renew(final MetaDataEvent event) {
+    public synchronized void renew(final MetaDataPersistEvent event) {
         persistMetaDataCenterNode(event.getSchemaName(), event.getMetaData());
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/eventbus/event/MetaDataEvent.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/spi/RuleMetaDataNotifier.java
similarity index 69%
rename from 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/eventbus/event/MetaDataEvent.java
rename to 
shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/spi/RuleMetaDataNotifier.java
index b68f2e4..af73cea 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/eventbus/event/MetaDataEvent.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/spi/RuleMetaDataNotifier.java
@@ -15,20 +15,20 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.eventbus.event;
+package org.apache.shardingsphere.infra.metadata.schema.spi;
 
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaData;
+import org.apache.shardingsphere.infra.spi.type.TypedSPI;
 
 /**
- * Meta data event.
+ * Rule meta data notifier.
  */
-@RequiredArgsConstructor
-@Getter
-public final class MetaDataEvent {
+public interface RuleMetaDataNotifier extends TypedSPI {
     
-    private final String schemaName;
-    
-    private final RuleSchemaMetaData metaData;
+    /**
+     * Notify rule meta data changed.
+     * @param schemaName schema name
+     * @param metaData meta data
+     */
+    void notify(String schemaName, RuleSchemaMetaData metaData);
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java
index 1c98406..01f6c89 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/PreparedStatementExecutor.java
@@ -21,8 +21,6 @@ import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.context.SchemaContext;
 import org.apache.shardingsphere.infra.context.SchemaContexts;
 import org.apache.shardingsphere.infra.database.DefaultSchema;
-import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
-import org.apache.shardingsphere.infra.eventbus.event.MetaDataEvent;
 import org.apache.shardingsphere.infra.executor.kernel.InputGroup;
 import org.apache.shardingsphere.infra.executor.sql.ConnectionMode;
 import org.apache.shardingsphere.infra.executor.sql.QueryResult;
@@ -35,9 +33,13 @@ import 
org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.queryresult.M
 import 
org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.queryresult.StreamQueryResult;
 import 
org.apache.shardingsphere.infra.metadata.refresh.MetaDataRefreshStrategy;
 import 
org.apache.shardingsphere.infra.metadata.refresh.MetaDataRefreshStrategyFactory;
+import org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaData;
 import 
org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaDataLoader;
+import 
org.apache.shardingsphere.infra.metadata.schema.spi.RuleMetaDataNotifier;
 import org.apache.shardingsphere.infra.rule.DataNodeRoutedRule;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
+import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
+import org.apache.shardingsphere.infra.spi.type.TypedSPIRegistry;
 import 
org.apache.shardingsphere.sql.parser.binder.statement.SQLStatementContext;
 
 import javax.sql.DataSource;
@@ -57,6 +59,10 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor
 public final class PreparedStatementExecutor {
     
+    static {
+        ShardingSphereServiceLoader.register(RuleMetaDataNotifier.class);
+    }
+    
     private final Map<String, DataSource> dataSourceMap;
     
     private final SchemaContexts schemaContexts;
@@ -172,7 +178,14 @@ public final class PreparedStatementExecutor {
             
refreshStrategy.get().refreshMetaData(schemaContext.getSchema().getMetaData(), 
schemaContexts.getDatabaseType(),
                     dataSourceMap, sqlStatementContext, tableName -> 
metaDataLoader.load(schemaContexts.getDatabaseType(),
                             dataSourceMap, tableName, 
schemaContexts.getProps()));
-            ShardingSphereEventBus.getInstance().post(new 
MetaDataEvent(DefaultSchema.LOGIC_NAME, 
schemaContext.getSchema().getMetaData().getSchema()));
+            notifyPersistRuleMetaData(DefaultSchema.LOGIC_NAME, 
schemaContext.getSchema().getMetaData().getSchema());
+        }
+    }
+    
+    private void notifyPersistRuleMetaData(final String schemaName, final 
RuleSchemaMetaData metaData) {
+        RuleMetaDataNotifier notifier = 
TypedSPIRegistry.getRegisteredService(RuleMetaDataNotifier.class);
+        if (null != notifier) {
+            notifier.notify(schemaName, metaData);
         }
     }
 }
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java
index 9144a564..df72cae 100644
--- 
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/StatementExecutor.java
@@ -21,8 +21,6 @@ import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.infra.context.SchemaContext;
 import org.apache.shardingsphere.infra.context.SchemaContexts;
 import org.apache.shardingsphere.infra.database.DefaultSchema;
-import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
-import org.apache.shardingsphere.infra.eventbus.event.MetaDataEvent;
 import org.apache.shardingsphere.infra.executor.kernel.InputGroup;
 import org.apache.shardingsphere.infra.executor.sql.ConnectionMode;
 import org.apache.shardingsphere.infra.executor.sql.QueryResult;
@@ -35,9 +33,13 @@ import 
org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.queryresult.M
 import 
org.apache.shardingsphere.infra.executor.sql.resourced.jdbc.queryresult.StreamQueryResult;
 import 
org.apache.shardingsphere.infra.metadata.refresh.MetaDataRefreshStrategy;
 import 
org.apache.shardingsphere.infra.metadata.refresh.MetaDataRefreshStrategyFactory;
+import org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaData;
 import 
org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaDataLoader;
+import 
org.apache.shardingsphere.infra.metadata.schema.spi.RuleMetaDataNotifier;
 import org.apache.shardingsphere.infra.rule.DataNodeRoutedRule;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
+import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
+import org.apache.shardingsphere.infra.spi.type.TypedSPIRegistry;
 import 
org.apache.shardingsphere.sql.parser.binder.statement.SQLStatementContext;
 
 import javax.sql.DataSource;
@@ -56,6 +58,10 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor
 public final class StatementExecutor {
     
+    static {
+        ShardingSphereServiceLoader.register(RuleMetaDataNotifier.class);
+    }
+    
     private final Map<String, DataSource> dataSourceMap;
     
     private final SchemaContexts schemaContexts;
@@ -247,7 +253,14 @@ public final class StatementExecutor {
             RuleSchemaMetaDataLoader metaDataLoader = new 
RuleSchemaMetaDataLoader(schemaContext.getSchema().getRules());
             
refreshStrategy.get().refreshMetaData(schemaContext.getSchema().getMetaData(), 
schemaContexts.getDatabaseType(), dataSourceMap, sqlStatementContext,
                 tableName -> 
metaDataLoader.load(schemaContexts.getDatabaseType(), dataSourceMap, tableName, 
schemaContexts.getProps()));
-            ShardingSphereEventBus.getInstance().post(new 
MetaDataEvent(DefaultSchema.LOGIC_NAME, 
schemaContext.getSchema().getMetaData().getSchema()));
+            notifyPersistRuleMetaData(DefaultSchema.LOGIC_NAME, 
schemaContext.getSchema().getMetaData().getSchema());
+        }
+    }
+    
+    private void notifyPersistRuleMetaData(final String schemaName, final 
RuleSchemaMetaData metaData) {
+        RuleMetaDataNotifier notifier = 
TypedSPIRegistry.getRegisteredService(RuleMetaDataNotifier.class);
+        if (null != notifier) {
+            notifier.notify(schemaName, metaData);
         }
     }
     
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/metadata/RuleSchemaMetaDataNotifier.java
 
b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/metadata/RuleSchemaMetaDataNotifier.java
new file mode 100644
index 0000000..adc8bee
--- /dev/null
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/java/org/apache/shardingsphere/driver/governance/internal/metadata/RuleSchemaMetaDataNotifier.java
@@ -0,0 +1,50 @@
+/*
+ * 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.driver.governance.internal.metadata;
+
+import 
org.apache.shardingsphere.governance.core.eventbus.ShardingSphereEventBus;
+import 
org.apache.shardingsphere.governance.core.event.persist.MetaDataPersistEvent;
+import org.apache.shardingsphere.infra.metadata.schema.RuleSchemaMetaData;
+import 
org.apache.shardingsphere.infra.metadata.schema.spi.RuleMetaDataNotifier;
+
+import java.util.Properties;
+
+/**
+ * Rule schema meta data notifier.
+ */
+public final class RuleSchemaMetaDataNotifier implements RuleMetaDataNotifier {
+    
+    @Override
+    public void notify(final String schemaName, final RuleSchemaMetaData 
metaData) {
+        ShardingSphereEventBus.getInstance().post(new 
MetaDataPersistEvent(schemaName, metaData));
+    }
+    
+    @Override
+    public String getType() {
+        return "metadata-notifier";
+    }
+    
+    @Override
+    public Properties getProps() {
+        return null;
+    }
+    
+    @Override
+    public void setProps(final Properties props) {
+    }
+}
diff --git 
a/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.schema.spi.RuleMetaDataNotifier
 
b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.schema.spi.RuleMetaDataNotifier
new file mode 100644
index 0000000..35d0665
--- /dev/null
+++ 
b/shardingsphere-jdbc/shardingsphere-jdbc-governance/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.schema.spi.RuleMetaDataNotifier
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+org.apache.shardingsphere.driver.governance.internal.metadata.RuleSchemaMetaDataNotifier
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
index dcf3421..5daeba5 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/communication/jdbc/JDBCDatabaseCommunicationEngine.java
@@ -21,8 +21,8 @@ import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.infra.config.exception.ShardingSphereConfigurationException;
 import 
org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
 import org.apache.shardingsphere.infra.context.SchemaContext;
-import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
-import org.apache.shardingsphere.infra.eventbus.event.MetaDataEvent;
+import 
org.apache.shardingsphere.governance.core.eventbus.ShardingSphereEventBus;
+import 
org.apache.shardingsphere.governance.core.event.persist.MetaDataPersistEvent;
 import org.apache.shardingsphere.infra.executor.sql.QueryResult;
 import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
 import org.apache.shardingsphere.infra.executor.sql.log.SQLLogger;
@@ -133,7 +133,7 @@ public final class JDBCDatabaseCommunicationEngine 
implements DatabaseCommunicat
         if (refreshStrategy.isPresent()) {
             
refreshStrategy.get().refreshMetaData(schema.getSchema().getMetaData(), 
ProxySchemaContexts.getInstance().getSchemaContexts().getDatabaseType(),
                     schema.getSchema().getDataSources(), sqlStatementContext, 
this::loadTableMetaData);
-            ShardingSphereEventBus.getInstance().post(new 
MetaDataEvent(schema.getName(), schema.getSchema().getMetaData().getSchema()));
+            ShardingSphereEventBus.getInstance().post(new 
MetaDataPersistEvent(schema.getName(), 
schema.getSchema().getMetaData().getSchema()));
         }
     }
     
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandler.java
index 04584cc..f3ab573 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/admin/RDLBackendHandler.java
@@ -22,10 +22,10 @@ import 
org.apache.shardingsphere.infra.config.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
 import org.apache.shardingsphere.infra.context.impl.StandardSchemaContexts;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
-import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
-import org.apache.shardingsphere.infra.eventbus.event.DataSourceEvent;
-import org.apache.shardingsphere.infra.eventbus.event.RuleEvent;
-import org.apache.shardingsphere.infra.eventbus.event.SchemaNameEvent;
+import 
org.apache.shardingsphere.governance.core.eventbus.ShardingSphereEventBus;
+import 
org.apache.shardingsphere.governance.core.event.persist.DataSourcePersistEvent;
+import 
org.apache.shardingsphere.governance.core.event.persist.RulePersistEvent;
+import 
org.apache.shardingsphere.governance.core.event.persist.SchemaNamePersistEvent;
 import 
org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapperEngine;
 import 
org.apache.shardingsphere.proxy.backend.communication.jdbc.connection.BackendConnection;
 import 
org.apache.shardingsphere.proxy.backend.exception.DBCreateExistsException;
@@ -80,7 +80,7 @@ public final class RDLBackendHandler implements 
TextProtocolBackendHandler {
             return new ErrorResponse(new 
DBCreateExistsException(context.getSqlStatement().getDatabaseName()));
         }
         // TODO Need to get the executed feedback from registry center for 
returning.
-        ShardingSphereEventBus.getInstance().post(new 
SchemaNameEvent(context.getSqlStatement().getDatabaseName(), false));
+        ShardingSphereEventBus.getInstance().post(new 
SchemaNamePersistEvent(context.getSqlStatement().getDatabaseName(), false));
         UpdateResponse result = new UpdateResponse();
         result.setType("CREATE");
         return result;
@@ -91,7 +91,7 @@ public final class RDLBackendHandler implements 
TextProtocolBackendHandler {
             return new ErrorResponse(new 
DBCreateExistsException(context.getSqlStatement().getDatabaseName()));
         }
         // TODO Need to get the executed feedback from registry center for 
returning.
-        ShardingSphereEventBus.getInstance().post(new 
SchemaNameEvent(context.getSqlStatement().getDatabaseName(), true));
+        ShardingSphereEventBus.getInstance().post(new 
SchemaNamePersistEvent(context.getSqlStatement().getDatabaseName(), true));
         UpdateResponse result = new UpdateResponse();
         result.setType("DROP");
         return result;
@@ -102,7 +102,7 @@ public final class RDLBackendHandler implements 
TextProtocolBackendHandler {
         Map<String, DataSourceConfiguration> dataSources = 
DataSourceParameterConverter.getDataSourceConfigurationMap(
                 
DataSourceParameterConverter.getDataSourceParameterMapFromYamlConfiguration(parameters));
         // TODO Need to get the executed feedback from registry center for 
returning.
-        ShardingSphereEventBus.getInstance().post(new 
DataSourceEvent(backendConnection.getSchema(), dataSources));
+        ShardingSphereEventBus.getInstance().post(new 
DataSourcePersistEvent(backendConnection.getSchema(), dataSources));
         UpdateResponse result = new UpdateResponse();
         result.setType("CREATE");
         return result;
@@ -112,7 +112,7 @@ public final class RDLBackendHandler implements 
TextProtocolBackendHandler {
         YamlShardingRuleConfiguration configurations = new 
CreateShardingRuleStatementContextConverter().convert(context);
         Collection<RuleConfiguration> rules = new 
YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(Collections.singleton(configurations));
         // TODO Need to get the executed feedback from registry center for 
returning.
-        ShardingSphereEventBus.getInstance().post(new 
RuleEvent(backendConnection.getSchema(), rules));
+        ShardingSphereEventBus.getInstance().post(new 
RulePersistEvent(backendConnection.getSchema(), rules));
         UpdateResponse result = new UpdateResponse();
         result.setType("CREATE");
         return result;

Reply via email to