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

zhaojinchao 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 c97021014ec Merge RepositoryTupleSwapperEngine and 
AutoRepositoryTupleSwapperEngine (#31122)
c97021014ec is described below

commit c97021014ec5779705e548b52a1390b30df9d4d7
Author: Liang Zhang <[email protected]>
AuthorDate: Sun May 5 22:22:20 2024 +0800

    Merge RepositoryTupleSwapperEngine and AutoRepositoryTupleSwapperEngine 
(#31122)
---
 .../config/RepositoryTupleSwapperEngine.java       | 83 ----------------------
 .../database/rule/DatabaseRulePersistService.java  |  9 ++-
 .../config/global/GlobalRulePersistService.java    |  5 +-
 ...gine.java => RepositoryTupleSwapperEngine.java} | 50 ++++++++++++-
 .../test/it/yaml/RepositoryTupleSwapperIT.java     |  8 +--
 5 files changed, 58 insertions(+), 97 deletions(-)

diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/RepositoryTupleSwapperEngine.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/RepositoryTupleSwapperEngine.java
deleted file mode 100644
index 79ba0dec2ea..00000000000
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/RepositoryTupleSwapperEngine.java
+++ /dev/null
@@ -1,83 +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.metadata.persist.service.config;
-
-import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
-import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
-import org.apache.shardingsphere.infra.util.yaml.datanode.RepositoryTuple;
-import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
-import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleEntity;
-import 
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
-import org.apache.shardingsphere.mode.engine.AutoRepositoryTupleSwapperEngine;
-import org.apache.shardingsphere.mode.spi.RepositoryTupleSwapper;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.Objects;
-import java.util.Optional;
-
-/**
- * Repository tuple swapper engine.
- */
-public final class RepositoryTupleSwapperEngine {
-    
-    /**
-     * Swap to rule configurations.
-     *
-     * @param repositoryTuples repository tuples
-     * @return global rule configurations
-     */
-    @SuppressWarnings({"unchecked", "rawtypes"})
-    public Collection<RuleConfiguration> swapToRuleConfigurations(final 
Collection<RepositoryTuple> repositoryTuples) {
-        if (repositoryTuples.isEmpty()) {
-            return Collections.emptyList();
-        }
-        Collection<RuleConfiguration> result = new LinkedList<>();
-        YamlRuleConfigurationSwapperEngine yamlSwapperEngine = new 
YamlRuleConfigurationSwapperEngine();
-        AutoRepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new 
AutoRepositoryTupleSwapperEngine();
-        for (RepositoryTupleSwapper each : 
OrderedSPILoader.getServices(RepositoryTupleSwapper.class)) {
-            repositoryTupleSwapperEngine
-                    .swapToObject(repositoryTuples, 
each.getTypeClass()).ifPresent(optional -> 
result.add(yamlSwapperEngine.swapToRuleConfiguration((YamlRuleConfiguration) 
optional)));
-        }
-        return result;
-    }
-    
-    /**
-     * Swap to rule configuration.
-     *
-     * @param ruleName rule name
-     * @param repositoryTuples repository tuples
-     * @return global rule configuration
-     */
-    @SuppressWarnings({"unchecked", "rawtypes"})
-    public Optional<RuleConfiguration> swapToRuleConfiguration(final String 
ruleName, final Collection<RepositoryTuple> repositoryTuples) {
-        if (repositoryTuples.isEmpty()) {
-            return Optional.empty();
-        }
-        YamlRuleConfigurationSwapperEngine yamlSwapperEngine = new 
YamlRuleConfigurationSwapperEngine();
-        AutoRepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new 
AutoRepositoryTupleSwapperEngine();
-        for (RepositoryTupleSwapper each : 
OrderedSPILoader.getServices(RepositoryTupleSwapper.class)) {
-            if (ruleName.equals(Objects.requireNonNull((RepositoryTupleEntity) 
each.getTypeClass().getAnnotation(RepositoryTupleEntity.class)).value())) {
-                Optional<YamlRuleConfiguration> yamlRuleConfig = 
repositoryTupleSwapperEngine.swapToObject(repositoryTuples, 
each.getTypeClass());
-                return 
yamlRuleConfig.map(yamlSwapperEngine::swapToRuleConfiguration);
-            }
-        }
-        return Optional.empty();
-    }
-}
diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/rule/DatabaseRulePersistService.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/rule/DatabaseRulePersistService.java
index 3f8aabf611c..f1e07cb5072 100644
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/rule/DatabaseRulePersistService.java
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/database/rule/DatabaseRulePersistService.java
@@ -26,9 +26,8 @@ import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.Reposito
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
 import 
org.apache.shardingsphere.metadata.persist.node.metadata.DatabaseRuleMetaDataNode;
 import 
org.apache.shardingsphere.metadata.persist.service.config.RepositoryTuplePersistService;
-import 
org.apache.shardingsphere.metadata.persist.service.config.RepositoryTupleSwapperEngine;
 import 
org.apache.shardingsphere.metadata.persist.service.config.database.DatabaseBasedPersistService;
-import org.apache.shardingsphere.mode.engine.AutoRepositoryTupleSwapperEngine;
+import org.apache.shardingsphere.mode.engine.RepositoryTupleSwapperEngine;
 import org.apache.shardingsphere.mode.spi.PersistRepository;
 
 import java.util.Collection;
@@ -55,7 +54,7 @@ public final class DatabaseRulePersistService implements 
DatabaseBasedPersistSer
     
     @Override
     public void persist(final String databaseName, final 
Collection<RuleConfiguration> configs) {
-        AutoRepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new 
AutoRepositoryTupleSwapperEngine();
+        RepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new 
RepositoryTupleSwapperEngine();
         for (YamlRuleConfiguration each : new 
YamlRuleConfigurationSwapperEngine().swapToYamlRuleConfigurations(configs)) {
             Collection<RepositoryTuple> repositoryTuples = 
repositoryTupleSwapperEngine.swapToRepositoryTuples(each);
             if (!repositoryTuples.isEmpty()) {
@@ -77,7 +76,7 @@ public final class DatabaseRulePersistService implements 
DatabaseBasedPersistSer
     @Override
     public Collection<MetaDataVersion> persistConfigurations(final String 
databaseName, final Collection<RuleConfiguration> configs) {
         Collection<MetaDataVersion> result = new LinkedList<>();
-        AutoRepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new 
AutoRepositoryTupleSwapperEngine();
+        RepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new 
RepositoryTupleSwapperEngine();
         Collection<YamlRuleConfiguration> yamlRuleConfigs = new 
YamlRuleConfigurationSwapperEngine().swapToYamlRuleConfigurations(configs);
         for (YamlRuleConfiguration each : yamlRuleConfigs) {
             Collection<RepositoryTuple> repositoryTuples = 
repositoryTupleSwapperEngine.swapToRepositoryTuples(each);
@@ -105,7 +104,7 @@ public final class DatabaseRulePersistService implements 
DatabaseBasedPersistSer
     @Override
     public Collection<MetaDataVersion> deleteConfigurations(final String 
databaseName, final Collection<RuleConfiguration> configs) {
         Collection<MetaDataVersion> result = new LinkedList<>();
-        AutoRepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new 
AutoRepositoryTupleSwapperEngine();
+        RepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new 
RepositoryTupleSwapperEngine();
         for (YamlRuleConfiguration each : new 
YamlRuleConfigurationSwapperEngine().swapToYamlRuleConfigurations(configs)) {
             Collection<RepositoryTuple> repositoryTuples = 
repositoryTupleSwapperEngine.swapToRepositoryTuples(each);
             if (repositoryTuples.isEmpty()) {
diff --git 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/global/GlobalRulePersistService.java
 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/global/GlobalRulePersistService.java
index 05934f4d728..f45b5308cb9 100644
--- 
a/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/global/GlobalRulePersistService.java
+++ 
b/kernel/metadata/core/src/main/java/org/apache/shardingsphere/metadata/persist/service/config/global/GlobalRulePersistService.java
@@ -25,9 +25,8 @@ import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfigurati
 import 
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
 import org.apache.shardingsphere.metadata.persist.node.GlobalNode;
 import 
org.apache.shardingsphere.metadata.persist.service.config.RepositoryTuplePersistService;
-import 
org.apache.shardingsphere.metadata.persist.service.config.RepositoryTupleSwapperEngine;
 import 
org.apache.shardingsphere.metadata.persist.service.version.MetaDataVersionPersistService;
-import org.apache.shardingsphere.mode.engine.AutoRepositoryTupleSwapperEngine;
+import org.apache.shardingsphere.mode.engine.RepositoryTupleSwapperEngine;
 import org.apache.shardingsphere.mode.spi.PersistRepository;
 
 import java.util.Collection;
@@ -57,7 +56,7 @@ public final class GlobalRulePersistService implements 
GlobalPersistService<Coll
     @Override
     public void persist(final Collection<RuleConfiguration> globalRuleConfigs) 
{
         Collection<MetaDataVersion> metaDataVersions = new LinkedList<>();
-        AutoRepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new 
AutoRepositoryTupleSwapperEngine();
+        RepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new 
RepositoryTupleSwapperEngine();
         for (YamlRuleConfiguration each : new 
YamlRuleConfigurationSwapperEngine().swapToYamlRuleConfigurations(globalRuleConfigs))
 {
             Collection<RepositoryTuple> repositoryTuples = 
repositoryTupleSwapperEngine.swapToRepositoryTuples(each);
             if (!repositoryTuples.isEmpty()) {
diff --git 
a/mode/api/src/main/java/org/apache/shardingsphere/mode/engine/AutoRepositoryTupleSwapperEngine.java
 
b/mode/api/src/main/java/org/apache/shardingsphere/mode/engine/RepositoryTupleSwapperEngine.java
similarity index 84%
rename from 
mode/api/src/main/java/org/apache/shardingsphere/mode/engine/AutoRepositoryTupleSwapperEngine.java
rename to 
mode/api/src/main/java/org/apache/shardingsphere/mode/engine/RepositoryTupleSwapperEngine.java
index e1b6f154b9a..41722242ddb 100644
--- 
a/mode/api/src/main/java/org/apache/shardingsphere/mode/engine/AutoRepositoryTupleSwapperEngine.java
+++ 
b/mode/api/src/main/java/org/apache/shardingsphere/mode/engine/RepositoryTupleSwapperEngine.java
@@ -19,6 +19,8 @@ package org.apache.shardingsphere.mode.engine;
 
 import com.google.common.base.Strings;
 import lombok.SneakyThrows;
+import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
+import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
 import org.apache.shardingsphere.infra.util.yaml.datanode.RepositoryTuple;
@@ -28,8 +30,10 @@ import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.Reposito
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleField;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleKeyNameGenerator;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleType;
+import 
org.apache.shardingsphere.infra.yaml.config.swapper.rule.YamlRuleConfigurationSwapperEngine;
 import org.apache.shardingsphere.mode.path.GlobalNodePath;
 import org.apache.shardingsphere.mode.path.rule.RuleNodePath;
+import org.apache.shardingsphere.mode.spi.RepositoryTupleSwapper;
 import org.apache.shardingsphere.mode.spi.RuleNodePathProvider;
 
 import java.lang.reflect.Field;
@@ -42,13 +46,14 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
 /**
- * Auto repository tuple swapper engine.
+ * Repository tuple swapper engine.
  */
-public final class AutoRepositoryTupleSwapperEngine {
+public final class RepositoryTupleSwapperEngine {
     
     /**
      * Swap to repository tuples.
@@ -233,4 +238,45 @@ public final class AutoRepositoryTupleSwapperEngine {
             field.set(yamlRuleConfig, 
YamlEngine.unmarshal(repositoryTuple.getValue(), field.getType()));
         }
     }
+    
+    /**
+     * Swap to rule configurations.
+     *
+     * @param repositoryTuples repository tuples
+     * @return global rule configurations
+     */
+    @SuppressWarnings({"unchecked", "rawtypes"})
+    public Collection<RuleConfiguration> swapToRuleConfigurations(final 
Collection<RepositoryTuple> repositoryTuples) {
+        if (repositoryTuples.isEmpty()) {
+            return Collections.emptyList();
+        }
+        Collection<RuleConfiguration> result = new LinkedList<>();
+        YamlRuleConfigurationSwapperEngine yamlSwapperEngine = new 
YamlRuleConfigurationSwapperEngine();
+        for (RepositoryTupleSwapper each : 
OrderedSPILoader.getServices(RepositoryTupleSwapper.class)) {
+            swapToObject(repositoryTuples, 
each.getTypeClass()).ifPresent(optional -> 
result.add(yamlSwapperEngine.swapToRuleConfiguration((YamlRuleConfiguration) 
optional)));
+        }
+        return result;
+    }
+    
+    /**
+     * Swap to rule configuration.
+     *
+     * @param ruleTypeName rule type name
+     * @param repositoryTuples repository tuples
+     * @return global rule configuration
+     */
+    @SuppressWarnings({"unchecked", "rawtypes"})
+    public Optional<RuleConfiguration> swapToRuleConfiguration(final String 
ruleTypeName, final Collection<RepositoryTuple> repositoryTuples) {
+        if (repositoryTuples.isEmpty()) {
+            return Optional.empty();
+        }
+        YamlRuleConfigurationSwapperEngine yamlSwapperEngine = new 
YamlRuleConfigurationSwapperEngine();
+        for (RepositoryTupleSwapper each : 
OrderedSPILoader.getServices(RepositoryTupleSwapper.class)) {
+            if 
(ruleTypeName.equals(Objects.requireNonNull((RepositoryTupleEntity) 
each.getTypeClass().getAnnotation(RepositoryTupleEntity.class)).value())) {
+                Optional<YamlRuleConfiguration> yamlRuleConfig = 
swapToObject(repositoryTuples, each.getTypeClass());
+                return 
yamlRuleConfig.map(yamlSwapperEngine::swapToRuleConfiguration);
+            }
+        }
+        return Optional.empty();
+    }
 }
diff --git 
a/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/RepositoryTupleSwapperIT.java
 
b/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/RepositoryTupleSwapperIT.java
index 843684516f9..a97554b4d39 100644
--- 
a/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/RepositoryTupleSwapperIT.java
+++ 
b/test/it/yaml/src/main/java/org/apache/shardingsphere/test/it/yaml/RepositoryTupleSwapperIT.java
@@ -22,7 +22,7 @@ import 
org.apache.shardingsphere.infra.util.yaml.datanode.RepositoryTuple;
 import org.apache.shardingsphere.infra.yaml.config.pojo.YamlRootConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.YamlRuleConfiguration;
 import 
org.apache.shardingsphere.infra.yaml.config.pojo.rule.annotation.RepositoryTupleEntity;
-import org.apache.shardingsphere.mode.engine.AutoRepositoryTupleSwapperEngine;
+import org.apache.shardingsphere.mode.engine.RepositoryTupleSwapperEngine;
 import org.apache.shardingsphere.mode.spi.RepositoryTupleSwapper;
 import org.junit.jupiter.api.Test;
 
@@ -65,7 +65,7 @@ public abstract class RepositoryTupleSwapperIT {
     @Test
     void assertSwapToRepositoryTuples() throws IOException {
         YamlRuleConfiguration yamlRuleConfig = loadYamlRuleConfiguration();
-        assertRepositoryTuples(new ArrayList<>(new 
AutoRepositoryTupleSwapperEngine().swapToRepositoryTuples(yamlRuleConfig)), 
yamlRuleConfig);
+        assertRepositoryTuples(new ArrayList<>(new 
RepositoryTupleSwapperEngine().swapToRepositoryTuples(yamlRuleConfig)), 
yamlRuleConfig);
     }
     
     private YamlRuleConfiguration loadYamlRuleConfiguration() throws 
IOException {
@@ -93,10 +93,10 @@ public abstract class RepositoryTupleSwapperIT {
     @SuppressWarnings("unchecked")
     private String getActualYamlContent() throws IOException {
         YamlRuleConfiguration yamlRuleConfig = loadYamlRuleConfiguration();
-        Collection<RepositoryTuple> repositoryTuples = new 
AutoRepositoryTupleSwapperEngine().swapToRepositoryTuples(yamlRuleConfig).stream()
+        Collection<RepositoryTuple> repositoryTuples = new 
RepositoryTupleSwapperEngine().swapToRepositoryTuples(yamlRuleConfig).stream()
                 .map(each -> new 
RepositoryTuple(getRepositoryTupleKey(Objects.requireNonNull(yamlRuleConfig.getClass().getAnnotation(RepositoryTupleEntity.class)).value(),
 each), each.getValue()))
                 .collect(Collectors.toList());
-        AutoRepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new 
AutoRepositoryTupleSwapperEngine();
+        RepositoryTupleSwapperEngine repositoryTupleSwapperEngine = new 
RepositoryTupleSwapperEngine();
         Optional<YamlRuleConfiguration> actualYamlRuleConfig = 
repositoryTupleSwapperEngine.swapToObject(repositoryTuples, 
swapper.getTypeClass());
         assertTrue(actualYamlRuleConfig.isPresent());
         YamlRootConfiguration yamlRootConfig = new YamlRootConfiguration();

Reply via email to