You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2021/05/12 11:17:35 UTC

[shardingsphere] branch master updated: Refactor MetaDataChangedListener (#10318)

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 974914f  Refactor MetaDataChangedListener (#10318)
974914f is described below

commit 974914f7d63ce3d5d7077cc51aa789803b905e25
Author: Haoran Meng <me...@gmail.com>
AuthorDate: Wed May 12 19:17:03 2021 +0800

    Refactor MetaDataChangedListener (#10318)
    
    Co-authored-by: menghaoranss <me...@apache.org>
---
 .../listener/GovernanceListenerManager.java        |  5 --
 .../DataSourceChangedListenerFactory.java}         | 32 ++++-----
 .../MetaDataChangedListenerFactory.java}           | 30 ++++-----
 .../RuleChangedListenerFactory.java}               | 30 ++++-----
 .../SchemaChangedListenerFactory.java}             | 30 ++++-----
 .../DataSourceChangedListener.java                 |  2 +-
 .../MetaDataChangedListener.java                   |  2 +-
 .../{metadata => impl}/RuleChangedListener.java    |  2 +-
 .../{metadata => impl}/SchemaChangedListener.java  |  2 +-
 .../listener/metadata/MetaDataListener.java        | 76 ----------------------
 ...ore.registry.listener.GovernanceListenerFactory |  4 ++
 .../DataSourceChangedListenerTest.java             |  2 +-
 .../MetaDataChangedListenerTest.java               |  2 +-
 .../{metadata => impl}/MetaDataListenerTest.java   |  2 +-
 .../RuleChangedListenerTest.java                   |  2 +-
 .../SchemaChangedListenerTest.java                 |  2 +-
 16 files changed, 66 insertions(+), 159 deletions(-)

diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/GovernanceListenerManager.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/GovernanceListenerManager.java
index f60f4c7..d931254 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/GovernanceListenerManager.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/GovernanceListenerManager.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.governance.core.registry.listener;
 
-import org.apache.shardingsphere.governance.core.registry.listener.metadata.MetaDataListener;
 import org.apache.shardingsphere.governance.repository.api.RegistryRepository;
 import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.Type;
 import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
@@ -37,14 +36,11 @@ public final class GovernanceListenerManager {
     
     private final Collection<String> schemaNames;
     
-    private final MetaDataListener metaDataListener;
-    
     private final Collection<GovernanceListenerFactory> governanceListenerFactories;
     
     public GovernanceListenerManager(final RegistryRepository registryRepository, final Collection<String> schemaNames) {
         this.registryRepository = registryRepository;
         this.schemaNames = schemaNames;
-        metaDataListener = new MetaDataListener(registryRepository, schemaNames);
         governanceListenerFactories = ShardingSphereServiceLoader.getSingletonServiceInstances(GovernanceListenerFactory.class);
     }
     
@@ -52,7 +48,6 @@ public final class GovernanceListenerManager {
      * Initialize all state changed listeners.
      */
     public void initListeners() {
-        metaDataListener.watch();
         for (GovernanceListenerFactory each : governanceListenerFactories) {
             each.create(registryRepository, schemaNames).watch(each.getWatchTypes().toArray(new Type[0]));
         }
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/SchemaChangedListener.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/factory/DataSourceChangedListenerFactory.java
similarity index 52%
copy from shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/SchemaChangedListener.java
copy to shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/factory/DataSourceChangedListenerFactory.java
index 61f57e0..1bf280d 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/SchemaChangedListener.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/factory/DataSourceChangedListenerFactory.java
@@ -15,33 +15,29 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.governance.core.registry.listener.metadata;
+package org.apache.shardingsphere.governance.core.registry.listener.factory;
 
-import org.apache.shardingsphere.governance.core.registry.listener.PostGovernanceRepositoryEventListener;
-import org.apache.shardingsphere.governance.core.registry.listener.event.GovernanceEvent;
-import org.apache.shardingsphere.governance.core.registry.listener.event.schema.SchemaChangedEvent;
-import org.apache.shardingsphere.governance.core.registry.RegistryCenterNode;
-import org.apache.shardingsphere.governance.core.yaml.config.schema.YamlSchema;
-import org.apache.shardingsphere.governance.core.yaml.swapper.SchemaYamlSwapper;
+import org.apache.shardingsphere.governance.core.registry.listener.GovernanceListener;
+import org.apache.shardingsphere.governance.core.registry.listener.GovernanceListenerFactory;
+import org.apache.shardingsphere.governance.core.registry.listener.impl.DataSourceChangedListener;
 import org.apache.shardingsphere.governance.repository.api.RegistryRepository;
-import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
-import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
+import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.Type;
 
+import java.util.Arrays;
 import java.util.Collection;
-import java.util.Optional;
 
 /**
- * Schema changed listener.
+ * Data source changed listener factory.
  */
-public final class SchemaChangedListener extends PostGovernanceRepositoryEventListener<GovernanceEvent> {
-    
-    public SchemaChangedListener(final RegistryRepository registryRepository, final Collection<String> schemaNames) {
-        super(registryRepository, new RegistryCenterNode().getAllMetadataSchemaPaths(schemaNames));
+public final class DataSourceChangedListenerFactory implements GovernanceListenerFactory {
+
+    @Override
+    public GovernanceListener create(final RegistryRepository registryRepository, final Collection<String> schemaNames) {
+        return new DataSourceChangedListener(registryRepository, schemaNames);
     }
     
     @Override
-    protected Optional<GovernanceEvent> createEvent(final DataChangedEvent event) {
-        String schemaName = new RegistryCenterNode().getSchemaName(event.getKey());
-        return Optional.of(new SchemaChangedEvent(schemaName, new SchemaYamlSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), YamlSchema.class))));
+    public Collection<Type> getWatchTypes() {
+        return Arrays.asList(Type.UPDATED);
     }
 }
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/SchemaChangedListener.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/factory/MetaDataChangedListenerFactory.java
similarity index 52%
copy from shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/SchemaChangedListener.java
copy to shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/factory/MetaDataChangedListenerFactory.java
index 61f57e0..bfc2c65 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/SchemaChangedListener.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/factory/MetaDataChangedListenerFactory.java
@@ -15,33 +15,29 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.governance.core.registry.listener.metadata;
+package org.apache.shardingsphere.governance.core.registry.listener.factory;
 
-import org.apache.shardingsphere.governance.core.registry.listener.PostGovernanceRepositoryEventListener;
-import org.apache.shardingsphere.governance.core.registry.listener.event.GovernanceEvent;
-import org.apache.shardingsphere.governance.core.registry.listener.event.schema.SchemaChangedEvent;
-import org.apache.shardingsphere.governance.core.registry.RegistryCenterNode;
-import org.apache.shardingsphere.governance.core.yaml.config.schema.YamlSchema;
-import org.apache.shardingsphere.governance.core.yaml.swapper.SchemaYamlSwapper;
+import org.apache.shardingsphere.governance.core.registry.listener.GovernanceListener;
+import org.apache.shardingsphere.governance.core.registry.listener.GovernanceListenerFactory;
+import org.apache.shardingsphere.governance.core.registry.listener.impl.MetaDataChangedListener;
 import org.apache.shardingsphere.governance.repository.api.RegistryRepository;
-import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
-import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
+import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.Type;
 
+import java.util.Arrays;
 import java.util.Collection;
-import java.util.Optional;
 
 /**
- * Schema changed listener.
+ * Meta data changed listener factory.
  */
-public final class SchemaChangedListener extends PostGovernanceRepositoryEventListener<GovernanceEvent> {
+public final class MetaDataChangedListenerFactory implements GovernanceListenerFactory {
     
-    public SchemaChangedListener(final RegistryRepository registryRepository, final Collection<String> schemaNames) {
-        super(registryRepository, new RegistryCenterNode().getAllMetadataSchemaPaths(schemaNames));
+    @Override
+    public GovernanceListener create(final RegistryRepository registryRepository, final Collection<String> schemaNames) {
+        return new MetaDataChangedListener(registryRepository, schemaNames);
     }
     
     @Override
-    protected Optional<GovernanceEvent> createEvent(final DataChangedEvent event) {
-        String schemaName = new RegistryCenterNode().getSchemaName(event.getKey());
-        return Optional.of(new SchemaChangedEvent(schemaName, new SchemaYamlSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), YamlSchema.class))));
+    public Collection<Type> getWatchTypes() {
+        return Arrays.asList(Type.UPDATED, Type.ADDED);
     }
 }
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/SchemaChangedListener.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/factory/RuleChangedListenerFactory.java
similarity index 52%
copy from shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/SchemaChangedListener.java
copy to shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/factory/RuleChangedListenerFactory.java
index 61f57e0..4a11624 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/SchemaChangedListener.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/factory/RuleChangedListenerFactory.java
@@ -15,33 +15,29 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.governance.core.registry.listener.metadata;
+package org.apache.shardingsphere.governance.core.registry.listener.factory;
 
-import org.apache.shardingsphere.governance.core.registry.listener.PostGovernanceRepositoryEventListener;
-import org.apache.shardingsphere.governance.core.registry.listener.event.GovernanceEvent;
-import org.apache.shardingsphere.governance.core.registry.listener.event.schema.SchemaChangedEvent;
-import org.apache.shardingsphere.governance.core.registry.RegistryCenterNode;
-import org.apache.shardingsphere.governance.core.yaml.config.schema.YamlSchema;
-import org.apache.shardingsphere.governance.core.yaml.swapper.SchemaYamlSwapper;
+import org.apache.shardingsphere.governance.core.registry.listener.GovernanceListener;
+import org.apache.shardingsphere.governance.core.registry.listener.GovernanceListenerFactory;
+import org.apache.shardingsphere.governance.core.registry.listener.impl.RuleChangedListener;
 import org.apache.shardingsphere.governance.repository.api.RegistryRepository;
-import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
-import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
+import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.Type;
 
+import java.util.Arrays;
 import java.util.Collection;
-import java.util.Optional;
 
 /**
- * Schema changed listener.
+ * Rule changed listener factory.
  */
-public final class SchemaChangedListener extends PostGovernanceRepositoryEventListener<GovernanceEvent> {
+public final class RuleChangedListenerFactory implements GovernanceListenerFactory {
     
-    public SchemaChangedListener(final RegistryRepository registryRepository, final Collection<String> schemaNames) {
-        super(registryRepository, new RegistryCenterNode().getAllMetadataSchemaPaths(schemaNames));
+    @Override
+    public GovernanceListener create(final RegistryRepository registryRepository, final Collection<String> schemaNames) {
+        return new RuleChangedListener(registryRepository, schemaNames);
     }
     
     @Override
-    protected Optional<GovernanceEvent> createEvent(final DataChangedEvent event) {
-        String schemaName = new RegistryCenterNode().getSchemaName(event.getKey());
-        return Optional.of(new SchemaChangedEvent(schemaName, new SchemaYamlSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), YamlSchema.class))));
+    public Collection<Type> getWatchTypes() {
+        return Arrays.asList(Type.UPDATED);
     }
 }
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/SchemaChangedListener.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/factory/SchemaChangedListenerFactory.java
similarity index 52%
copy from shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/SchemaChangedListener.java
copy to shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/factory/SchemaChangedListenerFactory.java
index 61f57e0..08758f7 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/SchemaChangedListener.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/factory/SchemaChangedListenerFactory.java
@@ -15,33 +15,29 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.governance.core.registry.listener.metadata;
+package org.apache.shardingsphere.governance.core.registry.listener.factory;
 
-import org.apache.shardingsphere.governance.core.registry.listener.PostGovernanceRepositoryEventListener;
-import org.apache.shardingsphere.governance.core.registry.listener.event.GovernanceEvent;
-import org.apache.shardingsphere.governance.core.registry.listener.event.schema.SchemaChangedEvent;
-import org.apache.shardingsphere.governance.core.registry.RegistryCenterNode;
-import org.apache.shardingsphere.governance.core.yaml.config.schema.YamlSchema;
-import org.apache.shardingsphere.governance.core.yaml.swapper.SchemaYamlSwapper;
+import org.apache.shardingsphere.governance.core.registry.listener.GovernanceListener;
+import org.apache.shardingsphere.governance.core.registry.listener.GovernanceListenerFactory;
+import org.apache.shardingsphere.governance.core.registry.listener.impl.SchemaChangedListener;
 import org.apache.shardingsphere.governance.repository.api.RegistryRepository;
-import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
-import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
+import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.Type;
 
+import java.util.Arrays;
 import java.util.Collection;
-import java.util.Optional;
 
 /**
- * Schema changed listener.
+ * Schema changed listener factory.
  */
-public final class SchemaChangedListener extends PostGovernanceRepositoryEventListener<GovernanceEvent> {
+public final class SchemaChangedListenerFactory implements GovernanceListenerFactory {
     
-    public SchemaChangedListener(final RegistryRepository registryRepository, final Collection<String> schemaNames) {
-        super(registryRepository, new RegistryCenterNode().getAllMetadataSchemaPaths(schemaNames));
+    @Override
+    public GovernanceListener create(final RegistryRepository registryRepository, final Collection<String> schemaNames) {
+        return new SchemaChangedListener(registryRepository, schemaNames);
     }
     
     @Override
-    protected Optional<GovernanceEvent> createEvent(final DataChangedEvent event) {
-        String schemaName = new RegistryCenterNode().getSchemaName(event.getKey());
-        return Optional.of(new SchemaChangedEvent(schemaName, new SchemaYamlSwapper().swapToObject(YamlEngine.unmarshal(event.getValue(), YamlSchema.class))));
+    public Collection<Type> getWatchTypes() {
+        return Arrays.asList(Type.UPDATED);
     }
 }
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/DataSourceChangedListener.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/impl/DataSourceChangedListener.java
similarity index 99%
rename from shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/DataSourceChangedListener.java
rename to shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/impl/DataSourceChangedListener.java
index 614f12b..b9b3c0c 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/DataSourceChangedListener.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/impl/DataSourceChangedListener.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.governance.core.registry.listener.metadata;
+package org.apache.shardingsphere.governance.core.registry.listener.impl;
 
 import com.google.common.base.Strings;
 import org.apache.shardingsphere.governance.core.registry.listener.PostGovernanceRepositoryEventListener;
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/MetaDataChangedListener.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/impl/MetaDataChangedListener.java
similarity index 99%
rename from shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/MetaDataChangedListener.java
rename to shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/impl/MetaDataChangedListener.java
index 2512f38..c413b15 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/MetaDataChangedListener.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/impl/MetaDataChangedListener.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.governance.core.registry.listener.metadata;
+package org.apache.shardingsphere.governance.core.registry.listener.impl;
 
 import org.apache.commons.collections4.SetUtils;
 import org.apache.shardingsphere.governance.core.registry.listener.PostGovernanceRepositoryEventListener;
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/RuleChangedListener.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/impl/RuleChangedListener.java
similarity index 99%
rename from shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/RuleChangedListener.java
rename to shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/impl/RuleChangedListener.java
index 857e799..22301c3 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/RuleChangedListener.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/impl/RuleChangedListener.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.governance.core.registry.listener.metadata;
+package org.apache.shardingsphere.governance.core.registry.listener.impl;
 
 import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/SchemaChangedListener.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/impl/SchemaChangedListener.java
similarity index 99%
rename from shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/SchemaChangedListener.java
rename to shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/impl/SchemaChangedListener.java
index 61f57e0..ebe97e5 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/SchemaChangedListener.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/impl/SchemaChangedListener.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.governance.core.registry.listener.metadata;
+package org.apache.shardingsphere.governance.core.registry.listener.impl;
 
 import org.apache.shardingsphere.governance.core.registry.listener.PostGovernanceRepositoryEventListener;
 import org.apache.shardingsphere.governance.core.registry.listener.event.GovernanceEvent;
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/MetaDataListener.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/MetaDataListener.java
deleted file mode 100644
index a45de4a..0000000
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/MetaDataListener.java
+++ /dev/null
@@ -1,76 +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.registry.listener.metadata;
-
-import com.google.common.eventbus.Subscribe;
-import org.apache.shardingsphere.governance.core.registry.listener.event.metadata.MetaDataChangedEvent;
-import org.apache.shardingsphere.governance.repository.api.RegistryRepository;
-import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent.Type;
-import org.apache.shardingsphere.infra.eventbus.ShardingSphereEventBus;
-
-import java.util.Collection;
-
-/**
- * Meta data listener.
- */
-public final class MetaDataListener {
-    
-    private final MetaDataChangedListener metaDataChangedListener;
-    
-    private volatile RuleChangedListener ruleChangedListener;
-    
-    private volatile DataSourceChangedListener dataSourceChangedListener;
-    
-    private volatile SchemaChangedListener schemaChangedListener;
-    
-    private final RegistryRepository registryRepository;
-    
-    public MetaDataListener(final RegistryRepository registryRepository, final Collection<String> schemaNames) {
-        this.registryRepository = registryRepository;
-        metaDataChangedListener = new MetaDataChangedListener(registryRepository, schemaNames);
-        ruleChangedListener = new RuleChangedListener(registryRepository, schemaNames);
-        dataSourceChangedListener = new DataSourceChangedListener(registryRepository, schemaNames);
-        schemaChangedListener = new SchemaChangedListener(registryRepository, schemaNames);
-        ShardingSphereEventBus.getInstance().register(this);
-    }
-    
-    /**
-     * watch event.
-     */
-    public void watch() {
-        metaDataChangedListener.watch(Type.UPDATED, Type.ADDED);
-        ruleChangedListener.watch(Type.UPDATED);
-        dataSourceChangedListener.watch(Type.UPDATED);
-        schemaChangedListener.watch(Type.UPDATED);
-    }
-    
-    /**
-     * Renew listeners.
-     * 
-     * @param event meta data changed event.
-     */
-    @Subscribe
-    public void renew(final MetaDataChangedEvent event) {
-        ruleChangedListener = new RuleChangedListener(registryRepository, event.getSchemaNames());
-        dataSourceChangedListener = new DataSourceChangedListener(registryRepository, event.getSchemaNames());
-        schemaChangedListener = new SchemaChangedListener(registryRepository, event.getSchemaNames());
-        ruleChangedListener.watch(Type.UPDATED);
-        dataSourceChangedListener.watch(Type.UPDATED);
-        schemaChangedListener.watch(Type.UPDATED);
-    }
-}
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/resources/META-INF/services/org.apache.shardingsphere.governance.core.registry.listener.GovernanceListenerFactory b/shardingsphere-governance/shardingsphere-governance-core/src/main/resources/META-INF/services/org.apache.shardingsphere.governance.core.registry.listener.GovernanceListenerFactory
index c71a9ee..0f3da36 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/resources/META-INF/services/org.apache.shardingsphere.governance.core.registry.listener.GovernanceListenerFactory
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/resources/META-INF/services/org.apache.shardingsphere.governance.core.registry.listener.GovernanceListenerFactory
@@ -19,3 +19,7 @@ org.apache.shardingsphere.governance.core.registry.listener.factory.TerminalStat
 org.apache.shardingsphere.governance.core.registry.listener.factory.DataSourceStateChangedListenerFactory
 org.apache.shardingsphere.governance.core.registry.listener.factory.LockChangedListenerFactory
 org.apache.shardingsphere.governance.core.registry.listener.factory.PropertiesChangedListenerFactory
+org.apache.shardingsphere.governance.core.registry.listener.factory.DataSourceChangedListenerFactory
+org.apache.shardingsphere.governance.core.registry.listener.factory.MetaDataChangedListenerFactory
+org.apache.shardingsphere.governance.core.registry.listener.factory.RuleChangedListenerFactory
+org.apache.shardingsphere.governance.core.registry.listener.factory.SchemaChangedListenerFactory
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/DataSourceChangedListenerTest.java b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/impl/DataSourceChangedListenerTest.java
similarity index 99%
rename from shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/DataSourceChangedListenerTest.java
rename to shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/impl/DataSourceChangedListenerTest.java
index 13110ff..4df309e 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/DataSourceChangedListenerTest.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/impl/DataSourceChangedListenerTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.governance.core.registry.listener.metadata;
+package org.apache.shardingsphere.governance.core.registry.listener.impl;
 
 import org.apache.shardingsphere.governance.core.registry.listener.event.GovernanceEvent;
 import org.apache.shardingsphere.governance.core.registry.listener.event.datasource.DataSourceChangedEvent;
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/MetaDataChangedListenerTest.java b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/impl/MetaDataChangedListenerTest.java
similarity index 99%
rename from shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/MetaDataChangedListenerTest.java
rename to shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/impl/MetaDataChangedListenerTest.java
index 618e9e8..e5c7061 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/MetaDataChangedListenerTest.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/impl/MetaDataChangedListenerTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.governance.core.registry.listener.metadata;
+package org.apache.shardingsphere.governance.core.registry.listener.impl;
 
 import org.apache.shardingsphere.governance.core.registry.listener.event.GovernanceEvent;
 import org.apache.shardingsphere.governance.core.registry.listener.event.metadata.MetaDataDeletedEvent;
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/MetaDataListenerTest.java b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/impl/MetaDataListenerTest.java
similarity index 99%
rename from shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/MetaDataListenerTest.java
rename to shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/impl/MetaDataListenerTest.java
index 7142f06..3ac33c9 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/MetaDataListenerTest.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/impl/MetaDataListenerTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.governance.core.registry.listener.metadata;
+package org.apache.shardingsphere.governance.core.registry.listener.impl;
 
 import lombok.Getter;
 import lombok.SneakyThrows;
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/RuleChangedListenerTest.java b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/impl/RuleChangedListenerTest.java
similarity index 99%
rename from shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/RuleChangedListenerTest.java
rename to shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/impl/RuleChangedListenerTest.java
index 410a252..85fb600 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/RuleChangedListenerTest.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/impl/RuleChangedListenerTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.governance.core.registry.listener.metadata;
+package org.apache.shardingsphere.governance.core.registry.listener.impl;
 
 import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
 import org.apache.shardingsphere.governance.core.registry.listener.event.GovernanceEvent;
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/SchemaChangedListenerTest.java b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/impl/SchemaChangedListenerTest.java
similarity index 99%
rename from shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/SchemaChangedListenerTest.java
rename to shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/impl/SchemaChangedListenerTest.java
index 97c2b4c..cc447b2 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/metadata/SchemaChangedListenerTest.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/registry/listener/impl/SchemaChangedListenerTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.governance.core.registry.listener.metadata;
+package org.apache.shardingsphere.governance.core.registry.listener.impl;
 
 import org.apache.shardingsphere.governance.core.registry.listener.event.GovernanceEvent;
 import org.apache.shardingsphere.governance.core.registry.listener.event.schema.SchemaChangedEvent;