You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2021/01/29 02:06:30 UTC

[shardingsphere] branch master updated: Refactor YamlEngine (#9190)

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 c2ec8f5  Refactor YamlEngine (#9190)
c2ec8f5 is described below

commit c2ec8f55408c9fbebcebf86e98ece2b0a043fb4e
Author: Haoran Meng <me...@gmail.com>
AuthorDate: Fri Jan 29 10:05:51 2021 +0800

    Refactor YamlEngine (#9190)
    
    * Refactor YamlEngine
    
    * Refactor YamlEngine
    
    * Refactor YamlEngine
---
 .../governance/core/config/ConfigCenter.java       | 11 ++++---
 .../config/listener/PropertiesChangedListener.java |  2 +-
 .../metadata/DataSourceChangedListener.java        |  2 +-
 .../listener/metadata/RuleChangedListener.java     |  9 +++---
 .../yaml/config/YamlRuleConfigurationWrap.java     | 28 ++++++++---------
 .../governance/core/config/ConfigCenterTest.java   |  3 +-
 .../infra/yaml/engine/YamlEngine.java              | 35 +++++++++++-----------
 ...va => ShardingSphereFilterYamlConstructor.java} | 18 +++++++----
 .../config/YamlEngineUserConfigurationTest.java    |  2 +-
 .../infra/yaml/engine/YamlEngineTest.java          | 16 ++++++----
 .../reg_center/config_center/data-sources.yaml     |  4 +--
 11 files changed, 73 insertions(+), 57 deletions(-)

diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenter.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenter.java
index 1936d37..054be2b 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenter.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/ConfigCenter.java
@@ -33,6 +33,7 @@ import org.apache.shardingsphere.governance.core.event.model.schema.SchemaNamePe
 import org.apache.shardingsphere.governance.core.event.model.schema.SchemaPersistEvent;
 import org.apache.shardingsphere.governance.core.yaml.config.YamlDataSourceConfiguration;
 import org.apache.shardingsphere.governance.core.yaml.config.YamlDataSourceConfigurationWrap;
+import org.apache.shardingsphere.governance.core.yaml.config.YamlRuleConfigurationWrap;
 import org.apache.shardingsphere.governance.core.yaml.config.schema.YamlSchema;
 import org.apache.shardingsphere.governance.core.yaml.swapper.DataSourceConfigurationYamlSwapper;
 import org.apache.shardingsphere.governance.core.yaml.swapper.SchemaYamlSwapper;
@@ -50,7 +51,6 @@ import org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapper
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.LinkedList;
@@ -293,7 +293,8 @@ public final class ConfigCenter {
         if (!hasDataSourceConfiguration(schemaName)) {
             return new LinkedHashMap<>();
         }
-        YamlDataSourceConfigurationWrap result = YamlEngine.unmarshal(repository.get(node.getDataSourcePath(schemaName)), YamlDataSourceConfigurationWrap.class, true);
+        YamlDataSourceConfigurationWrap result = YamlEngine.unmarshalWithFilter(repository.get(node.getDataSourcePath(schemaName)), 
+                YamlDataSourceConfigurationWrap.class);
         return result.getDataSources().entrySet().stream().collect(Collectors.toMap(Entry::getKey,
             entry -> new DataSourceConfigurationYamlSwapper().swapToObject(entry.getValue()), (oldValue, currentValue) -> oldValue, LinkedHashMap::new));
     }
@@ -306,7 +307,8 @@ public final class ConfigCenter {
      */
     public Collection<RuleConfiguration> loadRuleConfigurations(final String schemaName) {
         return hasRuleConfiguration(schemaName) ? new YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(
-                YamlEngine.unmarshal(repository.get(node.getRulePath(schemaName)), YamlRootRuleConfigurations.class, true).getRules()) : new LinkedList<>();
+                YamlEngine.unmarshalWithFilter(repository.get(node.getRulePath(schemaName)), 
+                        YamlRuleConfigurationWrap.class).getRules()) : new LinkedList<>();
     }
     
     /**
@@ -326,7 +328,8 @@ public final class ConfigCenter {
      * @return properties
      */
     public Properties loadProperties() {
-        return YamlEngine.unmarshalProperties(repository.get(node.getPropsPath()), Collections.singletonList(Properties.class));
+        return Strings.isNullOrEmpty(repository.get(node.getPropsPath())) ? new Properties() 
+                : YamlEngine.unmarshalWithFilter(repository.get(node.getPropsPath()), Properties.class);
     }
     
     /**
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/PropertiesChangedListener.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/PropertiesChangedListener.java
index 29937cc..daba89b 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/PropertiesChangedListener.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/PropertiesChangedListener.java
@@ -40,6 +40,6 @@ public final class PropertiesChangedListener extends PostGovernanceRepositoryEve
     
     @Override
     protected Optional<GovernanceEvent> createEvent(final DataChangedEvent event) {
-        return Optional.of(new PropertiesChangedEvent(YamlEngine.unmarshalProperties(event.getValue(), Collections.singletonList(Properties.class))));
+        return Optional.of(new PropertiesChangedEvent(YamlEngine.unmarshalWithFilter(event.getValue(), Properties.class)));
     }
 }
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/metadata/DataSourceChangedListener.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/metadata/DataSourceChangedListener.java
index f60a496..c615294 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/metadata/DataSourceChangedListener.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/metadata/DataSourceChangedListener.java
@@ -62,7 +62,7 @@ public final class DataSourceChangedListener extends PostGovernanceRepositoryEve
     }
     
     private DataSourceChangedEvent createDataSourceChangedEvent(final String schemaName, final DataChangedEvent event) {
-        YamlDataSourceConfigurationWrap result = YamlEngine.unmarshal(event.getValue(), YamlDataSourceConfigurationWrap.class, true);
+        YamlDataSourceConfigurationWrap result = YamlEngine.unmarshalWithFilter(event.getValue(), YamlDataSourceConfigurationWrap.class);
         Preconditions.checkState(null != result && !result.getDataSources().isEmpty(), "No available data sources to load for governance.");
         return new DataSourceChangedEvent(schemaName, result.getDataSources().entrySet().stream()
                 .collect(Collectors.toMap(Entry::getKey, entry -> new DataSourceConfigurationYamlSwapper().swapToObject(entry.getValue()), (oldValue, currentValue) -> oldValue, LinkedHashMap::new)));
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/metadata/RuleChangedListener.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/metadata/RuleChangedListener.java
index 6fb3fa1..e6dcec3 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/metadata/RuleChangedListener.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/config/listener/metadata/RuleChangedListener.java
@@ -24,10 +24,11 @@ import org.apache.shardingsphere.governance.core.event.listener.PostGovernanceRe
 import org.apache.shardingsphere.governance.core.event.model.GovernanceEvent;
 import org.apache.shardingsphere.governance.core.event.model.rule.RuleConfigurationCachedEvent;
 import org.apache.shardingsphere.governance.core.event.model.rule.RuleConfigurationsChangedEvent;
+import org.apache.shardingsphere.governance.core.yaml.config.YamlRuleConfigurationWrap;
 import org.apache.shardingsphere.governance.repository.api.ConfigurationRepository;
 import org.apache.shardingsphere.governance.repository.api.listener.DataChangedEvent;
 import org.apache.shardingsphere.infra.config.RuleConfiguration;
-import org.apache.shardingsphere.infra.yaml.config.YamlRootRuleConfigurations;
+import org.apache.shardingsphere.infra.yaml.config.YamlRuleConfiguration;
 import org.apache.shardingsphere.infra.yaml.engine.YamlEngine;
 import org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapperEngine;
 
@@ -75,9 +76,9 @@ public final class RuleChangedListener extends PostGovernanceRepositoryEventList
     }
     
     private Collection<RuleConfiguration> getRuleConfigurations(final String yamlContent) {
-        YamlRootRuleConfigurations configurations = YamlEngine.unmarshal(yamlContent, YamlRootRuleConfigurations.class, true);
-        Preconditions.checkState(null != configurations, "No available rule to load for governance.");
-        return new YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(configurations.getRules());
+        Collection<YamlRuleConfiguration> rules = YamlEngine.unmarshalWithFilter(yamlContent, YamlRuleConfigurationWrap.class).getRules();
+        Preconditions.checkState(!rules.isEmpty(), "No available rule to load for governance.");
+        return new YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(rules);
     }
     
     private GovernanceEvent createRuleConfigurationCachedEvent(final String schemaName, final DataChangedEvent event) {
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/engine/constructor/PackageFilterConstructor.java b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/yaml/config/YamlRuleConfigurationWrap.java
similarity index 56%
rename from shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/engine/constructor/PackageFilterConstructor.java
rename to shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/yaml/config/YamlRuleConfigurationWrap.java
index ab67d62..253a8cb 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/engine/constructor/PackageFilterConstructor.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/main/java/org/apache/shardingsphere/governance/core/yaml/config/YamlRuleConfigurationWrap.java
@@ -15,22 +15,22 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.infra.yaml.engine.constructor;
+package org.apache.shardingsphere.governance.core.yaml.config;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.apache.shardingsphere.infra.yaml.config.YamlConfiguration;
+import org.apache.shardingsphere.infra.yaml.config.YamlRuleConfiguration;
+
+import java.util.Collection;
+import java.util.LinkedList;
 
 /**
- * Package filter constructor for YAML.
+ * Rule configuration warp for YAML.
  */
-public final class PackageFilterConstructor extends ShardingSphereYamlConstructor {
-    
-    public PackageFilterConstructor(final Class<?> rootClass) {
-        super(rootClass);
-    }
+@Getter
+@Setter
+public final class YamlRuleConfigurationWrap implements YamlConfiguration {
     
-    @Override
-    protected Class<?> getClassForName(final String name) throws ClassNotFoundException {
-        if (name != null && name.startsWith("org.apache.shardingsphere.")) {
-            return super.getClassForName(name);
-        }
-        throw new IllegalArgumentException(String.format("Class is not accepted: %s", name));
-    }
+    private Collection<YamlRuleConfiguration> rules = new LinkedList<>();
 }
diff --git a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/config/ConfigCenterTest.java b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/config/ConfigCenterTest.java
index 229ab18..d164940 100644
--- a/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/config/ConfigCenterTest.java
+++ b/shardingsphere-governance/shardingsphere-governance-core/src/test/java/org/apache/shardingsphere/governance/core/config/ConfigCenterTest.java
@@ -25,6 +25,7 @@ import org.apache.shardingsphere.governance.core.event.model.rule.RuleConfigurat
 import org.apache.shardingsphere.governance.core.event.model.rule.SwitchRuleConfigurationEvent;
 import org.apache.shardingsphere.governance.core.event.model.schema.SchemaNamePersistEvent;
 import org.apache.shardingsphere.governance.core.event.model.schema.SchemaPersistEvent;
+import org.apache.shardingsphere.governance.core.yaml.config.YamlRuleConfigurationWrap;
 import org.apache.shardingsphere.governance.core.yaml.config.schema.YamlSchema;
 import org.apache.shardingsphere.governance.core.yaml.swapper.SchemaYamlSwapper;
 import org.apache.shardingsphere.governance.repository.api.ConfigurationRepository;
@@ -290,7 +291,7 @@ public final class ConfigCenterTest {
     }
     
     private Collection<RuleConfiguration> createRuleConfigurations() {
-        return new YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(YamlEngine.unmarshal(readYAML(SHARDING_RULE_YAML), YamlRootRuleConfigurations.class).getRules());
+        return new YamlRuleConfigurationSwapperEngine().swapToRuleConfigurations(YamlEngine.unmarshal(readYAML(SHARDING_RULE_YAML), YamlRuleConfigurationWrap.class).getRules());
     }
     
     private Collection<RuleConfiguration> createReplicaQueryRuleConfiguration() {
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/engine/YamlEngine.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/engine/YamlEngine.java
index f5b2af1..0d5ad62 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/engine/YamlEngine.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/engine/YamlEngine.java
@@ -21,8 +21,7 @@ import com.google.common.base.Strings;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.infra.yaml.config.YamlConfiguration;
-import org.apache.shardingsphere.infra.yaml.engine.constructor.ClassFilterConstructor;
-import org.apache.shardingsphere.infra.yaml.engine.constructor.PackageFilterConstructor;
+import org.apache.shardingsphere.infra.yaml.engine.constructor.ShardingSphereFilterYamlConstructor;
 import org.apache.shardingsphere.infra.yaml.engine.constructor.ShardingSphereYamlConstructor;
 import org.apache.shardingsphere.infra.yaml.engine.representer.ShardingSphereYamlRepresenter;
 import org.yaml.snakeyaml.Yaml;
@@ -34,9 +33,9 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.Map;
-import java.util.Properties;
 
 /**
  * YAML engine.
@@ -93,36 +92,36 @@ public final class YamlEngine {
      * Unmarshal YAML.
      *
      * @param yamlContent YAML content
+     * @param classType class type
      * @param acceptClasses accept classes
-     * @return map from YAML
+     * @param <T> type of class
+     * @return object from YAML
      */
-    public static Map<?, ?> unmarshal(final String yamlContent, final Collection<Class<?>> acceptClasses) {
-        return Strings.isNullOrEmpty(yamlContent) ? new LinkedHashMap<>() : (Map) new Yaml(new ClassFilterConstructor(acceptClasses)).load(yamlContent);
+    public static <T> T unmarshal(final String yamlContent, final Class<T> classType, final Collection<Class<?>> acceptClasses) {
+        return new Yaml(new ShardingSphereFilterYamlConstructor(classType, acceptClasses)).loadAs(yamlContent, classType);
     }
     
     /**
      * Unmarshal YAML.
      *
      * @param yamlContent YAML content
-     * @param classType class type
-     * @param <T> type of class
-     * @param filterPackage Filter non ShardingSphere packages or not
-     * @return object from YAML
+     * @param acceptClasses accept classes
+     * @return map from YAML
      */
-    public static <T> T unmarshal(final String yamlContent, final Class<T> classType, final boolean filterPackage) {
-        return new Yaml(filterPackage ? new PackageFilterConstructor(classType)
-                : new ShardingSphereYamlConstructor(classType)).loadAs(yamlContent, classType);
+    public static Map<?, ?> unmarshal(final String yamlContent, final Collection<Class<?>> acceptClasses) {
+        return Strings.isNullOrEmpty(yamlContent) ? new LinkedHashMap<>() : (Map) new Yaml(new ShardingSphereFilterYamlConstructor(acceptClasses)).load(yamlContent);
     }
     
     /**
-     * Unmarshal properties YAML.
+     * Unmarshal YAML with filter.
      *
      * @param yamlContent YAML content
-     * @param acceptClasses accept classes
-     * @return properties from YAML
+     * @param classType class type
+     * @param <T> type of class
+     * @return object from YAML
      */
-    public static Properties unmarshalProperties(final String yamlContent, final Collection<Class<?>> acceptClasses) {
-        return Strings.isNullOrEmpty(yamlContent) ? new Properties() : new Yaml(new ClassFilterConstructor(acceptClasses)).loadAs(yamlContent, Properties.class);
+    public static <T> T unmarshalWithFilter(final String yamlContent, final Class<T> classType) {
+        return new Yaml(new ShardingSphereFilterYamlConstructor(classType, Collections.singletonList(classType))).loadAs(yamlContent, classType);
     }
     
     /**
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/engine/constructor/ClassFilterConstructor.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/engine/constructor/ShardingSphereFilterYamlConstructor.java
similarity index 72%
rename from shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/engine/constructor/ClassFilterConstructor.java
rename to shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/engine/constructor/ShardingSphereFilterYamlConstructor.java
index 482b940..6654dc8 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/engine/constructor/ClassFilterConstructor.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/yaml/engine/constructor/ShardingSphereFilterYamlConstructor.java
@@ -17,19 +17,25 @@
 
 package org.apache.shardingsphere.infra.yaml.engine.constructor;
 
-import lombok.RequiredArgsConstructor;
-import org.yaml.snakeyaml.constructor.Constructor;
-
 import java.util.Collection;
 
 /**
- * Class filter constructor for YAML load as map.
+ * ShardingSphere filter constructor for YAML.
  */
-@RequiredArgsConstructor
-public final class ClassFilterConstructor extends Constructor {
+public final class ShardingSphereFilterYamlConstructor extends ShardingSphereYamlConstructor {
     
     private final Collection<Class<?>> acceptClasses;
     
+    public ShardingSphereFilterYamlConstructor(final Class<?> rootClass, final Collection<Class<?>> acceptClasses) {
+        super(rootClass);
+        this.acceptClasses = acceptClasses;
+    }
+    
+    public ShardingSphereFilterYamlConstructor(final Collection<Class<?>> acceptClasses) {
+        super(Object.class);
+        this.acceptClasses = acceptClasses;
+    }
+    
     @Override
     protected Class<?> getClassForName(final String name) throws ClassNotFoundException {
         for (Class<? extends Object> each : acceptClasses) {
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/auth/builtin/yaml/config/YamlEngineUserConfigurationTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/auth/builtin/yaml/config/YamlEngineUserConfigurationTest.java
index 11adc45..228b3b8 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/auth/builtin/yaml/config/YamlEngineUserConfigurationTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/auth/builtin/yaml/config/YamlEngineUserConfigurationTest.java
@@ -46,7 +46,7 @@ public final class YamlEngineUserConfigurationTest {
     
     @Test
     public void assertUnmarshalProperties() {
-        Properties actual = YamlEngine.unmarshalProperties("password: pwd\nauthorizedSchemas: db1", Collections.singletonList(Properties.class));
+        Properties actual = YamlEngine.unmarshalWithFilter("password: pwd\nauthorizedSchemas: db1", Properties.class);
         assertThat(actual.getProperty("authorizedSchemas"), is("db1"));
         assertThat(actual.getProperty("password"), is("pwd"));
     }
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/yaml/engine/YamlEngineTest.java b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/yaml/engine/YamlEngineTest.java
index 4539747..7b06dff 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/yaml/engine/YamlEngineTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/yaml/engine/YamlEngineTest.java
@@ -80,7 +80,7 @@ public final class YamlEngineTest {
     
     @Test
     public void assertUnmarshalProperties() {
-        Properties actual = YamlEngine.unmarshalProperties("password: pwd\nauthorizedSchemas: db1", Collections.singletonList(Properties.class));
+        Properties actual = YamlEngine.unmarshalWithFilter("password: pwd\nauthorizedSchemas: db1", Properties.class);
         assertThat(actual.getProperty("authorizedSchemas"), is("db1"));
         assertThat(actual.getProperty("password"), is("pwd"));
     }
@@ -107,7 +107,7 @@ public final class YamlEngineTest {
     }
     
     @Test
-    public void assertUnmarshalWithYamlWithoutFilterPackage() throws IOException {
+    public void assertUnmarshalWithAcceptClass() throws IOException {
         URL url = getClass().getClassLoader().getResource("yaml/fixture-rule-with-props.yaml");
         assertNotNull(url);
         StringBuilder yamlContent = new StringBuilder();
@@ -119,12 +119,17 @@ public final class YamlEngineTest {
                 yamlContent.append(line).append("\n");
             }
         }
-        FixtureYamlPropsRuleConfiguration actual = YamlEngine.unmarshal(yamlContent.toString(), FixtureYamlPropsRuleConfiguration.class, false);
+        Collection<Class<?>> acceptClasses = new LinkedList<>();
+        acceptClasses.add(URLClassLoader.class);
+        acceptClasses.add(URL.class);
+        acceptClasses.add(FixtureYamlPropsRuleConfiguration.class);
+        FixtureYamlPropsRuleConfiguration actual = YamlEngine.unmarshal(yamlContent.toString(), 
+                FixtureYamlPropsRuleConfiguration.class, acceptClasses);
         assertThat(actual.getName(), is("test"));
     }
     
     @Test(expected = ConstructorException.class)
-    public void assertUnmarshalWithYamlWithFilterPackage() throws IOException {
+    public void assertUnmarshalWithoutAcceptClass() throws IOException {
         URL url = getClass().getClassLoader().getResource("yaml/fixture-rule-with-props.yaml");
         assertNotNull(url);
         StringBuilder yamlContent = new StringBuilder();
@@ -136,7 +141,8 @@ public final class YamlEngineTest {
                 yamlContent.append(line).append("\n");
             }
         }
-        FixtureYamlPropsRuleConfiguration actual = YamlEngine.unmarshal(yamlContent.toString(), FixtureYamlPropsRuleConfiguration.class, true);
+        FixtureYamlPropsRuleConfiguration actual = YamlEngine.unmarshalWithFilter(yamlContent.toString(), 
+                FixtureYamlPropsRuleConfiguration.class);
         assertThat(actual.getName(), is("test"));
     }
 }
diff --git a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/resources/conf/reg_center/config_center/data-sources.yaml b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/resources/conf/reg_center/config_center/data-sources.yaml
index 902ecea..9905b80 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/resources/conf/reg_center/config_center/data-sources.yaml
+++ b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/test/resources/conf/reg_center/config_center/data-sources.yaml
@@ -16,7 +16,7 @@
 #
 
 dataSources:
-  ds_0: !!org.apache.shardingsphere.governance.core.yaml.config.YamlDataSourceConfiguration
+  ds_0:
     dataSourceClassName: com.zaxxer.hikari.HikariDataSource
     props:
       jdbcUrl: jdbc:fixturedb:xxx
@@ -28,7 +28,7 @@ dataSources:
       maxPoolSize: 20
       minPoolSize: 10
       readOnly: true
-  ds_1: !!org.apache.shardingsphere.governance.core.yaml.config.YamlDataSourceConfiguration
+  ds_1:
     dataSourceClassName: com.zaxxer.hikari.HikariDataSource
     props:
       jdbcUrl: jdbc:fixturedb:xxx